使用vcglib示例时断言失败

时间:2012-11-27 14:58:27

标签: c++ vcg

我想使用vcglib基于点云重建曲面。但每当我运行我的程序时(也使用提供的示例,例如/ vcglib / apps / sample / trimesh_allocate),我得到以下输出:

  

trimesh_allocate:../../../vcg / simplex /vertex / component.h:50:int   vcg :: vertex :: EmptyCore :: cFlags()const [with TT = MyUsedTypes]:   断言“0”失败。

任何想法如何解决这个问题?我在Ubuntu 12.04上使用QT-Creator 2.4.1。我做net得到任何编译器或链接器错误。

非常感谢,Mirco

1 个答案:

答案 0 :(得分: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是您需要为顶点和面添加的trimesh_allocate.cpp。这可以从你有关cFlags()的错误中看出。

此外,在// 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); } }*/ 示例中,您需要注释掉以下部分:

{{1}}