1

現在、モデルビューマトリックスを変更することにより、ビューを標準の方向に向けるメカニズムがあります。
ユーザーを現在のビューの向きから標準のビューの向きにスムーズに移行するスムーズなアニメーションを提供することで、ユーザーエクスペリエンスを向上させたいと思います->(一定の方向転換率)。
移行には、理想的には500ミリ秒未満かかる必要があります。

私はすでに以下を実装しています。

  • 行列クラス
  • クォータニオン(これから行列を抽出できます)

現在のビュー方向を抽出でき、すべての標準ビューのビュー方向がわかります。

私の質問:

  1. 移行の進行中にユーザーが操作してビューの向きを変更できるようにする必要があります。はいと思いますが、動作はわかりません。システムの状態に関係なく、アプリがフリーズしたくない。
  2. 開始時と終了時にそれぞれ加速と減速で方向の変化率を一定に保つにはどうすればよいですか。
  3. 遷移の進行中(500ミリ秒)にフレームをどのようにレンダリングする必要がありますか。std::threadを使用してC++11でこれを行うエレガントな方法はありますか。
4

1 に答える 1

2

レンダリング中にすでにユーザー入力を処理している場合は、別のスレッドは必要ありません。ユーザーが引き続き制御できるようにする場合は、ビューマトリックスを直接制御しないでください。ターゲットのビューマトリックスを使用して、各フレームの途中で現在のビューマトリックスをターゲットに向けて少しずつ動かしてください。

ただし、これによりスムーズな加速/減速が複雑になります。たとえば、小さな加速から始めて速度を上げてから、ユーザーがカメラを動かします。低速で再開しますか、それとも同じ速度で続行しますか?これは設計上の決定ですが、ビューが回転する速度を途中で変更すると、コントロールが奇妙に感じると思います。また、加速/減速がある場合、変化率は定義上一定ではないため、実際に必要なものを決定する必要があります。両方の解決策を試して、より適切なフレーズがないために「適切に感じる」かどうかを確認してください。

于 2012-09-26T10:07:02.910 に答える