Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >三角剖分2d形状得到STL

三角剖分2d形状得到STL
EN

Stack Overflow用户
提问于 2020-04-28 04:52:49
回答 2查看 841关注 0票数 1

我正在生成python中的2D二进制形状。在那之后,我希望他们被转换为一个3D STL文件进行3D打印。这种作品,但只有“简单”的形状,如三角形和广场。对于更复杂的形状,我得到以下形状:

因此,我们可以看到,它看起来有点像二进制图像,但与更多的“工件”。我用:

  • delaunay三角剖分法(取自枕木)
  • numpy-stl用于生成stl文件(需要顶点+生成面,这就是三角剖分的原因)。
  • numpy保存/加载我的形状

这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
from scipy.spatial import Delaunay
from stl import mesh

from numpy import loadtxt

def load_shape(id):
    return loadtxt("../shapes/shape_{}.shape".format(id))

def extract_vertices(shape):
    arr = []
    for ix, x in enumerate(shape):
        for iy, y in enumerate(x):
            if y == 0:
                arr.append([ix, iy])
    return np.array(arr)

def vertices_2d_to_3d(vertices, z=10):
    x, y = vertices.shape
    new = np.zeros((x*2, y + 1))
    for i, v in enumerate(vertices):
        new[i] = [v[0], v[1], 0]
        new[x+i] = [v[0], v[1], z]
    return new

shape = load_shape(4)
vertices = extract_vertices(shape)
vertices = vertices_2d_to_3d(vertices, 10)

tri = Delaunay(vertices)
faces = tri.convex_hull

ms = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype))
for i, f in enumerate(faces):
    for j in range(3):
        ms.vectors[i][j] = vertices[f[j],:]

ms.save('shape.stl')

有人能给我一些提示吗?如何摆脱这些“人工产物”,告诉delaunay三角剖分不要将不处于形状的顶点连接起来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-30 04:21:34

Delaunay的一个特点是它总是从一组样本点产生一个凸多边形。因此,如果您使用Delaunay,您将需要某种方式来了解哪些三角形在您感兴趣的区域内,哪些是外部的。

为了达到这个目的,你可能会考虑的一件事是受约束的Delaunay三角剖分(CDT)。有些Delaunay实现允许您根据非自插入多边形来指定约束,这些多边形可用于指定“内部三角形”和“外部三角形”。我不确定not是否支持这一点,但是它的实现一般都很好,所以如果它支持的话,我不会感到惊讶。

另外,你可能会发现德拉奈在你的多边形中产生了很多“瘦”三角形。因为你正在做3D打印,你可能想找到一些方法来修复这些。你可以通过在网格中插入人工点(Steiner点)来做到这一点。这些可以从常规网格中任意获取,或者,如果您有一个支持它的API,您可以将某种Delaunay细化应用到您的三角剖分中。

除此之外,我想知道你想要解决的问题是不是真的不是构造一个Delaunay,而是三角剖分一个多边形。在前面的答案中引用的维基百科的文章应该给你一个开始。

票数 3
EN

Stack Overflow用户

发布于 2020-04-28 07:24:36

您将不得不编辑或预处理的2D形状,以便您的三角剖分工作。请参阅维基百科关于多边形三角剖分的网页,并阅读关于单调和非单调多边形的章节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61480649

复制
相关文章
OpenCV系列(18)|三角剖分
应用:人脸检测的核心技术 代码: #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> #include <iostream> #include <fstream> using namespace cv; using namespace std; static void help() { cout << "\nThis program demonstrates iterative construction of\n"
用户9831583
2022/06/16
6350
OpenCV系列(18)|三角剖分
CGAL功能大纲
Computational Geometry Algorithms Library,CGAL,计算几何算法库。使用C++语言编写的,提供高效、可控的算法库。广泛应用于计算几何相关领域,如地理信息系统、计算机图形学、计算机辅助设计、信息可视化系统、生物医学等。
用户3519280
2023/07/08
1.3K0
OpenCV人脸检测与三角剖分绘制
三角剖分最早是俄国数学家Delaunay提出来的,而他获得博士学位时候的老师是Georgy Voronoy,是维诺图概念的提出者,而且维诺是马尔可夫的学生,就是很难懂的马尔可夫链的鼻祖。所以三角剖分又常常被冠以Delaunay Triangulation。其基本思想就是对任意多的点,分割为多个三角形,任意一个三角形的外接圆都不应该包含其它顶点,如果包含则继续寻找组合,直到所有点满足此条件,最终得到的多个三角形就是三角剖分,三角剖分在人脸特征迁移、人脸合成与交换、图像合成与分割等方面应用广泛,最常见的就是通过三角剖分实现合成显示如下:
OpenCV学堂
2018/07/26
2.8K0
OpenCV人脸检测与三角剖分绘制
Voronoi多边形和Delaunay三角剖分
今天对计算几何中的Voronoi多边形(即泰森多边形)和Delaunay三角剖分进行了学习,整理资料如下(摘自百度百科)。
卡尔曼和玻尔兹曼谁曼
2019/01/22
2.5K0
Voronoi多边形和Delaunay三角剖分
切呀切披萨——最优三角剖分
有一块多边形的披萨,上面有各种各样的好吃的,我们希望沿着两个不相邻的两个顶点切成小三角形,尽可能少的切碎披萨上面的蔬菜、肉片。
rainchxy
2018/09/13
1.6K0
切呀切披萨——最优三角剖分
CGAL的安装与使用
CGAL (Computational Geometry Algorithms Library)
用户3519280
2023/07/08
6770
树链剖分详解
前言 树链剖分是什么? 树链剖分,说白了就是一种让你代码不得不强行增加1k的数据结构-dms 个人理解:+1:joy: 有什么用? 证明出题人非常毒瘤 可以非常友(bao)好(li)的解决一些树上问题:grimacing: (友情提示:学树链剖分之前请先掌握线段树) 核心思想 树链剖分的思想比较神奇 它的思想是:把一棵树拆成若干个不相交的链,然后用一些数据结构去维护这些链 那么问题来了  如何把树拆成链? 首先明确一些定义 重儿子:该节点的子树中,节点个数最多的子树的根节点(也就是和该节点相连的点)
attack
2018/04/11
1K0
树链剖分详解
【UE4】通过顶点数组自动剖分三角网格的算法
 Build.cs中增加模块 // Fill out your copyright notice in the Description page of Project Settings. using UnrealBuildTool; public class GeoJsonRead : ModuleRules { public GeoJsonRead(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseE
Ning@
2021/11/10
7200
轻重链剖分练习笔记
轻重链剖分,常被称为树链剖分,是一种常用的维护树上信息的算法。 它以子树大小为依据,将节点划分为重儿子与轻儿子,从而使整棵树被剖分成若干条重链。 每个轻儿子都是一条重链的开始。一个节点只在一条重链上。 从树上任意一点到根节点,最多经过 \log n 条连续的链。 利用这样的特殊性质,可以解决许多问题。 由于是练习笔记,本文不再赘述概念有关内容。
Clouder0
2022/09/23
3950
光怪陆离的世界之Delaunay三角剖分和Voronoi图
缘起 封面图是不是很酷炫? 该图的核心算法就是 Delaunay三角剖分. 这种低多边形的成像效果在现代游戏设计中越来越被喜欢,其中的低多边形都是由三角形组成的。于是我们来学习一下. 分析 首先,先来
ACM算法日常
2020/09/18
4.2K0
hover 背后的数学和图形学
前端开发中,hover是最常见的鼠标操作行为之一,用起来也很方便,CSS直接提供:hover伪类,js可以通过mouseover+mouseout事件模拟,甚至一些第三方库/框架直接提供了 hover API ,比如 jQuery 的 hover() 函数。大部分前端开发者在使用这些很方便的方法时,可能并没有思考过 hover 背后的实现原理。
寒月十八
2021/11/19
1.4K0
LeetCode 1039. 多边形三角剖分的最低得分(区间DP)
给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]。
Michael阿明
2021/02/19
5590
演示在用户定义的三角形网格上进行高分辨率三角剖分。
import matplotlib.tri as tri import matplotlib.pyplot as plt import matplotlib.cm as cm import numpy as np #----------------------------------------------------------------------------- # Analytical test function #---------------------------------------
裴来凡
2022/05/28
2510
演示在用户定义的三角形网格上进行高分辨率三角剖分。
长链剖分入坑记
常见的树剖有两种——重链剖分和长链剖分. 它们的区别在于对于preferred son (偏向的孩子节点)的选择标准不同.
ACM算法日常
2020/03/26
4680
长链剖分入坑记
树链剖分 算法学习
树你应该懂的吧o( ̄︶ ̄)o 学习树链剖分之前需要先学习:dfs、线段树(当然大佬们用树状数组代替线段树也可以O(∩_∩)O),据说一名普及+的oier应该都会呀
yzxoi
2022/09/19
3530
树链剖分 算法学习
密铺平面:基于2,φ,ψ,χ,ρ 的12个新的代入镶嵌
本文所涉及的新功能即将在Wolfram语言第12版中发布。可复制的输入表达式和可下载的笔记本将在新版本发布后为您提供。
WolframChina
2019/04/30
1.6K0
密铺平面:基于2,φ,ψ,χ,ρ 的12个新的代入镶嵌
每日算法系列【LeetCode 1039】多边形三角剖分的最低得分
给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]。
godweiyang
2020/03/24
5660
每日算法系列【LeetCode 1039】多边形三角剖分的最低得分
hdu3966_树链剖分
最近在强化知识点深度,发现树链剖分不是很会写了。 回顾一下修改操作: 若两个点在同一条链上,则直接修改这段区间。 若不在同一条链上,修改深度较大的点到其链顶端的区间,同时将这个点变为他所在链顶端的父亲,循环操作直到这两个点在同一条链上,就可以用上一种方法了。 没有用LCA写是因为以前被坑过,不但没有这种方法好写,效率也不太让人满意。 主要是对第二种情况如何写有所遗忘,写道模版再给自己提个醒。 #include<iostream> #include<cstdio> #include<cstdlib> #inc
triplebee
2018/01/12
5200
【深度估计】开源 | 基于学习三角剖分和稀疏点加密的深度估计,性能SOTA!
多视点立体MVS是主动深度探测精度与单目深度估计实用性之间的黄金分割点。采用3D卷积神经网络(CNNs)的基于cost volume的方法大大提高了MVS系统的精度。然而,这种准确性产生了很高的计算成本,也阻碍了实际的使用。与cost volume方法不同,我们提出了一种有效的深度估计方法,首先检测和评估兴趣点的描述子,然后学习匹配和三角化一个小的兴趣点集,最后使用神经网络对这个稀疏的3D点集进行加密。一个端到端的网络在深度学习框架内有效地执行了上述三个步骤,并通过中间的2D图像和3D几何监督和深度监督进行训练。
CNNer
2021/05/11
5390
【深度估计】开源 | 基于学习三角剖分和稀疏点加密的深度估计,性能SOTA!
点击加载更多

相似问题

c++:CGAL 2D delauny三角剖分:凹面形状

33

实现凹面形状的三角剖分算法

122

加权Delaunay三角剖分中的Alpha形状

20

2D多边形三角剖分

20

位置三角剖分

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文