在VCG中精炼网格

时间:2011-05-06 03:46:29

标签: c++ mesh vertex vcg

有人在VCG library进行了三角网精炼吗?我会将其添加为标签,但我还没有足够高的声誉。每次我包含任何精炼库时,我都会遇到以下错误:

../../../addons/ofxVCGLib/vcglib/vcg/complex/trimesh/refine.h:880:0 
../../../addons/ofxVCGLib/vcglib/vcg/complex/trimesh/refine.h:880: error: expected 
unqualified-id before numeric constant

就在这一行:

typename TRIMESH_TYPE::FacePointer FF0;

包含的定义(借用巨型c / p)看起来像这样:

template<class TRIMESH_TYPE, class CenterPoint>
void TriSplit(typename TRIMESH_TYPE::FacePointer f,
                            typename TRIMESH_TYPE::FacePointer f1,typename TRIMESH_TYPE::FacePointer f2,
                            typename TRIMESH_TYPE::VertexPointer vB, CenterPoint    Center)
{

我的顶点,脸,&amp;网格声明如下:

class innerMeshFace:public Face<myTypes, face::FFAdj, face::Mark, face::VertexRef, face::BitFlags, face::Normal3f, face::InfoOcf> {

};

class myVertex: 
public Vertex<myTypes, vertex::Coord3f, vertex::BitFlags, vertex::TexCoord2f, vertex::Normal3f, vertex::Mark, vertex::Color4b, vertex::VFAdj, vertex::InfoOcf>  
{}

class myMesh:public tri::TriMesh< vector<myVertex>, vector<innerMeshFace> > { }

所以我不确定那里有什么东西让我误解了。我在我的代码中的其他地方使用了myMesh :: FacePointer,我认为模板堆中有一些我缺少的东西。在我尝试包含refine.h之前,这一切都正常(即编译并执行它应该的操作)。任何有VCG经验的人都会非常感激。

2 个答案:

答案 0 :(得分:1)

在与创作者交谈之后,事实证明这是GCC如何编译库的特定部分的问题。我不明白细节,但LLVM很好,GCC不是。它在Linux上工作正常但是当我在XCode中使用它时,我遇到了问题。这是他们不会很快更新的东西,所以看起来目前VCG网格细化不适用于GCC 4.2。

答案 1 :(得分:1)

我在MingW GCC-3.4.5 http://pastebin.com/uYnCepEY

下得到了一个优化工作的例子(终于!)