2014-02-17 51 views
0

我有一輛車的車型,車身是分開的,4個輪胎是分開的,但它們在同一個FBX文件中。我可以旋轉車身和其工作,但輪胎不會圍繞自己的軸旋轉。如何繞其自己的軸旋轉ModelMesh?

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(金額)。我怎樣才能在自己的軸上旋轉車輪。我只是測試1輪現在,不是所有人

回答

1

我假設你的tireMatrix是你提到的Matrix.CreateRotationY(amount)。如果是這樣,你應該像這樣執行繪製Meshes [1]:

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

它不起作用。輪胎跟隨汽車旋轉,但不在自己的軸上旋轉,它繞着汽車旋轉。 – user1281566

+0

這可能是因爲您選擇了Matrix.CreateRotationY而不是Maatrix.CreateRotationX ...或Z.只有您可以分辨輪子旋轉的軸。我認爲你自從你提出了Y軸旋轉 –

+0

我有點解決了這個問題,但我無法解決它。 FBX文件包含車身和4個車輪。輪子被放置在他們認爲是在FBX文件中的位置,在XNA中它們被放置在他們的位置,而汽車的原點也是輪子的原點,所以當它們旋轉時,它們繞着這個原點旋轉。我手動嘗試通過移動車輪的向量並將其移動到中心位置,旋轉車輪並將其移回原位,從而找出汽車的原點。 – user1281566

0

我有點想通了這個問題,但我解決不了它。 FBX文件包含車身和4個車輪。輪子被放置在他們認爲是在FBX文件中的位置,在XNA中它們被放置在他們的位置,而汽車的原點也是輪子的原點,所以當它們旋轉時,它們繞着這個原點旋轉。我手動嘗試通過移動車輪的向量並將其移動到中心位置,旋轉車輪並將其移回原位,從而找出汽車的原點。像這樣

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

我首先需要將輪胎移動到汽車的中心,旋轉,並將其轉換回其位置。試圖找出這個手動不是給我的確切位置,所以有沒有一種方法來確定汽車的中心位置?使用carMatrix.Translation只是使輪胎圍繞汽車旋轉而不是外面的地方。