是否可以使用assimp生成切线如果您还使用它来生成法线?

时间:2013-07-22 20:06:45

标签: vector 3d windows-phone-8 directx assimp

我拉的模型往往没有法线和切线。我很失望地看到comments for aiProcess_CalcTangentSpace中的这一行:

“如果网格没有法线,则不执行任何操作。”

这里的问题是,我的网格确实有法线,但它们只是通过计算得出的 aiProcess_GenSmoothNormals。

生成法线后是否有办法进行额外的后期处理?我本可以编写代码来自己生成切线,但是我相信助手团队的切线生成技能比我的更多。

更新: 我发现你可以通过使用Importer的成员函数“ApplyPostProcessing(UINT flags)”来应用额外的后期处理步骤

问题是尽管这样做,我的模型仍然没有切线或bitangents。此屏幕截图非常容易地总结了这个问题: Tangents not calculated despite normals being present

感谢您阅读

1 个答案:

答案 0 :(得分:1)

更新:不,由于某种原因,额外的后期处理没有产生切线......这里发生了一些可疑的事情。

哎呀,我仔细阅读了手册并很快回答了我自己的问题。

看起来像运行此函数之后生成法线就可以了: ASSIMP_API const aiScene * aiApplyPostProcessing(const aiScene * pScene,
  unsigned int pFlags)

http://assimp.sourceforge.net/lib_html/cimport_8h.html#a09fe8ba0c8e91bf04b4c29556be53b6d