オブジェクトを回転させながらカーブに沿って移動する


11

オブジェクトを曲線に沿っ移動したいのですが。カーブの特定のポイントで、オブジェクトの速度を変更して、オブジェクトをその軸に沿って回転させます。

飛行機が目的地に飛んでいるところを想像してみてください。それはそれが従わなければならないその道を持っている、それに加えて、それはその速度と向きをずっと調整します(ヘディング、髄、土手)。

私は親切に求めることができるスタートアップ情報、次の:

  • どのような種類の曲線を滑らかにオブジェクトを補間するために使用します
  • どのような信頼性の高い、私はoject移動の速度を制御することができ、補間、およびシームレスになり、曲線の結び目の間の遷移のために使用します
  • どのような情報をする必要があり、エクスポート 3Dオーサリングアプリケーションから
  • これには四元数slerp()を使用する必要がありますか?

このトピックを効率的カバーしているについて知っているなら、それは最も効果的です。ありがとうございました。

回答:


7

モーションカーブについては、エルミートカーブの使用をお勧めします。開始点/速度と終了点/速度を指定するだけで、これら2つの間に素敵で滑らかな曲線が作成されます。最初のポイントのペアの終了ポイント/速度を次のポイントのペアの開始ポイント/速度として使用すると、シームレスで長く曲がりくねった曲線ができます。

これは、速度を管理するための要件を完全に処理します。選択した速度のある時点のリストを提供し、シームレスに補間された位置と速度の値を提供します。これを使いたい場合、3Dオーサリングアプリケーションから抽出する必要があるのは、希望するパス内のポイントと速度だけです。おそらくユーザー入力に基づいて、実行時にそれらを生成することもできます。

方向を調整するには、いくつかのオプションがあります。飛行機が常にその方向を向いている場合(これは理にかなっているケースです)、エルミート曲線から補間された速度ベクトルを使用して、船が向いている場所を見つけることができます。アップベクトルがわかっている場合(平面内を移動している場合、またはどちらの方向を上にする必要があるかがわかっている場合)、3番目の軸をcross(front、up)で計算し、そこに方向を設定できます。

平面がパスの前方向から時々外れるように、何らかの「ゆらぎ」方向が必要な場合は、前方向を目的の方向として使用し、現在の方向と目的の方向の間で連続的に1ステップslerpを実行できます。

パスとは何の関係もないカスタム方向が必要な場合は、もちろんこれに方向四元数のリストを指定できます。次に、ポイントは(ポイント、速度、四元数)になります。次に、2つの連続するクォータニオン間でスラープを使用して、途中で方向を設定できます。slerpは線形補間法であることを忘れないでください。ただし、通常は問題ありません。縫い目で回転が十分にスムーズでないことがわかった場合は、セクション7で説明さているように、ベジエ曲線でクォータニオンのリストを補間してみることができます。

以下は、始めるのに役立ついくつかのソースコードです。クォータニオン(分隊、ベジエなど)のリスト用の滑らかな補間手法がいくつかあります。

ご不明な点がございましたら、お気軽にお問い合わせください。


+1-ありがとう、あなたの答えは基本的にすべてをカバーしています。それは私が尋ねたすべての質問に答えます、そして、あなたは研究するためにさらなる材料を提供します。さて、最初は十分な資料があります。したがって、私はこれをAccepted Answerとしてマークしない理由はないと思います。
Bunkai.Satori

@ Bunkai.Satoriよろしくお願いいたします:)最後に、あなたが何を作成するか見てみたいです。
Gazihan Alankus、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.