これは、四元数の回転からの変換に関連していると思います。次の例が正しいかどうかは確かではありませんが、解決策を見つけるのに役立つかもしれません。
const euler = new THREE.Euler();
const rotation = euler.setFromQuaternion(camera.quaternion);
const radians = rotation.z > 0
? rotation.z
: (2 * Math.PI) + rotation.z;
const degrees = THREE.Math.radToDeg(radians);
これは、0から360までの値を有するdegrees
になるが、カメラが回転する角度の値は、一貫性のない速度で変化するように見えます。ここで
は、この動作を示しcodepenです:
http://codepen.io/kevanstannard/pen/NdOvoO/
私は、次の質問からいくつかの詳細を使用:に基づいて
three.js perspectivecamera current angle in degrees
編集#1
@WestLangleyからの答えは私の答えですオベが正しくないので、ちょうど改善を文書化するために、ここでは西のソリューションに基づいていくつかのコードです:
// Set Y to be the heading of the camera
camera.rotation.order = 'YXZ';
そして
const heading = camera.rotation.y;
const radians = heading > 0 ? heading : (2 * Math.PI) + heading;
const degrees = THREE.Math.radToDeg(radians);
、より良いcodepen
http://codepen.io/kevanstannard/pen/YNJgXd
'camera.rotation.order = 'YXZ' を設定してみてください;'と行動はあなたに、より直感的であるかどうかを確認します。あなたのユースケースに応じて、PIからPIまで実行できます。 – WestLangley
ありがとう@WestLangley、それは必要なすべてだったことが判明!多くのありがとう(y) –
私はそれ以上の説明と答えを掲示した。 – WestLangley