我正在尝试使用XNAnimation动画显示骨骼。 我的武器跟随骨骼,但是我需要应用一个偏移,因为武器没有很好地定位在手上,我有一个丝网印刷:
事实上,大砍刀很遥远......我借助这个矩阵绘制它:
public Matrix GetBoneMatrix(string boneName, float scale)
{
int index = skinnedModel.Model.Bones[boneName].Index;
Matrix boneLocal = animationController.SkinnedBoneTransforms[index];
boneLocal = Matrix.CreateTranslation(new Vector3(0f))
* Matrix.CreateScale(scale)
* Matrix.Invert(skinnedModel.SkeletonBones[index].InverseBindPoseTransform)
* animationController.SkinnedBoneTransforms[index]
* _rotation
* Matrix.CreateTranslation(_position);
return boneLocal;
}
我在绘图功能中使用此功能:
foreach (ModelMesh mesh in weap.GetModel(weap._selectedWeapon).Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
// Draw the weapon thanks to bones position
effect.World = _handAnimation.GetBoneMatrix("hand_R", 0.02f);
effect.View = view;
effect.Projection = projection;
}
mesh.Draw();
}
我没有找到如何很好地定位武器...... 如果您有任何想法:)
感谢您的回答,我为我的英语道歉