3

我想在 C++ 中使用 TetGen 库加载网格文件,但我不知道正确的过程或在我的代码中激活哪些开关以显示受约束的 Delaunay网格。

我尝试了一些具有默认行为的恐龙网格(来自 rocq.inria.fr)的基本加载:

tetgenio in, out;
in.firstnumber = 0;
in.load_medit("TetGen\\parasaur1_cut.mesh",0);
tetgenbehavior *b = new tetgenbehavior();
tetrahedralize(b, &in, &out);

形状应该是这样的:

在此处输入图像描述

使用TetView时,它可以完美运行。但是使用我的代码,我得到了以下结果:

恐龙网格结果

我尝试激活 Delaunay 约束的分段线性复形 (plc)属性:

b->plc = 1;

我只从网格中得到了几个部分:

恐龙网的更多部分

也许还有更多部分,但我不知道如何获得它们。

4

1 回答 1

1

这看起来很像您可能将四边形网格加载为三角形网格,反之亦然。有一点很清楚,您正在从文件中获取浮点数,因为对象的边界看起来大致正确。确保您正在加载严格的三角形或四边形网格。如果它是一种可以加载到 Blender 中的格式,我建议您加载它,对其进行三角测量,然后重新导出它,以防万一 poly 进入其中。

另一种可能性是一个错误的索引。你确定你得到每个三角形/四边形的顺序正确吗?也就是说 - 确保您正在加载三角形 123 123 123 而不是 1 231 231 231。

另一种可能性,如果此格式索引所有顶点,然后列出顶点的索引,您可能会正确加载所有顶点,然后将三角形/四边形的索引弄乱,如前面所述两段。我认为是这种情况,因为看起来您的所有观点都是正确的,但是连接它们的线却是错误的。

于 2015-09-29T19:34:58.737 回答