반응형
Flipping Edges
OpenMesh의 Edge Flip은 아래 그림과 같이 edge를 뒤집는 기능을 합니다. 이 기능은 메쉬의 구조를 변경하는데 유용하면 특히 메쉬를 remeshing 하거나 최적화할 때 자주 사용됩니다.
예제코드
TriMesh mesh;
TriMesh::VertexHandle vhandle[4];
vhandle[0] = mesh.add_vertex(TriMesh::Point(0, 0, 0));
vhandle[1] = mesh.add_vertex(TriMesh::Point(0, 1, 0));
vhandle[2] = mesh.add_vertex(TriMesh::Point(1, 1, 0));
vhandle[3] = mesh.add_vertex(TriMesh::Point(1, 0, 0));
std::vector<TriMesh::VertexHandle> face_vhandles;
face_vhandles.push_back(vhandle[2]);
face_vhandles.push_back(vhandle[1]);
face_vhandles.push_back(vhandle[0]);
mesh.add_face(face_vhandles);
face_vhandles.clear();
face_vhandles.push_back(vhandle[2]);
face_vhandles.push_back(vhandle[0]);
face_vhandles.push_back(vhandle[3]);
mesh.add_face(face_vhandles);
for (TriMesh::EdgeIter it = mesh.edges_begin(); it != mesh.edges_end(); ++it)
{
if (!mesh.is_boundary(*it))
{
mesh.flip(*it);
}
}
엣지 플립은 메쉬의 삼각형 형태를 최적화하고 균일하게 조정하는 기능입니다. 메쉬 품질 개선, 리메싱, 렌더링, 스무딩 등에서 중요한 역할을 하며, 이를 통해 메쉬가 보다 안정적이고 효율적으로 사용할 수 있는 형태로 유지됩니다.
Edge를 순회하는 코드 설명은 아래 글을 참고하세요.
2024.11.10 - [OpenMesh] - EdgeIterator
반응형
'OpenMesh' 카테고리의 다른 글
HalfedgeIterator (0) | 2024.11.14 |
---|---|
FaceIterator (0) | 2024.11.13 |
Collapsing Edges (0) | 2024.11.11 |
EdgeIterator (1) | 2024.11.10 |
VertexIterator (0) | 2024.11.09 |