【发布时间】: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吗? 请帮我弄清楚。非常感谢。
【问题讨论】:
-
你解决了吗?我遇到了完全相同的问题:(