我为我们的小型游戏引擎编写了一个 fbx 转换器。我坚持使用动画渲染模型。每个时间戳的矩阵看起来都很好,当我只渲染骨骼时,它也看起来像原始动画。我做了一些快照来显示我的问题。我只是不知道出了什么问题。也许有人能给我一个提示:)
我用于测试的文件是来自 FBX-SDK 的 humanoid.fbx。
着色器应该没问题:
VS_OUT output = (VS_OUT)0;
float4x4 skinTransform = 0;
skinTransform += MatrixPallette[input.BoneIndices.x] * input.Weights.x;
skinTransform += MatrixPallette[input.BoneIndices.y] * input.Weights.y;
skinTransform += MatrixPallette[input.BoneIndices.z] * input.Weights.z;
skinTransform += MatrixPallette[input.BoneIndices.w] * input.Weights.w;
//skinTransform = mul(BindShape, skinTransform);
//Transform Position
float4 worldPosition = mul(input.Position, skinTransform);
float4 viewPosition = mul(worldPosition, matView);
output.Position = mul(viewPosition, matProj);
这是图片。(右-> 原始) http://www.pic-upload.de/view-13949399/Unbenannt.png.html