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文件吗?每行和每列代表什么?我如何想象它。我正在尝试使用Java3D API加载模型。
glNormal3f(normals[it->norm_indices[0] -1 ].x,
normals[it->norm_indices[0] -1 ].y,
normals[it->norm_indices[0] -1 ].z);
所以,我无法理解上面的代码。我想知道代码究竟在做什么。
答案 0 :(得分:2)
normals
是std::vector
,其中包含x
,y
和z
个浮点数的结构。这些与.obj文件中的vn
行中的相同。这些索引使用0个索引编制索引。
it
是包含vert_indices
和norm_indices
结构的向量的迭代器,它们与您在f
行中看到的相同。这些是基于1的指数。
因此,您可以通过获取面的norm_indices并减去1来获得点的法线。