シーンの X 軸を中心にカメラを回転させようとしています。
この時点で、私のコードは次のようになります。
rotation += 0.05;
camera.position.y = Math.sin(rotation) * 500;
camera.position.z = Math.cos(rotation) * 500;
これにより、カメラが移動しますが、回転中に奇妙なことが起こり、カメラが反転するか、追跡している仮想円の一部がスキップされます。
あなたはコードのスニペットしか提供していないので、あなたが何をしているのかについていくつかの仮定を立てる必要があります.
このコード:
rotation += 0.05;
camera.position.x = 0;
camera.position.y = Math.sin(rotation) * 500;
camera.position.z = Math.cos(rotation) * 500;
camera.lookAt( scene.position ); // the origin
カメラが「正しい向き」を維持しようとするため、「反転」が発生し、「北極」を通過すると向きが急速に変わります。
このようにカメラの x 座標をずらすと、
camera.position.x = 200;
カメラの動作がより自然に見えます。
Three.js は、カメラを上に向けたままにしようとします。Z 軸に沿って 0 を渡すと、カメラの回転が「固定」されます。カメラの角度を手動で確認してリセットするだけです。
camera.lookAt( scene.position ); // the origin
if (camera.position.z < 0) {
camera.rotation.z = 0;
}
これは最善の解決策ではないと確信していますが、three.js で遊んでいるときに他の誰かがこの質問に出くわした場合 (私がやったように)、さらに一歩進んでください。