[英]Python FBX SDK – How to scale models that have keyframes?
我正在尝试使用 Python FBX SDK 编写脚本来缩放模型。 我正在使用LclScaling.Set()
来设置比例值。 但是我发现如果这个 model 有关键帧,那么就不会应用缩放。
所以我的问题是如何正确缩放具有关键帧的模型。 这是我的代码:
scale = node.LclScaling.Get()
value = 0.5
node.LclScaling.Set(fbx.FbxDouble3(scale[0] * value, scale[1] * value, scale[2] * value))
如果您无法缩放已经具有 animation 关键帧的 model,它似乎在Scale
参数上有关键帧,即使在播放 Z21D6F40CFB511982E4424E0E250A9 期间比例没有变化。 当用户按S快捷键为 model 的 position 设置动画时,这可能是可能的。 此快捷方式一次生成 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")
在此之后,您可以轻松扩展 model。
另一种适当的方法是更新 FBX model 的旧比例关键帧(首先在动画开始,然后在动画结束)。
我想到了。 在 Maya 中,如果我设置平移或旋转关键帧,缩放属性也会在 FBX SDK 中具有 Animation 节点。 所以,如果我想修改 scale 属性,我应该使用SetChannelValue
或FbxAnimCurveFilterScale
而不是LclScaling.Set()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.