본문 바로가기
OpenMesh

FaceIterator

by DarkRock 2024. 11. 13.
반응형

FaceIterator 사용법

FaceIterator는 OpenMesh에서 메쉬의 모든 Face(면)를 순회하는 데 사용됩니다. 이 이터레이터를 사용하면 메쉬의 모든 Face에 접근할 수 있으며, 각 Face의 정보를 읽거나 수정할 수 있습니다. 이를 통해 메쉬의 표면에 대해 특정 작업을 수행하거나, 각 Face의 속성을 수집하는 작업을 효율적으로 처리할 수 있습니다.

 

 


C++ 예제 코드

다음은 OpenMesh에서 FaceIterator를 사용해 메쉬의 모든 Face를 순회하면서 각 Face의 Vertex 정보를 출력하는 간단한 예제입니다.

	MyMesh mesh;	
	if (!OpenMesh::IO::read_mesh(mesh, "example.obj")) 
	{
		std::cerr << "Error: Cannot read mesh file." << std::endl;
		return 1;
	}	
	for (MyMesh::FaceIter f_it = mesh.faces_begin(); f_it != mesh.faces_end(); ++f_it) 
	{			
		for (MyMesh::FaceVertexIter fv_it = mesh.fv_iter(*f_it); fv_it.is_valid(); ++fv_it) 
		{
			MyMesh::Point pos = mesh.point(*fv_it);
			std::cout << "  Vertex ID: " << fv_it->idx()
				<< " Position: (" << pos[0] << ", " << pos[1] << ", " << pos[2] << ")" << std::endl;
		}
	}
	return 0;



 

코드 설명

- mesh.faces_begin()과 mesh.faces_end()를 사용해 메쉬의 첫 번째 Face부터 마지막 Face까지 순회합니다.
- f_it->idx()를 통해 현재 Face의 ID를 출력할 수 있습니다.
- 각 Face의 Vertex에 접근하기 위해 FaceVertexIter를 사용합니다. mesh.fv_iter(*f_it)를 통해 현재 Face에 포함된 각 Vertex를 순회하며 접근할 수 있습니다.

 

 

FaceIterator 활용

위 코드는 메쉬의 모든 Face를 순회하고, 각 Face에 포함된 Vertex의 정보를 출력하는 간단한 예시입니다. FaceIterator는 메쉬의 표면 정보를 수집하거나, 표면을 수정할 때 유용하게 사용할 수 있습니다.

반응형

'OpenMesh' 카테고리의 다른 글

HalfedgeIterator  (0) 2024.11.14
Edge Flip  (0) 2024.11.12
Collapsing Edges  (0) 2024.11.11
EdgeIterator  (1) 2024.11.10
VertexIterator  (0) 2024.11.09