2013-09-03 3 views
1

블렌더에서 .obj를 내 보낸 C++ 프로그램으로로드했습니다. 작성 중입니다. 모든 것이 괜찮지 만 얼굴을 파싱 할 때 사용되지 않는 텍스처 좌표가 있음을 알았습니다. 얼굴 데이터의 세 번째 점에Wavefront obj 파일, Faces에는 3 개의 텍스처 좌표가 있습니다

f 1/1 2/2 3/3 
//f 1/s 2/t 3/? Its vt3 that is the coordinate in question 

이 무엇을 사용합니까? 내가 그것을 지켜야합니까?

+1

3/R - 일반적으로 2D 텍스처와 함께 사용될 때 투영에 사용됩니다. 왜 Wavefront 객체가 이것을 사용하는지, 말할 수 없었습니다. –

+0

@ AndonM.Coleman이 질문은 실제로 3D 텍스처 좌표가 아닙니다. –

+2

SO에서 "해결 된"문제가있을 때 제목을 "(해결됨)"로 변경하지 않습니다. 또한 우리는 그 질문에 대답을 넣지 않습니다. 당신이해야 할 일은 당신의 질문을 해결하는 대답을 받아들이는 것입니다 (또는 당신이 직접 풀었다면 대답을 쓰고 받아들이십시오). –

답변

5

당신은 obj 파일 형식을 약간 오해하고 3D와 2D 좌표의 혼합에 혼란 스럽다고 생각합니다.

삼각형은 사실 3 개의 위치를 ​​갖는 것과 같은 3 개의 텍스처 좌표를 가지고 있습니다. 이것은 정확하고 예상되며 필요합니다. 삼각형의 두 점이 텍스처 좌표를 가졌다면 이해가되지 않지만 그 중 하나는 그렇지 않습니다.

f은 하나의면을 정의하며이 경우 3 개의 정점 (삼각형)을 정의합니다. 각 정점에는 단일 3D 위치와 2D UV 좌표가 있습니다. 이것은 삼각형이 3, 3D 위치, 3, 2D UV 좌표 (각 꼭지점마다 하나씩)로 구성된다는 것을 의미합니다. 면 번호는 이러한 구조를 구성하는 개별 요소가 아니라 정점 위치 및 텍스처 좌표 배열에 색인을 지정합니다.

실제로 표기법은 다음과 같습니다.

f v1/vt1 v2/vt2 v3/vt3 

더 자세히 이러한 읽기 :

http://www.eg-models.de/formats/Format_Obj.html http://www.cs.cmu.edu/~mbz/personal/graphics/obj.html

이 더 나은 같은 코드에서 삼각형 구조의 생각을 시각화 할 수 있습니다

struct 
{ 
    Vec2 texCoord; // one vt for each vertex (s,t) 
    Vec3 position; // one v for each vertex (x,y,z) 
} Vertex; 

struct 
{ 
    Vertex verts[3]; // 3 vertices 
} Face; 
+1

내가 완전히 쓴 것만 큼 멀리 떨어져 있었기 때문에, 이미지의 원점에있는 벡터이기 때문에 vt1과 vt2 만 필요한 것이라고 생각했습니다. 다시 한 번 감사드립니다! – Snowdrama