首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FbxNode从字符的FbxNode中获取ENodeId

FbxNode从字符的FbxNode中获取ENodeId
EN

Stack Overflow用户
提问于 2015-08-16 16:25:42
回答 1查看 829关注 0票数 4

是否有可能从枚举FbxNode中获取相关的ENodeId?例如,如果我想从FbxNode获得Character::eLeftHand

我尝试使用Character::GetCharacterLink(ENodeId, FbxCharacterLink),然后通过调用FbxCharacterLink::mNodeFbxCharacterLink中提取FbxCharacterLink::mNode

但是,该函数返回大多数ENodeIds False,因此没有创建FbxCharacterLink

代码语言:javascript
复制
character = myScene.GetCharacter(0)
lefthand = character.eLeftHand
lefthand_node = FbxCharacterLink()
character.GetCharacterLink(lefthand, lefthand_node) # False
lefthand_node = lefthand_node.mNode

当我在Motionbuilder中使用Python和Pyfbxsdk编写脚本时,无论骨架对象是如何命名的,我都可以获得它的FBXObject

代码语言:javascript
复制
m = character.GetModel(self.BodyNodeObject[o])

BodyNodeObject一起生成

代码语言:javascript
复制
def BodyNodes(self):
    for i in dir(FBBodyNodeId):
        if i[0] == 'k':
            try:
                self.BodyNodeObject[BodyNodesId[i]] = getattr(FBBodyNodeId, i)
            except:
                pass

BodyNodesId只是一本字典

代码语言:javascript
复制
BodyNodesId = OrderedDict({
        'kFBChestNodeId':'Spine1',
        'kFBHeadNodeId':'Head',
        'kFBHipsNodeId':'Hips',
        'kFBLeftAnkleNodeId':'LeftFoot',
        'kFBLeftCollarNodeId':'LeftShoulder',
        'kFBLeftElbowNodeId':'LeftForeArm',
        ...
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-26 22:59:16

这对我来说很管用

代码语言:javascript
复制
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))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32037389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档