[英]FBX SDK - Get the FbxNode from an ENodeId of a Character
是否有可能得到相關FbxNode
從枚舉ENodeId? 例如,如果我想從Character::eLeftHand
我嘗試使用Character::GetCharacterLink(ENodeId, FbxCharacterLink)
然后通過調用FbxCharacterLink::mNode
從FbxCharacterLink
提取FbxCharacterLink::mNode
但是,此函數返回大多數ENodeIds False,因此不會創建FbxCharacterLink
。
character = myScene.GetCharacter(0)
lefthand = character.eLeftHand
lefthand_node = FbxCharacterLink()
character.GetCharacterLink(lefthand, lefthand_node) # False
lefthand_node = lefthand_node.mNode
當我使用Python和Pyfbxsdk
在Motionbuilder中編寫腳本時,它非常簡單,無論骨架對象如何命名,我都可以獲得它的FBXObject
m = character.GetModel(self.BodyNodeObject[o])
和BodyNodeObject
生成
def BodyNodes(self):
for i in dir(FBBodyNodeId):
if i[0] == 'k':
try:
self.BodyNodeObject[BodyNodesId[i]] = getattr(FBBodyNodeId, i)
except:
pass
BodyNodesId
只是一個字典
BodyNodesId = OrderedDict({
'kFBChestNodeId':'Spine1',
'kFBHeadNodeId':'Head',
'kFBHipsNodeId':'Hips',
'kFBLeftAnkleNodeId':'LeftFoot',
'kFBLeftCollarNodeId':'LeftShoulder',
'kFBLeftElbowNodeId':'LeftForeArm',
...
})
這對我有用
from fbx import *
for i in range(myscene.GetCharacterCount()):
character = myscene.GetCharacter(i)
node = character.eHips
link = FbxCharacterLink()
while (character.GetCharacterLink(node, link)):
print node, link.mNode.GetName()
node = character.ENodeId(int(node+1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.