저는 Half-Edge 데이터 구조를 기반으로하는 자체 Mesh 구조를 가진 3D OpenGl (C++) 응용 프로그램을 만들고 있습니다. 내 메시 구조에 Wavefront obj 파일을로드하는 간단한 방법을 만들고 싶습니다. 당연히, 나는 너무 순진하게 할 수 있지만, 좀 더 효율적인 방법이 있어야한다. (나는 전문적인 어플리케이션이 순차적으로 파일을 로딩하지 않는다는 것을 알고있다. 수백만 개의 정점에서 너무 느릴 것이다.)HalfEdge Mesh 용 .obj 파일 로더를 가속화하는 방법은 무엇입니까?
누군가 나를 튜토리얼이나 정말 빠른 OBJ 로더의 예를 가르쳐 줄 수 있습니까? Half Edge 데이터 구조와 관련이 있다면 바람직합니다.
편집 :
이 두 내가 어떻게 지능적으로 결정합니까 주위
1) 파일
2) 부동 소수점 숫자를 읽기의 일반적인 속도 저하를 피 얻을 찾고 기본 문제 날아 다니는 각 가장자리의 "인접한"하프 엣지. 나는 생성되는 엣지의 대칭 또는 다음 엣지가 이미 존재 하는지를 결정하기 위해 일종의 해싱 함수를 상상하고있다. 그렇다면 그 포인터를 사용하라.
'std :: unordered_set'은 O (1) 조회를 제공합니다. –
사실,하지만 자주 요소를 삽입하거나 지울 필요가있을 때 해시 맵을 피하는 경향이 있습니다.많은 양의 데이터를 읽을 때'std :: unordered_set' (해시 맵)을 빈번히 재실행해야하는데, 이것은 꽤 비싼 작업입니다. 얼마나 많은 프리미티브가 공유되었는지 알았다면 공간을 예약 할 수 있지만 OBJ 파일은 그것을 제공하지 않습니다. 어떤 컨테이너가 다른 파일 크기에 대해 가장 잘 수행되는지 확인하는 것은 흥미로울 것입니다. – PeddleSpam