본문 바로가기
OpenMesh

Edge Flip

by DarkRock 2024. 11. 12.
반응형

Flipping Edges

OpenMesh의 Edge Flip은 아래 그림과 같이 edge를 뒤집는 기능을 합니다. 이 기능은 메쉬의 구조를 변경하는데 유용하면 특히 메쉬를 remeshing 하거나 최적화할 때 자주 사용됩니다.

출처:https://www.openmesh.org/

 

 



예제코드

    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

 

EdgeIterator

EdgeIterator 사용법EdgeIterator는 OpenMesh에서 메쉬의 모든 Edge(변)를 순회하는 데 사용됩니다. 이를 통해 메쉬에 포함된 모든 Edge를 처음부터 끝까지 방문하면서 특정 작업을 수행하거

darkrock.tistory.com

 

반응형

'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