Matrix 如何围绕模型网格自身的轴旋转模型网格?

Matrix 如何围绕模型网格自身的轴旋转模型网格?,matrix,xna,rotation,local,axis,Matrix,Xna,Rotation,Local,Axis,我有一个汽车模型,车身是分开的,4个轮胎是分开的,但它们在同一个FBX文件中。我可以旋转车身和它的工作,但轮胎不会绕着自己的轴旋转 foreach (BasicEffect effect in carModel.Meshes[0].Effects) { effect.EnableDefaultLighting(); effect.World = transforms[carModel.Meshes[0]

我有一个汽车模型,车身是分开的,4个轮胎是分开的,但它们在同一个FBX文件中。我可以旋转车身和它的工作,但轮胎不会绕着自己的轴旋转

foreach (BasicEffect effect in carModel.Meshes[0].Effects) 
            { 
                effect.EnableDefaultLighting(); 
                effect.World = transforms[carModel.Meshes[0].ParentBone.Index] * carWorldMatrix; 
                effect.Projection = camera.projectionMatrix; 
                effect.View = camera.viewMatrix; 
            } 
            carModel.Meshes[0].Draw(); 

            foreach (BasicEffect effect in carModel.Meshes[1].Effects) 
            { 
                effect.EnableDefaultLighting(); 
                effect.World = transforms[carModel.Meshes[1].ParentBone.Index] * tireMatrix; 
                effect.Projection = camera.projectionMatrix; 
                effect.View = camera.viewMatrix; 
            } 
            carModel.Meshes[1].Draw(); 

为了创建旋转,我只使用Matrix.CreateRotationY(amount)。如何在车轮自身的轴上旋转车轮。我现在只是测试1个轮子,并不是所有的我假设你的
tireMatrix
就是你提到的
矩阵。CreateRotationY(amount)
。如果是这样,您应该像这样为绘制网格[1]实现它:

effect.World = tireMatrix * transforms[carModel.Meshes[1].ParentBone.Index] * carWorld;

我算是解决了问题,但解决不了。FBX文件包含车身和4个车轮。车轮放置在FBX文件中假定的位置,在XNA中,车轮在其位置绘制,并且汽车原点也是车轮的原点,因此当车轮旋转时,它们围绕该原点旋转。我手动尝试通过移动车轮的矢量并将其移到中心,旋转车轮并将其移回原位来确定汽车的原点。像这样

tireMatrix = Matrix.CreateTranslation(carOrigin) * 
             Matrix.CreateRotationY(rotAmount) * 
             Matrix.CreateTranslation(tirePos);

我首先需要将轮胎移动到汽车的中心,旋转它,然后将它移回原来的位置。试图手动找出这一点并没有给我确切的位置,所以有没有一种方法来确定汽车的中心位置?使用carMatrix。平移只是使轮胎绕着汽车旋转,而不是它的外部位置

它不起作用。轮胎跟随汽车旋转,但不是绕着自己的轴旋转,而是绕着汽车旋转。这可能是因为您选择了Matrix.CreateRotationY而不是Maatrix.CreateRotationX。。。或者Z。只有你能知道轮子绕哪个轴旋转。我想你已经知道了,因为你提出了Y旋转,我算出来了问题,但我不能解决它。FBX文件包含车身和4个车轮。车轮放置在FBX文件中假定的位置,在XNA中,车轮在其位置绘制,并且汽车原点也是车轮的原点,因此当车轮旋转时,它们围绕该原点旋转。我手动尝试通过移动车轮的矢量并将其移到中心,旋转车轮并将其移回原位来确定汽车的原点。