Python FBX SDK – 如何缩放具有关键帧的模型?

Python FBX SDK – How to scale models that have keyframes?

我正在尝试使用 Python FBX SDK 编写脚本来缩放模型。我正在使用 LclScaling.Set() 来设置比例值。但是我发现如果这个模型有关键帧,那么缩放就不会应用。

所以我的问题是如何正确缩放具有关键帧的模型。这是我的代码:

scale = node.LclScaling.Get()
value = 0.5
node.LclScaling.Set(fbx.FbxDouble3(scale[0] * value, scale[1] * value, scale[2] * value))

如果您无法缩放已经具有动画关键帧的模型,它似乎在 Scale 参数上具有关键帧,即使在播放会话期间缩放没有发生变化。在用户仅按 S 快捷方式为模型的位置设置动画时,这可能是可能的。此快捷方式一次生成 10 个关键帧,但这里只有 translation/rotation 个关键帧对您很重要。

解决方法:

手动或以编程方式删除图表编辑器中的冗余关键帧。

import maya.cmds as cmds

cmds.cutKey('pSphere1', time=(1,100), attribute='scaleX', option="keys")
cmds.cutKey('pSphere1', time=(1,100), attribute='scaleY', option="keys")
cmds.cutKey('pSphere1', time=(1,100), attribute='scaleZ', option="keys")

在此之后,您可以轻松缩放模型。

P.S.

另一个合适的方法是更新 FBX 模型的旧比例关键帧(第一个在动画的开头,第二个在动画的结尾)。

我明白了。在 Maya 中,如果我设置平移或旋转关键帧,比例 属性 也会在 FBX SDK 中具有动画节点。所以,如果我想修改比例 属性,我应该使用 SetChannelValueFbxAnimCurveFilterScale 而不是 LclScaling.Set()