1

点群に基づいてサーフェスを再構築するために 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 を使用しています。コンパイラまたはリンカのエラーが発生します。

前もって感謝します、ミルコ

4

1 に答える 1

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);
   }
}*/
于 2013-09-04T06:34:07.893 に答える