C++ 通过vcglib导入三维网格模型(.obj)会导致断言0失败问题

C++ 通过vcglib导入三维网格模型(.obj)会导致断言0失败问题,c++,3d,meshlab,wavefront,vcg,C++,3d,Meshlab,Wavefront,Vcg,我正试图通过VCG库导入OBJ格式的3D网格文件,代码如下 vcg::tri::io::Importer<MyMesh>::Open(vcgMesh, path) vcg::tri::io::Importer::Open(vcgMesh,path) 几乎所有/wrap/io_trimesh/import.h标头支持的3D网格格式都工作正常。(STL、PLY、甚至OBJ!) 但只有某些特定的OBJ文件会导致错误,并使应用程序完全崩溃 例如,我从这个链接得到的OBJ文件 这是我得到

我正试图通过VCG库导入OBJ格式的3D网格文件,代码如下

vcg::tri::io::Importer<MyMesh>::Open(vcgMesh, path)
vcg::tri::io::Importer::Open(vcgMesh,path)
几乎所有/wrap/io_trimesh/import.h标头支持的3D网格格式都工作正常。(STL、PLY、甚至OBJ!)
但只有某些特定的OBJ文件会导致错误,并使应用程序完全崩溃
例如,我从这个链接得到的OBJ文件

这是我得到的错误消息

/vcg/simplex/edge/component.h:46: typename T::VertexType*& vcg::edge::EmptyCore<T>::V(int) [with T = MyUsedTypes; typename T::VertexType = MyVertex]: Assertion `0' failed [1]    24708 abort (core dumped)
/vcg/simplex/edge/component.h:46:typename T::VertexType*&vcg::edge::EmptyCore::V(int)[使用T=MyUsedTypes;typename T::VertexType=MyVertex]:断言“0”失败[1]24708中止(内核转储)
问题是,我甚至无法尝试捕捉错误。我找不到任何解决方案来防止我的应用程序从中崩溃
我试图在blender和MeshLab中打开该文件。这些应用程序导入OBJ文件没有任何问题。
这里有一些相关的问题,但没有一个解决方案能解决这个问题

有没有办法解决这个问题?即使这是vglib本身的问题并且很难修复,但如果我能够捕获错误并防止我的应用程序崩溃,那就太好了。请帮忙! 先谢谢你

我试图在blender和MeshLab中打开该文件。这些应用程序 导入OBJ文件时没有任何问题

真的吗?您的obj文件无效,meshlab或blender不可能处理带有以下行的.obj文件:

vt 0.349751 0.599421
vt 0.351053 0.607569
vt 0.369663 0.673393
vt nan nan
vt nan nan
vt nan nan
此外,某些纹理具有绝对路径,如

map_Kd /C:/Documents and Settings/Jean-Marie/Mes documents/....

我不知道内部文件结构是否正确,但blender和meshlab可以毫无问题地打开,即使没有纹理或材质文件。我想知道你是否用我上面链接的正确模型进行了测试。请查看此屏幕截图,您说“这些应用程序导入OBJ文件没有任何问题”,但我在meshlab 2016.12上进行了测试,在meshlab因“分段错误”崩溃之前,有12个错误抱怨纹理文件名。在控制台中,我有更多类型的错误“警告有7个顶点的退化多边形被三角化为0个三角形”,你检查了我附加的屏幕截图了吗?我不确定我们谈论的是同一型号。请检查您下载的型号的名称。我的是“pfalzD3a.obj”,它肯定可以在搅拌机和网状实验室打开,正如我在上面所附的一样是的,它是。它有几个问题可能会在某些装载机上产生错误。网格具有无法进行三角剖分的退化多边形,并且具有具有Nan(不是数字)值的纹理坐标。一些读者可能会发现并忽略这些问题,但其他人(如VCG)则选择严格,不忽略这些问题。如果blender或旧版本的meshlab可以加载模型,只需将其保存在一个新文件中,并尝试使用现代VCGOh打开该副本,我现在就得到了,非常感谢。问题是,我正在用VCG构建一些应用程序,所以当出现这样的异常时,应用程序应该捕获异常,不应该关闭。我想这个实现会有点困难。您知道如何捕获此异常并防止应用程序崩溃吗?