VertexIterator 사용법
VertexIterator는 OpenMesh에서 메쉬의 모든 Vertex(정점)를 순회하는 데 사용됩니다. VertexIterator는 메쉬에 포함된 각 Vertex를 하나씩 방문하며, 정점의 정보를 읽거나 수정할 수 있게 해 줍니다. 이를 통해 메쉬의 모든 Vertex에 대해 특정 작업을 수행하거나, 필요한 정보를 수집할 수 있습니다.
OpenMesh에서는 MyMesh::VertexIter를 통해 VertexIterator를 사용할 수 있습니다. 이 Iterator를 사용하면 메쉬에 포함된 모든 Vertex를 처음부터 끝까지 순회하면서 접근할 수 있습니다. 예를 들어, 메쉬의 모든 Vertex 위치를 출력하거나 특정 속성을 수정할 때 유용하게 활용됩니다.
C++ 예제 코드
다음은 OpenMesh에서 VertexIterator를 사용해 메쉬의 모든 Vertex를 순회하면서 각 Vertex의 좌표를 출력하는 간단한 예제입니다.
typedef OpenMesh::TriMesh_ArrayKernelT<> MyMesh;
int main()
{
MyMesh mesh;
if (!OpenMesh::IO::read_mesh(mesh, "example.obj"))
{
std::cerr << "Error: Cannot read mesh file." << std::endl;
return 1;
}
// VertexIterator를 이용해 메쉬의 모든 Vertex를 순회
for (MyMesh::VertexIter v_it = mesh.vertices_begin(); v_it != mesh.vertices_end(); ++v_it)
{
MyMesh::Point position = mesh.point(*v_it);
std::cout << "Vertex Position: " << position[0] << ", " << position[1] << ", " << position[2] << std::endl;
}
return 0;
}
코드 설명
1. mesh.vertices_begin() 함수는 메쉬의 첫 번째 Vertex를 가리키는 VertexIterator를 반환합니다.
2. mesh.vertices_end() 함수는 마지막 Vertex 다음을 가리키는 VertexIterator를 반환합니다. 이 위치에 도달하면 순회가 끝납니다.
3. for 루프에서 VertexIterator를 이용해 각 Vertex를 방문하며, mesh.point(*v_it)를 통해 현재 Vertex의 위치를 가져올 수 있습니다. 위치는 MyMesh::Point 형식으로 저장되어 있으며, 이는 3D 좌표 (x, y, z)를 포함합니다.
4. 각 Vertex의 위치를 콘솔에 출력하여 확인할 수 있습니다.
이렇게 VertexIterator를 사용하면 OpenMesh 메쉬 내의 모든 Vertex에 접근하여 필요한 작업을 수행할 수 있습니다.
'OpenMesh' 카테고리의 다른 글
Collapsing Edges (0) | 2024.11.11 |
---|---|
EdgeIterator (1) | 2024.11.10 |
Triangle Mesh 기본 구조 (0) | 2024.11.08 |
OpenMesh Split (0) | 2024.10.24 |
Openmesh Iterators(Mesh Navigation) (0) | 2023.12.11 |