在obj文件中保存顶点法线

时间:2016-07-12 08:32:31

标签: c++ vertex normals

我是编程图形的新手,我必须在我的大学里为3D项目显示面孔。对于闪电和阴影和东西,我需要顶点法线,由于某些原因,它们在我使用的几个目标文件中缺失。 我已经搜索了这个话题好几天,所以你们(几乎)是我最后的希望: 有没有一个工具,我基本上只是把我的obj文件,它计算缺少的法线并将其保存在文件中? 我知道我可以自己计算法线但是如果我不需要它会节省很多时间。 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您已经加载了一个obj文件并对其进行解析,那么您也可以同时计算法线。如果没有顶点法线,只需做一点Cross(AB,BC).Normalize()并存储每个三角形(或四边形)。如果你想要每个顶点的法线,你可以平均一个顶点上的所有法线,例如如果顶点是5个三角形的一部分,则将5个法线添加到该顶点,然后除以5,这样每个顶点都有一个法线。可能需要额外的中间数据结构,但应该足够简单。

如果允许使用库,ASSIMP就是我用来将各种文件格式解析为统一格式的库。他们可能会为你计算法线。但是因为这是针对大学图形课程的,你可能应该自己完成这项工作。