C++ 无法理解.obj文件

C++ 无法理解.obj文件,c++,opengl,C++,Opengl,这就是我的obj文件的样子。你能帮我理解这个.obj文件吗。每行和每列代表什么?我如何想象它。我正在尝试使用Java3DAPI加载模型 所以,我无法理解上面的代码。我想知道代码到底在做什么。normals是一个std::vector包含一个带有x、y和z浮动的结构。这些与.obj文件中的vn行中的相同。这些索引使用基于0的索引进行索引 it是包含结构的向量的迭代器,结构具有vert\u索引和norm\u索引,这些与您在f行中看到的相同。这些是基于1的指数 因此,你可以得到一个点的法线,通过得到

这就是我的obj文件的样子。你能帮我理解这个.obj文件吗。每行和每列代表什么?我如何想象它。我正在尝试使用Java3DAPI加载模型


所以,我无法理解上面的代码。我想知道代码到底在做什么。

normals
是一个
std::vector
包含一个带有
x
y
z
浮动的结构。这些与.obj文件中的
vn
行中的相同。这些索引使用基于0的索引进行索引

it
是包含结构的向量的迭代器,结构具有
vert\u索引
norm\u索引
,这些与您在
f
行中看到的相同。这些是基于1的指数


因此,你可以得到一个点的法线,通过得到面的范数指数并减去1。

你不明白的是什么?如果您阅读OBJ规范,代码应该变得微不足道。如果我理解的话,我就不会在这里发布:)摘自:面是使用顶点、纹理和法线索引列表定义的。即每个面有3或4组(三/四)数字。每个集合包括3个项目-顶点、纹理和法线索引。因为你只有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
glNormal3f(normals[it->norm_indices[0] -1 ].x, 
           normals[it->norm_indices[0] -1 ].y, 
           normals[it->norm_indices[0] -1 ].z);