【问题标题】:Saving vertex normals in obj file将顶点法线保存在 obj 文件中
【发布时间】:2016-07-12 08:32:30
【问题描述】:

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

【问题讨论】:

  • 我认为您提供的信息很少,而且您期望太多.. 在这里,您会问类型问题(几乎总是).. 我有这段代码,但这不起作用.. 或者我得到这种错误..这个问题可能会因为过于宽泛而被关闭 - 请提供更多信息,例如目标文件的格式是什么 - 它们是 c++ 目标文件吗(这听起来很奇怪.. 我对 3D 图形实现知之甚少),你使用一些图形引擎吗?关心分享你的一些代码..

标签: c++ vertex normals


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 2018-01-24
    • 2014-08-05
    • 2012-12-18
    • 2020-04-15
    • 2013-03-05
    • 2017-09-29
    • 2012-08-21
    相关资源
    最近更新 更多