私はOpenGLES2.0用の3Dアプリを書いています。このアプリでは、ユーザーがパスを設定し、いくつかの地形を飛行します。基本的にはレール上のフライトシミュレーターです。
パスは、スプラインから作成された一連のポイントによって定義されます。タイムスライスごとに、補間を使用して現在の位置を進めます。つまり、p0からp1の間で補間し、p1に到達したら、p1とp2の間で補間し、最後にpNからp0に戻ります。
gluLookAtに類似したものでビューマトリックスを作成します。アイコーディネイトは現在の位置であり、ルックアットはパスに沿った次の位置であり、上(0、0、1)です。そのため、カメラは次に飛んでいる場所を向いており、Zは空を向いています。
しかし今、私は向きを変えながら「バンク」したいと思っています。つまり、アップベクトルは必ずしも直接真っ直ぐではなく、回転率に基づいて変化します。現在の方向と最後の方向がわかっているので、バンクをある程度インクリメントまたはデクリメントできます。内積は回転角度を教えてくれ、外積は左か右かを教えてくれます。バンク角を維持し、-/ + 70度の範囲内に維持して、適切にインクリメントまたはデクリメントすることができました。
これは正しいアプローチだと思いますが、そうでないことを見つけるために長い時間をかけて実装することができました。
私は正しい方向に進んでいますか?私がやろうとしていることを示すサンプルはありますか?