向Openmesh网格添加边

时间:2016-07-06 21:41:07

标签: c++ openmesh

刚开始使用OpenMesh,到目前为止我已经能够添加顶点和构图。 我现在有一个问题,就是要了解我应该如何为网格添加边缘。

我知道openMesh使用的半边数据结构,但我真的不明白我应该如何添加边缘..

代码:

说明:

    Variables in header:
    vector<OpenMesh::PolyMesh_ArrayKernelT<OpenMeshExt::MyOwnTraits>::VertexHandle> vHandlers;
    OpenMesh::PolyMesh_ArrayKernelT<OpenMeshExt::MyOwnTraits> myMesh;

在cpp:

typedef OpenMesh::PolyMesh_ArrayKernelT<OpenMeshExt::CustomTraits> OpnMesh;
typedef OpnMesh::VertexHandle vertexHandle;

void Mesh::addVertexFromPoint(Point& position){
    float x = static_cast <float> (position.x());
    float y = static_cast <float> (position.y());
    vertexHandle vhand= myMesh.add_vertex(OpnMesh::Point(x,y,.0f));
    vHandlers.push_back(vhand);
}

void Mesh::makeFace(){
    if(vHandlers.size()<=2){
        return;
    }
    myMesh.add_face(vHandlers);
//Add edges between eg vertex 0 and 1 in vHandlers (vector with VertexHandlers) 
}

已搜索过文档,但无法说我找到了答案..

1 个答案:

答案 0 :(得分:2)

您无需/您无法明确创建或删除边缘。无论何时修改网格,例如通过使用add_face创建一个面,网格将创建(或删除)必要的(半)边。此外,它将调整顶点,边和面之间的链接以反映网格的拓扑结构。