python – FBX SDK – 从角色的ENodeId获取FbxNode
发布时间:2020-12-20 13:06:48 所属栏目:Python 来源:网络整理
导读:是否可以从枚举ENodeId获取关联的FbxNode? 例如,如果我想从Character :: eLeftHand获取FbxNode 我试着使用Character :: GetCharacterLink(ENodeId,FbxCharacterLink) 然后只需调用FbxCharacterLink :: mNode从FbxCharacterLink中提取FbxNode 但是,此函数返
是否可以从枚举ENodeId获取关联的FbxNode?
例如,如果我想从Character :: eLeftHand获取FbxNode 我试着使用Character :: GetCharacterLink(ENodeId,FbxCharacterLink) 但是,此函数返回大多数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)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |