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 文件中加载嵌入的纹理? [关闭]

FBX SDK 导出为较旧的 fbx 文件格式

MATLAB读取fbx文件

如何在 android studio 中使用 .fbx 文件?

使用 fbx sdk c++ 从 fbx 读取纹理文件名

.fbx 文件与 ARKit 中的动画