// 메시 데이터 구조struct FDynamicMesh3{ // 기하학적 요소 TDynamicVector< FVector3d > Vertices; // 정점 위치 TDynamicVector< FIndex3i > Triangles; // 삼각형 (V0, V1, V2) TDynamicVector< FEdge > Edges; // 엣지 정보 // 토폴로지 정보 FRefCountVector TriangleRefCounts; // 삼각형 참조 카운트 FRefCountVector VertexRefCounts; // 정점 참조 카운트 // 속성 시스템 TDynamicMeshAttributeSet< FDynamicMesh3 >* Attributes;};
런타임 메쉬 편집용 동적 자료구조이다. Half-Edge 기반 토폴로지로 효율적인 순회와 동적 수정을 지원한다. 기하학 정보는 Vertices, Triangles, Edges에 담고 있으며 기타 정점별 UV, Normal, Color와 같은 정보는 Attributes에 담고 있는다.
메시 구성 요소:
Vertices ─┐
Triangles ─┤ 기본 지오메트리
Edges ─┘
UV Layers ─┐
Normal Layers ├─ 속성 오버레이
Color Layers ─┘
주요 특성
Half-Edge 구조로 토폴로지 관계 저장
런타임에 정점/삼각형/엣지 추가/삭제 가능
독립적인 속성 오버레이 시스템
Split Vertices 지원 (같은 위치, 다른 UV/노멀)
속성 오버레이 시스템
속성 타입
설명
용도
UV Layers
텍스처 좌표
머티리얼 매핑
Normal Layers
법선 벡터
라이팅 계산
Color Layers
버텍스 컬러
페인팅, 시각화
Custom Attributes
사용자 정의 속성
특수 데이터 저장
장점
장점
설명
동적 수정
런타임에 자유로운 토폴로지 변경 가능
풍부한 연산
Boolean, Remeshing, Simplification 등 지원
토폴로지 정보
이웃 관계, 경계 검출 등 쿼리 용이
속성 시스템
독립적인 UV/노멀/컬러 관리
일반적인 사용 사례
절차적 메시 생성 : 런타임 지오메트리 생성
메시 편집 도구 : 모델링, 스컬팅 시스템
Boolean 연산 : CSG, 메시 결합/차집합/교집합
메시 단순화/세분화 : LOD 생성, Remeshing
UV 언래핑 : 자동 UV 생성 및 최적화
성능 특성
정점 추가 : O(1)
삼각형 추가 : O(1)
정점 삭제 : O(degree) - 연결된 엣지 수에 비례
토폴로지 쿼리 : O(1) ~ O(degree)
메모리 : O(V + E + T) - Half-Edge 구조로 StaticMesh 대비 3~5배