私はデバイスの向き制御を使用していますが、私は難しかったいくつかの追加機能が必要です。Three.js:異なるベース方向のDeviceOrientationControlsを使用する
ユーザーがカメラを「ロック」できるようにして、カメラの向きが変わらないようにしたい。ロックを解除すると、ビューをロックした場所からカメラを回転させるようにします。ビューがロックされている間に電話機の向きが変わっても、カメラが別の向きに「ジャンプ」しないようにしたい。
ここDeviceOrientaionControls.jsの修正版のためのコードです:https://gist.github.com/BruOp/a3fb2f0854357eb1182671cafd3fae89
重要な部分はupdate
、disconnect
とreconnect
です。
私は、ユーザが「ロック」したときに見える方向(「lockedRot
」と呼ぶ)を取ってから、「ロックされていない」(unlockedRot
)デバイスの向きをとっています。
deviceToPercieved * unlockedRot = lockedRot
しかし、それは本当に働いていない:私はその後deviceToPercieved
ような四元数を見つけます。場合によっては、カメラがロックされていないときに少しだけジャンプすることもありますが、ロック解除時には完全にロックされた向きを維持できない場合もあります。
私はここで間違ったアプローチをとっているのですか、もっと基本的なものを見逃していますか?