본문 바로가기
OpenMesh

VertexIterator

by DarkRock 2024. 11. 9.
반응형

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