3ds max:在不使用重置 XForm 的情况下重新计算法线

3ds max: Recalculate normal without using reset XForm

我有一个带有奇怪法线的模型(参见此图:recalculate normal)。由于模型包含动画,我不想使用 'reset XForm',因为这基本上意味着重新创建所有动画。有没有办法在不使用 'reset XForm' 的情况下重新计算法线?

非常感谢

编辑:可以找到示例模型here

"Edit Normals" 修饰符应该做你想做的。它有一个 "Reset" 选项,可以根据平滑组重置法线。 (您可能希望在重置法线之前使用 "Edit Poly" 修饰符调整 "Edit Normals" 以下的平滑组)

编辑:不幸的是,"Edit Normals" 修改器失败了,当法线由于应用到对象的 Non-uniform 比例而扭曲时。 'Edit Normals' 不幸的是,它既不支持法线缩放,也不考虑任何坐标系。因此,在为对象设置动画之前应用 "Reset XForm" 始终是个好主意。

如果发生这种情况,即动画对象具有 non-uniform 比例,您只剩下这些选项:

  • 应用重置 XForm 并重做动画
  • 通过 Maxscript 调整法线。可通过 Maxscript 访问编辑法线修改器,请参阅 Max Script help for Edit Normals Modifier。但这将非常棘手,因为在此界面中您也只能移动和旋转法线。
  • 修改"Edit Normals"修饰符。其完整的 C++ 源代码在 3ds max SDK 中可用。我认为它比最大脚本方法更简单,因为您可以访问所有内部结构并可以使用通用矩阵。
  • 如果您的目标是导出模型,例如对于游戏,并且您可以访问导出器源,最简单的方法是清理并 re-create 导出过程中的法线(无论如何您都必须导出法线)。