关于使用 maxscript 将法线从一个网格复制到另一个网格

Posted

技术标签:

【中文标题】关于使用 maxscript 将法线从一个网格复制到另一个网格【英文标题】:About copy normal from one mesh to another mesh with maxscript 【发布时间】:2020-10-05 19:13:31 【问题描述】:

网格彼此靠近。我需要使用 maxscript 将法线从一个网格复制到另一个网格。目标顶点是相同位置的那些点。 但结果很奇怪,即使 normal 的值相同,方向也是错误的。 我尝试了一些方法来获取/设置正常, 在 coordsys 世界/本地/父.. 但是没有任何意义。 我怎样才能得到正确的结果?

【问题讨论】:

【参考方案1】:

您可能想尝试使用 Edit_Normal 修饰符来指定显式法线。 https://help.autodesk.com/view/3DSMAX/2020/ENU/?guid=GUID-9F33B780-7A98-4638-BD00-A1725FA1DB70

根据本文档,如果您使用 setFaceNormal 直接在网格上设置法线,

只要在网格上运行 update(),这个值就会被覆盖。

https://help.autodesk.com/view/3DSMAX/2020/ENU/?guid=GUID-58D1F8B6-0012-4727-AA29-B2C79EA46E16

但是它似乎对顶点法线不起作用,这对你来说可能已经足够了吗?

自 3ds Max 2015 起,设置顶点法线会将法线设置为显式,因此当网格更新时它将保留其值。在 3ds Max 2015 之前的版本中,使用 MAXScript 设置顶点法线只有很短的持续时间,因为数据很容易被视口重绘或场景渲染时基于平滑组的隐式法线重新计算覆盖。

https://help.autodesk.com/view/3DSMAX/2020/ENU/?guid=GUID-BD473113-389F-4C96-BE07-217FF75796EF

【讨论】:

谢谢。我明白你的意思。但实际上正常的值是对的,而方向是错误的。我已经解决了这个问题。两个网格应该做“reset xform” ...或者我们可以将A的法线转换为世界以获得worldNormal。然后将worldNormal转换为B的局部空间以获得法线B...【参考方案2】:

这两个网格应该做“reset xform”...或者我们可以将A的法线转换到世界得到worldNormal。然后将worldNormal转换到B的局部空间得到法线B......

【讨论】:

【参考方案3】:

试试noors普通小偷脚本。

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于关于使用 maxscript 将法线从一个网格复制到另一个网格的主要内容,如果未能解决你的问题,请参考以下文章

Fipy calcNormals 函数

计算网格的顶点法线[重复]

如何在OpenGL中计算三角形网格的顶点法线?

UE4 FBX静态网格物体通道

如何在OpenGl中计算三角形网格的顶点法线?

从 Maya 发送并执行 maxscript 或 python 到 3ds Max