0

誰かがこれを手伝ってくれますか

静止している3Dオブジェクトを中心に3Dオブジェクトを回転できるようにしたい。ゲームが開始されたらオブジェクトをその場所に描画したいので、動きはありません。その後、ゲームの残りの間、オブジェクトはそこに残ります。

たとえば、3D空間に静止しているオブジェクトXがあるとします。次に、Y1とY2の2つのオブジェクトがあります。これらのオブジェクトは両方とも静止しており、移動できません。3つのオブジェクトはすべて同じx軸とy軸上にあります。Xが(0,0,0)にあり、Y1が(0,0、-50)にあるとしましょう。Y1からY軸を中心に45度の角度でY2を描画したいのですが、Xから同じ距離を保ちます。

誰かがこれを行うための最良の方法を提案できますか?私は次のことを試しましたが、それはオブジェクトをその原点の周りで回転させるだけです。それで、私はそれを世界の起源の周りで回転させなければならないと思いますか?これはどのように行われますか?

Matrix.CreateRotationY(Rotation) 
4

2 に答える 2

2

あなたが何を望んでいるのかわかりませんが、これはあるオブジェクトを別のオブジェクトの周りで回転させる方法の 1 つです。

  Vector3 Origin;     // Stationary Object

  float Yaw, Pitch;   // Angles 

  float Distance;     

  Vector3 OrbitOffset = Vector3.UnitX * Distance;

  // Other approach that consider the initial pos of the object to rotate
  // Vector3 OrbitOffset = OrbitPos - Origin;       

  Matrix Rotation = Matrix.CreateFromYawPitchRoll(Yaw, Pitch, 0);

  Vector3.Transform(ref OrbitOffset, ref Rotation, out OrbitOffset);

  Vector3 OrbitPos = Origin + OrbitOffset;  // Final position of the rotated object
于 2012-04-29T14:27:05.600 に答える
1

一度に 2 つ以上の角度で回転する必要がない場合は、基本的なオイラー法を使用できます。見る :

http://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations

それは難しい数学的アプローチです...しかし、それはうまくいきます..複数の軸を中心とした回転が必要な場合でも、ジンバルロックに深刻な問題が発生します

于 2012-04-29T14:08:43.580 に答える