Fbx 文件“肢体节点”
Posted
技术标签:
【中文标题】Fbx 文件“肢体节点”【英文标题】:Fbx file 'LimbNode' 【发布时间】:2021-01-02 10:18:12 【问题描述】:我正在尝试读取人类的 FBX 文件,我需要从中取出关节,我遇到了几个标记为“LimbNode”且具有不同肢体名称的节点,我很确定这些是关节,但是我无法理解如何找到与该特定节点匹配的顶点,例如我在文件中有以下属性:
["Model", [49742448, "mixamorig:HeadTop_End::Model", "LimbNode"], "LSS", [
["Version", [232], "I", []],
["Properties70", [], "", [
["P", ["RotationActive", "bool", "", "", 1], "SSSSI", []],
["P", ["ScalingMax", "Vector3D", "Vector", "", 0.0, 0.0, 0.0], "SSSSDDD", []],
["P", ["DefaultAttributeIndex", "int", "Integer", "", 0], "SSSSI", []],
["P", ["Lcl Translation", "Lcl Translation", "", "A", 0.0, 2.353147506713867, 0.8237115740776062], "SSSSDDD", []]]],
["Shading", [true], "C", []],
["Culling", ["CullingOff"], "S", []]]]
(这是一个从 Mixamo 下载的 FBX 文件) 我看到数字 49742448,我认为这是 FBX 文件的一些内部 id,但是我找不到如何将其转换为网格上的点/顶点。此数字仅在树关节规范中再次出现,并且没有平移到网格中的某个点。
【问题讨论】:
【参考方案1】:免责声明:我目前只是自己探索 fbx 文件,所以我不是专家;
“Lcl Translation”的意思是“本地翻译”,所以这可能是您要找的翻译。它可能是相对于其父级的翻译。
注意 AnimationCurveNodes,它可以改变动画的平移/旋转。
【讨论】:
感谢您的回答! “相对于其父级的翻译”是什么意思?联合树中的父节点?如果是这样,我怎样才能找到树根的索引? 是的,在联合树中。据我所知,骨骼没有固定的索引。你可以自己定义它们。最好的可能是从根开始,然后走到叶子。在我来自 Mixamo 的文件中,有 Deformer 元素,它也定义了肢体(除了模型元素)。它们包括完整的(本地(?))转换。 谢谢!我可以问另一个问题 - 在对象几何下我有以下内容:["Geometry", [73135712, "Group1mesh::Geometry", "Mesh"], "LSS", [["Vertices", [[-1.3143, 15.0686, ...
你知道数字 73135712 代表什么吗?据我所知,它只出现在这里和关节树中,但没有解释这是关节还是其他东西。
是的,正如您已经猜到的,它是每个对象的唯一 ID。实际上,它是一个指针(就像在 C/C++ 中一样)。 “联合树”更像是所有对象的层次结构。此外,我已经看到属性覆盖类型为 OP(肯定是对象-属性)而不是 OO(肯定是对象-对象)。 OP 出现用于纹理绑定和动画属性。
没有ID的对象,比如Properties70,一般来说可能是属性(或类变量)的集合,也可能是结构体。以上是关于Fbx 文件“肢体节点”的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 FBX SDK 在 fbx 文件中加载嵌入的纹理? [关闭]