3D オブジェクトが任意の 3D ポイントに面するように、2 つの角度 (ヨーとピッチ) を計算する必要があります。これらの回転は、最初の回転 (下の図に基づいて Z とします) の後、Y 軸もオブジェクトと共に回転するため、「オイラー」回転として知られています。
これは私が使用しているコードですが、完全には機能していません。地面 (Y = 0) にある場合、オブジェクトはポイントに面するように正しく回転しますが、ポイントを Y 方向に上に移動するとすぐに、回転が正しく見えません。
// x, y, z represent a fractional value between -[1] and [1]
// a "unit vector" of the point I need to rotate towards
yaw = Math.atan2( y, x )
pitch = Math.atan2( z, Math.sqrt( x * x + y * y ) )
点から 2 つのオイラー角を計算する方法を知っていますか?
下の写真は、私が回転する方法を示しています。これらは私が計算する必要がある角度です。(唯一の違いは、Z、Y、X ではなく、X、Y、Z の順序でオブジェクトを回転させていることです)
これが私のシステムです。
- 座標系は、x = 右、y = 下、z = さらに奥です。
- オブジェクトはデフォルトで (0,0,1) にあり、後ろ向きです
- 回転は X、Y、Z の順で、X の回転はピッチ、Y はヨー、Z はロールです。