使用vcglib例子时断言失败(Assertion Failure when using vcgli

2019-10-17 10:20发布

我想用vcglib重建基于点云的表面。 但每当我运行我的程序(也与提供的例子,例如/ vcglib /应用/样品/ trimesh_allocate)我得到以下的输出:

trimesh_allocate:../../../vcg/simplex/vertex/component.h:50:INT :: VCG顶点:: EmptyCore :: CFLAGS()const的[与TT = MyUsedTypes]:断言'0' 失败。

任何想法如何解决这个问题? 我使用在Ubuntu 12.04 QT造物主2.4.1。 我不净得到任何编译或链接错误。

非常感谢提前,的Mirco

Answer 1:

为了摆脱这种错误的,一般要改变顶点,边,面网格定义的定义。 我能得到这个例子中使用的工作:

class MyFace;
class MyVertex;

struct MyUsedTypes : public vcg::UsedTypes< vcg::Use<MyVertex>::AsVertexType,
vcg::Use<MyFace>::AsFaceType>{};

class MyVertex  : public vcg::Vertex< MyUsedTypes, vcg::vertex::Coord3f,  vcg::vertex::Normal3f, vcg::vertex::VFAdj, vcg::vertex::BitFlags, vcg::vertex::Mark>{};
class MyFace    : public vcg::Face  < MyUsedTypes, vcg::face::VertexRef,   vcg::face::Normal3f, vcg::face::FFAdj, vcg::face::Mark, vcg::face::VFAdj,  vcg::face::BitFlags > {};
class MyMesh    : public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace> > {};

我相信vcg::xx::BitFlags是你需要添加两个顶点和脸的人。 这可以从错误中可以看出你有大约CFLAGS()。

此外,在本trimesh_allocate.cpp例子,你需要注释掉以下部分:

// WRONG WAY of iterating: FN() != m.face.size() if there are deleted elements
/*for(int i=0;i<m.FN();++i)
{
 if(!fi->IsD())
   {
    MyMesh::CoordType b = vcg::Barycenter(*fi);
   }
}*/


文章来源: Assertion Failure when using vcglib examples
标签: c++ vcg