1
最近我剛剛讀了介紹了3D遊戲編程與Directx 11,我試圖用第25章中的例子來加載我自己的模型。所以在我蒙皮模型和導出數據在.fbx格式中,我嘗試加載骨骼和動畫數據並得到錯誤的結果。因此,使用assimp加載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.I發現根骨骼(Bip001)具有零關鍵幀,所以我檢查加載的數據assimp的節點層次結構,我注意到骨骼層次只是如下:
|_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中? 請幫我弄清楚,非常感謝。