首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切割3D模型?

切割3D模型?
EN

Stack Overflow用户
提问于 2017-01-05 18:43:02
回答 3查看 2.2K关注 0票数 9

我想分割一个相对于无限平面的三维模型(在WPF中)。我在检查边是否与无限平面相交。如果是的话,我将在交点位置创建一个新的点,所以我得到了几个点,我想在上面生成一个上限,这样模型在切片后就被关闭了。例如,如果这是横截面,结果如下:

注:三角测量并不重要。我只需要三角形。

我还需要如下所示(洞标记为红色):

如果按我想的那样做是不可能的(似乎是这样的),我该怎么做呢?开发人员如何在切片后对对象进行限制?

还有太多的混乱。例如,第一张图片的结果可能是:

我遗漏了什么??

编辑:在做了一些研究之后,我知道我错过了一件事:

现在输入是健壮的,我需要完全相同的输出。我该怎么做??

EN

回答 3

Stack Overflow用户

发布于 2017-01-05 23:29:33

在过去,我用BSP做过这样的事情。

很抱歉说得这么含糊,但这不是一个微不足道的问题!

基本上,您将三角形网格转换为BSP表示,将裁剪平面添加到BSP,然后将其转换回三角形。

票数 5
EN

Stack Overflow用户

发布于 2017-01-11 18:36:11

正如code11说的那样,您已经没有足够的数据来解决这个问题了,这些点是不够的。

而不是剪裁边产生新的点,你应该剪辑整个三角形,这将给你新的边缘。这样,你就会有一堆连通的边,而不是一堆点。

在有洞的例子中,只要修改一下,你就会得到一个3个多边形--这几乎就是你所需要的。然后你只需要计算正确的三角剖分。

查找CSG术语或构造实体几何

编辑:

如果一般的CSG对你来说太慢了,而且你已经剪短了边缘,那么我建议尝试一种‘耳朵剪裁’算法。

下面是一些支持漏洞的描述:https://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf

您也可以尝试一种“扫描线”方法:http://sites-final.uclouvain.be/mema/Poly2Tri/

以及类似的问题,有许多想法:带孔多边形三角剖分

希望能帮上忙。

票数 5
EN

Stack Overflow用户

发布于 2017-01-10 18:02:01

在zwcloud所说的基础上,您的点表示是不明确的。你只是没有足够的点来确定任何凹洞/凹槽的实际位置。

但是,如果您可以通过获得额外的点来解决这个问题(我认为您需要段的中点),那么只需将这些点抛到收缩膜算法中即可。至少你会有一顶帽子。

这些洞更棘手一些。也许您可以只看收缩包计算输出中的排除点,并试图在其中找到其他形状,启发式地倾向于位于新创建多边形的质心附近的点。

附加思想:如果你可以把自己限制在只有一个类似凸孔的凸多边形上,这个问题就会更容易解决。

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

https://stackoverflow.com/questions/41492367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档