본문 바로가기
반응형

분류 전체보기83

FaceIterator 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 idx()  코드 설명.. 2024. 11. 13.
Edge Flip Flipping EdgesOpenMesh의 Edge Flip은 아래 그림과 같이 edge를 뒤집는 기능을 합니다. 이 기능은 메쉬의 구조를 변경하는데 유용하면 특히 메쉬를 remeshing 하거나 최적화할 때 자주 사용됩니다.  예제코드 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.. 2024. 11. 12.
Collapsing Edges Edge CollapseEdge Collapse는 메쉬 단순화(simplification)를 위한 기법 중 하나로, 선택한 Edge를 제거하고 그 두 끝점(Vertex)을 하나로 병합하는 과정입니다. 이 작업을 통해 메쉬의 복잡성을 줄이고, 메쉬의 데이터 크기나 연산 부하를 줄일 수 있습니다. 코드 예제아래 그림과 같이 빨간색 edge를 collapse 하는 예제 코드입니다.     collapse 할 edge 길이는 0.233이며, 이 edge를 찾기 위해 if 문을 사용했습니다. cout 하는 부분은 collapse 할 edge 두 점이 한 개의 점으로 합쳐지는 것을 확인하기 위한 코드입니다. MyMesh mesh; if (!OpenMesh::IO::read_mesh(mesh, "Mesh.st.. 2024. 11. 11.
EdgeIterator EdgeIterator 사용법EdgeIterator는 OpenMesh에서 메쉬의 모든 Edge(변)를 순회하는 데 사용됩니다. 이를 통해 메쉬에 포함된 모든 Edge를 처음부터 끝까지 방문하면서 특정 작업을 수행하거나, 필요한 정보를 수집할 수 있습니다. OpenMesh에서는 MyMesh::EdgeIter를 사용해 EdgeIterator를 사용할 수 있습니다. EdgeIterator를 통해 메쉬에 포함된 각 Edge를 하나씩 방문하면서, Edge의 정보를 읽거나 수정할 수 있습니다. 예를 들어, 메쉬의 모든 Edge 길이를 출력하거나 특정 속성을 수정할 때 유용하게 활용됩니다.  C++ 예제 코드다음은 OpenMesh에서 EdgeIterator를 사용해 메쉬의 모든 Edge를 순회하며 각 Edge의 길이.. 2024. 11. 10.
VertexIterator VertexIterator 사용법 VertexIterator는 OpenMesh에서 메쉬의 모든 Vertex(정점)를 순회하는 데 사용됩니다. VertexIterator는 메쉬에 포함된 각 Vertex를 하나씩 방문하며, 정점의 정보를 읽거나 수정할 수 있게 해 줍니다. 이를 통해 메쉬의 모든 Vertex에 대해 특정 작업을 수행하거나, 필요한 정보를 수집할 수 있습니다. OpenMesh에서는 MyMesh::VertexIter를 통해 VertexIterator를 사용할 수 있습니다. 이 Iterator를 사용하면 메쉬에 포함된 모든 Vertex를 처음부터 끝까지 순회하면서 접근할 수 있습니다. 예를 들어, 메쉬의 모든 Vertex 위치를 출력하거나 특정 속성을 수정할 때 유용하게 활용됩니다.   C++ 예.. 2024. 11. 9.
Triangle Mesh 기본 구조 Triangle MeshTriangle Mesh(삼각형 메쉬)는 컴퓨터 그래픽스와 3D 모델링에서 가장 기본적인 메쉬 구조 중 하나로, 각 면이 삼각형으로 구성된 메쉬입니다. 이 구조는 복잡한 3D 형상을 간단한 삼각형 면들의 집합으로 나타낼 수 있게 해 주며, 그래픽 엔진에서의 효율적인 렌더링이 가능합니다.  OpenMesh는 이러한 삼각형 메쉬의 데이터를 쉽게 다룰 수 있도록 설계된 C++ 라이브러리입니다. OpenMesh에서는 메쉬의 각 요소를 Vertex(정점), Edge(변), Face(면)이라는 기본 단위로 정의하여 관리합니다. Vertex (정점): Vertex는 메쉬의 꼭짓점을 나타내며, 3D 공간 상의 위치 좌표를 가지고 있습니다. 각 Vertex는 삼각형의 모서리를 연결하는 중요한 역할.. 2024. 11. 8.
중년 사무직이 애플워치를 사용해야 하는 이유(사용 후기) 애플워치1024년 9월에 구입해서 2개월 동안 사용해 보았는데, 그동안 느꼈던 점을 작성해 보겠습니다. 구입 고려하시는 분들은 도움이 되지 않을까 생각됩니다. 1. 수면 측정수면은 스트레스 관리와 치매 예방에 큰 영향을 미치고, 나이가 들수록 수면의 질은 건강에 중요한 역할을 합니다. 특히 중년 이후 수면 부족은 면역력 저하로 만성질환을 유발할 가능성을 높입니다. 따라서 충분한 수면은 중요하다고 볼 수 있습니다. 워치는 수면 패턴을 분석해 깊은 수면, 얕은 수면 깨는 시간등을 기록합니다. 기록된 시간을 참고해서 몇 시부터 잠을 자야 충분히 잘 수 있는지 파악을 할 수 있어 상당히 좋았습니다. 참고로 잠을 바로 자도록 하는 기능은 없습니다. ㅎㅎ 2. 심박수 모니터링애플워치는 심박수 모니터링 기능을 제공합.. 2024. 11. 7.
OpenMesh Split Triangle Mesh SplitOpenMesh에서 Subdivision 기능을 제공하고 있습니다. 이 기능은 Mesh의 전체 영역을 Subdivision 하는 기능입니다. 코드는 아래글을 참고하세요.2023.09.18 - [OpenMesh] - Mesh Subdivision Mesh SubdivisionSubdivision 기능은 Mesh의 Polygon들을 더 작게 세분화하여 표현하는 기법이라고 보면 됩니다. 아래 그림을 보면 Subdivision을 통해 왼쪽 Sphere가 오른쪽 형상으로 변형되었습니다.Subdivision을 수darkrock.tistory.com 지역(Local) Subdivision은 OpenMesh에서 지원은 하지 않고 Mesh를 split 하는 기능은 지원을 하고 있습니다... 2024. 10. 24.
삼각메쉬 부피 계산(Triangle Mesh Volume Calculation) Triangle Mesh 부피 계산Mesh 데이터의 부피를 계산하는 기능이 필요해서 조사를 해봤더니, Mesh의 삼각형을 사면체로 생각해서 각 사면체를 모두 더하면 Mesh의 체적이 계산된다고 하네요. 사면체는 한 개의 꼭짓점에 세 개의  면이 만나고, 6개의 변, 네 개의 삼각형 면으로 이루어진 다면체를 말하며 삼각뿔이라고도 불립니다. 사면체 부피는 아래와 같은 식으로 구할 수 있습니다. V = (1/6) | a ⋅ (b × c) | 여기서 a, b, c는 사면체 3개의 변을 나타내는 벡터입니다. 절대값을 씌운 이유는 bc의 외적 방향이 a와 반대방향일 때 음수가 나오는 걸 방지하기 위함입니다.  사면체 부피 구하는 식을 이용해서 mesh의 volume를 구할 수 있습니다.  아래와 같이 각 삼각형의 .. 2024. 10. 8.
반응형