将我的武器放在骨头后面

时间:2014-02-05 13:31:19

标签: c# animation xna

我正在尝试使用XNAnimation动画显示骨骼。 我的武器跟随骨骼,但是我需要应用一个偏移,因为武器没有很好地定位在手上,我有一个丝网印刷:

image

事实上,大砍刀很遥远......我借助这个矩阵绘制它:

        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();
        }

我没有找到如何很好地定位武器...... 如果您有任何想法:)

感谢您的回答,我为我的英语道歉

0 个答案:

没有答案