では、three.js マスター向けのベクトル、行列、回転、四元数の質問です。
position(0,0,275)
with direction(0,0,-1)
、 +y up 、 .に親オブジェクトがありrotation(0,0,0)
ます。
親に関連付けられているのは、次の関係を持つ子オブジェクトです。
rel_position(.5, 0, 0)
rel_rotation(0, 0, 0)
シーンにはターゲットもあります。
position(0, 100, 0)
ピッチ、ヨー、ロールを持つ船(親)を考えてみましょう。ピッチとヨーのタレット(子)があります。タレットは、指定された回転速度 (rad/s) でターゲットを追跡する必要があります。
適切な追跡アルゴリズムを取得するために 5 日間を費やしました。私ができる最善のことは、行列を手動で更新する親と子の matrixAutoUpdate 機能を削除することです。次に、child.matrixWorld を使用して、現在の子の回転の回転行列またはクォータニオンを作成します。次に、子の位置からターゲットを見るセカンダリ Object3D を作成できます。子とセカンダリ Object3D の違いを取り、ラジアン/秒ベースでクォータニオンをスラープできます。ただし、親に回転を追加するか、ターゲットが八分円の外側で回転すると(+, +, +)
、子の回転 (またはクォータニオン) の計算がクラッシュし、乱暴な回転が発生します。
子 Object3D の追跡アルゴリズムに関する指示は、非常に高く評価されます。あなたの努力は私の次のプロジェクトで引用されます。
お時間をいただきありがとうございます!