2014-04-28 28 views
-2
v 0.437500 0.164063 0.765625 
... 
vn 0.664993 -0.200752 0.719363 
... 
f 47//1 1//1 3//1 
... 
f 1//7 11//7 9//7 
f 1//7 9//7 3//7 

能否請你幫我理解這個obj文件沒聽懂obj文件

Link to loading .obj file

glNormal3f(normals[it->norm_indices[0] -1 ].x, 
      normals[it->norm_indices[0] -1 ].y, 
      normals[it->norm_indices[0] -1 ].z); 

,所以我不明白上面的代碼

+2

它是什麼,你不明白?如果你閱讀OBJ規範,代碼應該變得微不足道。 http://en.wikipedia.org/wiki/Wavefront_.obj_file – Bart

+0

我不會張貼在這裏,如果我明白了:) –

+0

取自http://zh.wikipedia.org/wiki/Wavefront_.obj_file:面孔是使用頂點,紋理和正常索引列表定義。即每個人臉都有3或4(三/四)組數字。每個集合包括3個項目 - 頂點,紋理和正常指數。由於你只有2個,而中間的一個缺失,你的面孔沒有紋理共同點。 – enhzflep

回答

0

normals是一個std::vector包含一個結構與x,yz浮游物。這些與.obj文件中的vn行中的行相同。這些索引是基於0的索引。

it是一個向量的迭代器,它包含結構爲vert_indicesnorm_indices的結構,這些結構與您在f行中看到的結果相同。這些是基於1的指數。

因此,您可以通過獲取面部的norm_indices並減去1來獲得點的法線。