【问题标题】:using assimp to load fbx animation data使用assimp加载fbx动画数据
【发布时间】:2016-12-29 15:20:15
【问题描述】:

最近我刚刚阅读了Directx 11 3D 游戏编程简介,我尝试使用第 25 章中的示例来加载我自己的模型。所以在我为模型蒙皮并将数据导出到 . fbx 格式,我尝试加载骨骼和动画数据并得到错误的结果。所以,

1.我只是将偏移矩阵复制到我自己的结构中并转置它,这样可以吗?

for (auto & s: names)
{
    auto index = maps[s];
    auto m = matrixmaps[s];
    memcpy(offset.float1d, m, sizeof(float)* 16);
    TransposeMatrix(offset);
    Offsets[index] = offset;
}

2.我发现根骨骼(Bip001)的关键帧为零,所以我检查了加载数据的节点层次结构,我注意到骨骼层次结构如下:

   |_RootNode
      |_Bip001_$AssimpFbx$_Translation
        |_Bip001_$AssimpFbx$_PreRotation
          |_Bip001_$AssimpFbx$_Rotation
            |_Bip001_$AssimpFbx$_Scaling
              |_Bip001
                |_Bip001 Footsteps
                |_Bip001 Pelvis
                  |_Bip001 Spine
                    |_Bip001 Spine1
                    | |_Bip001 Spine2
                    |   |_Bip001 Spine3
                    |     |_Bip001 Neck
                    |       |_Bip001 L Clavicle
                    |       | |_Bip001 L UpperArm
                    |       |   |_Bip001 L Forearm
                    |       |     |_Bip001 L Hand
                    |       |       |_Bip001 L Finger0
                    |       |         |_Bip001 L Finger0Nub
                    |       |_Bip001 R Clavicle
                    |       | |_Bip001 R UpperArm
                    |       |   |_Bip001 R Forearm
                    |       |     |_Bip001 R Hand
                    |       |       |_Bip001 R Finger0
                    |       |         |_Bip001 R Finger0Nub
                    |       |_Bip001 Head
                    |         |_Bip001 HeadNub
                    |_Bip001 L Thigh
                    | |_Bip001 L Calf
                    |   |_Bip001 L Foot
                    |     |_Bip001 L Toe0
                    |       |_Bip001 L Toe01
                    |         |_Bip001 L Toe02
                    |           |_Bip001 L Toe0Nub
                    |_Bip001 R Thigh
                      |_Bip001 R Calf
                        |_Bip001 R Foot
                          |_Bip001 R Toe0
                            |_Bip001 R Toe01
                              |_Bip001 R Toe02
                                |_Bip001 R Toe0Nub

我应该如何处理节点Bip001的父节点,我应该将位置键,旋转键和缩放键从这些节点复制到Bip001吗? 请帮我弄清楚。非常感谢。

【问题讨论】:

  • 你解决了吗?我遇到了完全相同的问题:(

标签: fbx assimp


【解决方案1】:

对于第二个问题,将 AI_CONFIG_IMPORT_FBX_PRESERVE_PIVOTS 设置为 false 对我有用。

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 2021-10-23
    • 2014-07-12
    • 2017-07-22
    • 2023-04-04
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多