我想在C++中使用TetGen库加载一个网格文件,但我不知道正确的过程,也不知道在我的代码中要激活什么开关才能显示Constrained Delaunay网格。
我尝试了一些使用默认行为加载a dinosaur mesh (from 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约束的Piecewise Linear Complex (plc)属性:
b->plc = 1;我只从网格中得到了几个部分:

也许有更多的部分,但我不知道如何获得它们。
发布于 2015-09-30 03:34:59
这看起来很像是将四边形网格加载为三角形网格,反之亦然。有一件事是明确的,你将从文件中获得浮点数,因为对象的边界看起来大致正确。确保加载的是严格的三角形或基于四边形的网格。如果它是一种可以加载到Blender中的格式,我建议您加载它,对它进行三角测量,然后重新导出它,以防一个多边形偷偷地进入其中。
另一种可能是索引被一个错误关闭。您确定每个三角形/四边形的顺序正确吗?也就是说,确保加载的是三角形123 123 123,而不是1231 231 231。
另一种可能是,如果这种格式索引所有顶点,然后列出顶点的索引,您可能会正确加载所有顶点,然后获得混乱的三角形/四边形的索引,如前两段所述。我认为情况就是这样,因为看起来你所有的观点都是正确的,但连接它们的线条却大错特错。
https://stackoverflow.com/questions/30160330
复制相似问题