2012-04-21 1 views
0

주어진 obj 파일을 사용하여 모델을 렌더링하는 프로그램을 만들고 있습니다. 지금은 텍스처 매핑없이 작동하지만이 기능을 구현하고 재질 라이브러리 파일을 읽으려고합니다.obj 파일에서로드 된 모델에 텍스처를 매핑하는 효율적인 방법

하지만 꼭지점 수는 텍스처 좌표 수와 다를 수 있습니다. 이 예제를보십시오 :

# Blender v2.58 (sub 0) OBJ File: '' 
# www.blender.org 
mtllib /home/frenk/Documenti/Progetti/dado.mtl 
o Cube 
v 1.000000 -1.000000 -1.000000 
v 1.000000 -1.000000 1.000000 
v -1.000000 -1.000000 1.000000 
v -1.000000 -1.000000 -1.000000 
v 1.000000 1.000000 -0.999999 
v 0.999999 1.000000 1.000001 
v -1.000000 1.000000 1.000000 
v -1.000000 1.000000 -1.000000 
vt 0.593772 0.740196 
vt 0.593666 0.869263 
vt 0.394866 0.869219 
vt 0.394973 0.740152 
vt 0.792572 0.740240 
vt 0.993810 0.740284 
vt 0.993703 0.869351 
vt 0.792466 0.869307 
vt 0.792360 0.995233 
vt 0.593560 0.995189 
vt 0.593984 0.482061 
vt 0.792784 0.482105 
vt 0.792678 0.611172 
vt 0.593878 0.611129 
usemtl dado_verde_dado.tga 
s off 
f 1/1 2/2 3/3 4/4 
f 5/5 8/6 7/7 6/8 
f 1/1 5/5 6/8 2/2 
f 2/2 6/8 7/9 3/10 
f 3/11 7/12 8/13 4/14 
f 5/5 1/1 4/14 8/13 

인덱스가 일치하지 않으므로 drawElements() 함수를 사용할 수 없습니다. 버텍스 좌표를 텍스처 좌표에 일대일로 매핑해야합니까?

//example 
glBegin(GLTriangles); 
gltexcoord2f(...); glvertex3f(...); 
... 
blaBlaBla(...); 
... 
glEnd(); 

나는 효율적인 API가 내가 원하는 것을하기 위해 존재해야한다고 생각합니다.

+1

ASSIMP 라이브러리는 .obj 파일을로드하고 원하는대로 모든 것을 설정합니다. 그러나 모델을 사용하려면 여전히 GL 객체를 생성해야합니다. – Robinson

답변

0

불행히도 OpenGL에는 원하는 작업을 수행하는 데 효율적인 API가 없습니다. 버텍스 배열/버퍼와 함께 OBJ를 사용하려면 주어진 모든 버텍스와 텍스코 코드를 분해하고 배열로 다시 어셈블해야합니다. 그래야 정점 수와 텍스 코드 수가 동일 해지며 정점과 텍스 코드를 복제 할 수 있습니다 필요에 따라.

검색하는 경우이 작업을 수행하는 방법에 대한 몇 가지 질문을 찾을 것입니다.

관련 문제