我正在使用XNA创建一个3D游戏,当我尝试将武器正确地附加到骨骼上时,我会陷入困境。 您可以看到以下结果:
所以,武器跟着右手,我只需要找到一个好的旋转,但这不是我的问题。 我的问题是:当我缩小弯刀时,它的Y值会减小......实际上,我认为XNA通过网格质量中心来设置位置...我想知道是否可以修改这个质量中心?从手柄上画出我的砍刀(我不知道在这种情况下我们是否可以这么说)。 我希望你能理解我的问题是什么:) 我为我糟糕的英语道歉,见到你:)
答案 0 :(得分:0)
绘制武器时,你应该做几个矩阵乘法运算。 1)将刀片放在中心原点 2)调整它的大小 3)将其旋转到局部轴 4)将刀片放在所需位置。 乘法的顺序很重要!以不同顺序进行乘法将产生令人讨厌的结果和模型的位移。 Matrix transform = fixPosMat * Matrix.Scale(1.5f)* rotationMat * PositionMat;
答案 1 :(得分:0)
我不确定... 由于这个矩阵,我绘制了我的模型:
boneLocal = Matrix.Invert(skinnedModel.SkeletonBones[index].InverseBindPoseTransform)
* animationController.SkinnedBoneTransforms[index]
* Matrix.CreateScale(scale)
* _rotation
* Matrix.CreateTranslation(_position);