切片3D模型?

Non*_*one 9 c# 3d unity-game-engine

我想相对于无限平面切片3D模型(在WPF中).我正在检查边缘是否与无限平面相交.如果为true,我将在交叉点位置创建一个新点,所以我得到了几个我想要生成上限的点,以便在切片后关闭模型.例如,如果这是横截面,结果如下: 示例结果 注意:三角测量并不重要.我只需要三角形.

我还需要按如下方式检测孔(孔标记为红色): 带孔的示例结果

如果不可能按照我的想法(似乎如此)这样做,我该怎么做呢?开发人员如何在切片后封顶对象?

还有太多的困惑.例如,第一张图片的结果可能是: 混乱 我错过了什么?


编辑: 经过一些研究,我知道一件事我不知道: 在此输入图像描述

输入现在很稳健,我需要完全相同的输出.我该如何实现?

Leo*_*kus 5

在过去,我使用BSP做过这种事情.

抱歉这么模糊,但这不是一个小问题!

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


kol*_*nda 5

正如code11所说,你已经有太少的数据无法解决这个问题了,这些要点还不够.

您应该剪切整个三角形,而不是剪裁边缘以产生新的点,这将为您提供新的边缘.通过这种方式,您可以获得一堆连接边,而不是一堆点.

在你的带洞的例子中,通过这个单一修改,你将得到一个3个多边形 - 这几乎就是你所需要的.然后,您将只需要计算正确的三角测量.

寻找CSG术语或构造实体几何.

编辑:

如果通用CSG对你来说太慢而且你已经剪裁了边缘,那么我建议尝试一种"耳剪切"算法.

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

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

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

我希望它有所帮助.