objc에서 OpenGL ES 2.0 용으로 .obj 파서를 작성하여이 OpenGLES의 작동 방식을 더 잘 이해할 수 있습니다. 버텍스를로드하고 버텍스 컬러가있는 모델을 보여주는 것은 매력과 같습니다. 작은 메모 : 색인 버퍼를 사용하고 있습니다.Wavefront .obj 텍스처 좌표를 분석하는 데 문제가 발생했습니다.
실제 문제는 atm 텍스처의 매핑입니다. 아래에서 좀 더 자세히 살펴 보 겠지만, 내 텍스처는 꼭 그래야하는 방식으로 매핑되지 않습니다.
다음은 .obj 형식이 어떻게 작동하는지 생각해 봅니다. 틀린 경우 수정하십시오. "f"라인은 슬래시 앞의 숫자가 정점의 인덱스와 슬래시 뒤의 숫자를 정의하는 얼굴을 나타냅니다 텍스처 좌표를 정의합니다.
v -75 75 -50
v 75 75 -50
v -75 -75 -50
v 75 -75 -50
vt 0 0
vt 0 1
vt 1 1
vt 1 0
f 4/3 3/2 1/1
f 2/4 4/3 1/1
그리고 다음과 같은 질감 :
은 (시네마 4D 내 보낸) 다음 .OBJ 파일을 고려
내가 OpenGL을 ES 3D 공간에서 정점의 위치를 지금
, 텍스처 좌표를 각 정점에 매핑하려고하면 매핑이 잘못됩니다. 텍스처 좌표 값 중 일부를 이동하여이 문제를 해결할 수 있지만이를 수행하는 방법이 아니라는 것을 알고 있습니다. 또한 Axes 및/또는 uv 매핑을 뒤집기 위해 .obj 내보내기 설정 중 일부를 편집하려고했지만 올바른 매핑이 아닌 결과를 가져 왔습니다. .obj 파일 형식에 관한 이론에 실종 된 것이 있습니까? 제가 이미 말할 수있는 한가지 : 어제는 .obj 형식의 좌표계가 topleft를 텍스처의 기준점으로 정의한다는 것을 읽었습니다. 그래서 나는 그것을 내 파싱에 이미 고정시켰다.
다음은 현재 상황을 요약 한 것입니다. 업데이트 : 텍스처의 좌표계는 실제 .obj 텍스처 좌표계이며 OpenGL의 좌표계는 아닙니다. 필자는 이것을 분석하기위한 파싱 알고리즘의 좌표를 변환합니다.
좌표계에 설명이 추가되었습니다. – polyclick
.obj 파일의 "v"및 "vt"값의 상관 관계를 자세히 살펴보십시오. OpenGL은 OBJ 파일에 표현 된 것과 같은 방식으로 텍스처 좌표 (및 법선)를 처리하지 않습니다. 따라서 "텍스처 좌표 값 중 일부를 이동하지"않고 텍스처의 왼쪽 하단 점을 오른쪽 상단 정점에 매핑하거나 반대 방향으로 매핑합니다. OpenGL의 버텍스 색인 생성과는 별도로 텍스처 좌표 색인화를 수행 할 수 없습니다. http://stackoverflow.com/questions/4233152/how-to-setup-calculate-texturebuffer-in-gltexcoordpointer-when-importing-from-ob – Thalur
해결책을 찾았습니까?를 참조하십시오. –