본문 바로가기
OpenMesh

Bounding Box

by DarkRock 2024. 11. 25.
반응형

Bounding Box 계산

Bounding Box는 3D 모델의 공간적인 범위를 나타내는 데 사용되는 기본적인 데이터입니다. OpenMesh에서는 각 Vertex의 위치 정보를 사용하여 메쉬의 Bounding Box를 계산할 수 있습니다. 

 


Bounding Box는 아래 글에서 설명했듯이 3D 공간에서 객체를 포함하는 최소한의 직육면체입니다. 이를 계산하기 위해 3축(x,y,z)의 최소값과 최대값을 계산하면 됩니다.

2024.08.22 - [3D Algorithm] - AABB(Axis Aligned Bounding Box) 계산과 활용

 

AABB(Axis Aligned Bounding Box) 계산과 활용

AABB가 무엇인지는 아래글을 통해서 간단히 설명했었습니다.2023.12.11 - [3D Algorithm] - AABB OBB 차이와 의미 AABB OBB 차이와 의미AABB(Axis Aligned Bounding Box)와 OBB(Oriented Bounding Box)는 모두 3D 그래픽스

darkrock.tistory.com

 


예제코드

MyMesh mesh;
	
	if (!OpenMesh::IO::read_mesh(mesh, "example.stl")) 
	{
		std::cerr << "Error: Cannot read mesh file." << std::endl;
		return 1;
	}
		
	MyMesh::Point min_point(std::numeric_limits<float>::max(),
		std::numeric_limits<float>::max(),
		std::numeric_limits<float>::max());
	MyMesh::Point max_point(std::numeric_limits<float>::lowest(),
		std::numeric_limits<float>::lowest(),
		std::numeric_limits<float>::lowest());

	
	for (MyMesh::VertexIter v_it = mesh.vertices_begin(); v_it != mesh.vertices_end(); ++v_it) 
	{
		MyMesh::Point p = mesh.point(*v_it);	
		min_point[0] = std::min(min_point[0], p[0]); 
		min_point[1] = std::min(min_point[1], p[1]); 
		min_point[2] = std::min(min_point[2], p[2]); 
		
		max_point[0] = std::max(max_point[0], p[0]); 
		max_point[1] = std::max(max_point[1], p[1]); 
		max_point[2] = std::max(max_point[2], p[2]); 
	}
		
	std::cout << "Bounding Box:" << std::endl;
	std::cout << "Min Point: (" << min_point[0] << ", " << min_point[1] << ", " << min_point[2] << ")" << std::endl;
	std::cout << "Max Point: (" << max_point[0] << ", " << max_point[1] << ", " << max_point[2] << ")" << std::endl;



Bounding Box는 3D 메쉬의 공간적 경계를 정의하는 데 유용하며, OpenMesh의 Vertex 좌표 데이터를 활용하여 간단히 계산할 수 있습니다. 위의 코드와 방법을 활용하여 메쉬의 크기와 범위에 해당하는 Bounding Box를 계산 할 수 있습니다.

반응형

'OpenMesh' 카테고리의 다른 글

Triangle Area  (0) 2024.11.27
Boundary Detection  (0) 2024.11.26
Delete Face  (0) 2024.11.24
Delete Vertex  (0) 2024.11.23
Incoming and outgoing halfedges  (1) 2024.11.22

darkrock.tistory.com