2013-02-16 5 views
4

COLLADA 파일 형식의 간단한 판독기를 작성 했으므로 제대로 작동하는 것 같습니다. 이제 블렌더로 내 보낸 입방체 메쉬를 가장자리가 쪼개지고 삼각형으로 처리 했으므로 12 개의 삼각형 (얼굴 당 2 개), 24 개의 정점 (얼굴 당 4 개) 및 36 개의 인덱스 (얼굴 당 6 개)가 있어야합니다. 이 메쉬는 일반적인 데이터와 UV 맵을 가지고 있습니다.COLLADA 인덱스를 처리하는 방법은 무엇입니까?

COLLADA 파일에는 24 개의 정점, 12 개의 법선 및 36 개의 UV가 있으므로 법선은 삼각형이고 UV는 인덱스라고 가정합니다. polylist의 삼각형 수는 12이며 올바른 숫자이며 vcount은 12의 3을가집니다. 이제 인덱스 목록 인 <p>에는 108 개의 항목이 있습니다. 여기서 0, 3, 6 등은 정점 인덱스이고 1, 4, 7 등은 일반 인덱스이고 2, 5, 8 등은 UV 인덱스입니다.

위치 (vec3), 보통 (vec3) 및 UV 좌표 (vec2)로 구성된 정점에 대한 내부 구조체가 있습니다. 메쉬를 그리기 위해 OpenGL의 버텍스 버퍼를 사용하고 별도의 인덱스 목록을 가지고 있습니다.

메쉬를로드 한 후 24 정점이 있어야하는 것은 아닙니까? <p>의 108 개 항목은 36 개의 정점으로 변환됩니다. 인덱스와 관련된 문제는 무엇입니까?

나는 여기에서 아주 간단한 것을 놓칠지도 모르지만, 그냥 볼 수는 없습니다.

COLLADA 파일은 here입니다.

답변

6

좋아, 해결책을 찾았고, 단순한 비행기로 내 마음을 정리해야했다. 모든면이 삼각형이기 때문에 정점의 최종 개수는 폴리리스트의 개수 속성에 설명 된 개수의 3 배입니다. 따라서 큐브의 경우 36이 아니고 24입니다. 결국 36은 큐브를 올바르게 그립니다. 그래서, 그것은 단지 내 두뇌가 바보가되었습니다.