본문 바로가기
반응형

OpenMesh15

Halfedge Data Structure(반모서리 자료구조) OpenMesh는 Halfedge Data Structure를 사용하고 있습니다. 우리말로 반모서리 자료구조라고 부릅니다. Edge를 절반으로 자른 형태라고 해서 반모서리라고 합니다. 이 반모서리 구조는 3D 모델링 및 Mesh 데이터 구조에서 많이 사용하고 있습니다. 많이들 사용하시는 CGAL(The Computational Geometry Algorithms Library)도 반모서리 구조를 사용하고 있습니다. Halfedge 자료 구조는 메쉬의 각 모서리(Edge)를 나타내는데 사용되며, 이를 통해 메쉬의 구조를 효율적으로 저장하고 다양한 연산을 수행할 수 있습니다. 이 자료 구조는 메쉬의 표현을 간소화하고 메쉬 조작 작업을 더 효율적으로 만드는 데 도움이 됩니다. Halfedge 자료 구조의 기본.. 2023. 11. 29.
Cube Creation OpenMesh를 이용해서 Cube를 생성하는 코드예제를 보여드리겠습니다.Cube는 점이 8개, 면이 6개가 있습니다. 그래서 OpenMesh 구조체에 점과 면의 정보를 저장하면 Cube Mesh를 생성할 수 있습니다.Cube의 점 8개를 저장하는 코드는 아래와 같습니다.MyMesh mesh; // generate vertices MyMesh::VertexHandle vhandle[8]; vhandle[0] = mesh.add_vertex(MyMesh::Point(-1, -1, 1)); vhandle[1] = mesh.add_vertex(MyMesh::Point(1, -1, 1)); vhandle[2] = mesh.add_vertex(MyMesh::Point(1, 1, 1)); vhandle[3] = m.. 2023. 9. 18.
Mesh Subdivision Subdivision 기능은 Mesh의 Polygon들을 더 작게 세분화하여 표현하는 기법이라고 보면 됩니다. 아래 그림을 보면 Subdivision을 통해 왼쪽 Sphere가 오른쪽 형상으로 변형되었습니다.Subdivision을 수행하면 vertex, edge, triangle이 증가하기 때문에 형상 파일 용량이 결과적으로 늘어나게 됩니다. OpenMesh에서 Subdivision을 수행하기 위해서는 아래 header를 include 한 후#include  아래와 같이 코드를 작성해 주면 간단히 Subdivision을 할 수 있습니다.아래코드는 sphere.stl을 읽어 Subdivision 진행 후 output.stl로 저장하는 코드 입니다.typedef OpenMesh::PolyMesh_ArrayK.. 2023. 9. 18.
Mesh Smooth Mesh Smooth는 Mesh의 형상을 부드럽게 바꿔주는 기능을 합니다.아래 그림을 보면 왼쪽에 보이는 울퉁불퉁한 Sphere를 오른쪽 형상같이 좀 더 부드럽게 형상을 변형시켜 준다고 보면 됩니다.  이 기능도 OpenMesh를 이용하면 간단히 구현이 가능합니다.먼저 Smooth 함수를 call 할 수 있는 헤더를 include 해주고#include  아래와 같이 코드를 작성하면 된다. 아래코드는 sphere.stl 파일을 읽어서 smooth를 처리한 후 sphere_smooth_output.stl로 저장하는 코드입니다.typedef OpenMesh::PolyMesh_ArrayKernelT MyMesh;using namespace std;#include void testSmooth(){ MyMesh .. 2023. 9. 14.
Mesh Decimation(Simplification) Mesh Decimation은 3D 데이터의 점이나 면의 갯수를 줄여주는 기능입니다.아래 그림은 Decimation을 통해 왼쪽 sphere가 오른쪽 sphere 형태로 변형된 이미지이다. 삼각형 갯수가 많이 줄어든 것을 볼 수 있습니다.  Decimation 기능을 하나하나 구현하는 것은 쉽지 않지만, OpenMesh를 이용하면 쉽게 Decimation기능을 이용할 수 있습니다.Decimation과 관련된 header 3개를 써주고,#include  #include  #include  아래와 같이 코드를 입력해주면 된다. 아래 코드는 sphere.stl 파일을 읽어 들여 OpenMesh를 이용해 Decimation 진행한 후 mesh_out.stl 파일로 저장하는 코드입니다. #include #incl.. 2023. 8. 18.
OpenMesh 설치 및 Tutorial Example(Visual Studio 2017) OpenMesh 설치는 간단하게 아래 두 가지만 하면 됩니다.- OpenMesh 홈페이지에서 관련파일 다운로드- Visual Studio 프로젝트 셋팅(include, lib) https://www.graphics.rwth-aachen.de/software/openmesh/download/ 여기 사이트로 가서 OpenMesh 관련파일을 받으면 됩니다.  저는 Visual Studio 2017을 사용하고 있어 VS2017 64-bit static으로 받았습니다. OpenMesh 파일을 받아 실행하면 기본 폴더 C:\Program Files\OpenMesh 9.0에 설치가 됩니다. 이 폴더에는 include와 lib가 있는데 이 폴더를 Visual Studio에 연결해 주면 됩니다. Visual Studio.. 2023. 8. 11.
반응형