簡體   English   中英

Python FBX SDK – 如何縮放具有關鍵幀的模型?

[英]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 屬性,我應該使用SetChannelValueFbxAnimCurveFilterScale而不是LclScaling.Set()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM