刚从OpenMesh开始,到目前为止,我已经能够添加顶点并制作面孔。 我现在在理解如何将边缘添加到网格时遇到问题。

我知道openMesh使用的Half-edge数据结构,但是我无法真正理解应该如何添加Edge。

代码:

定义:

    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)
}

搜索了文档,但不能说我找到了答案。

最佳答案

您不必/您不能显式创建或删除边。每当您修改网格时,例如通过使用add_face创建面,网格将创建(或删除)必要的(半边)边。同样,它将调整顶点,边和面之间的链接以反射(reflect)网格的拓 flutter 。

10-05 22:59