2

私はこの問題を解決するのに苦労しています。

私のシーンでは、オブジェクトの質量の中心を見るカメラがあります。オブジェクトを取り囲む目に見えない球(一定の半径)に沿って、特定のビュー(正面図、背面図など)にカメラの位置を設定できるボタンがいくつかあります。

ボタンをクリックすると、カメラが球面に沿って開始位置から終了位置まで移動するようにします。カメラが移動するとき、オブジェクトの重心を固定し続けたいと思います。

これを達成する方法について手がかりを持っている人はいますか?

手伝ってくれてありがとう!

4

1 に答える 1

3

基本的な三角法を使用することに満足している/好む場合は、初期化セクションでこれを行うことができます。

var cameraAngle = 0;
var orbitRange = 100;
var orbitSpeed = 2 * Math.PI/180;
var desiredAngle = 90 * Math.PI/180;
...
camera.position.set(orbitRange,0,0);
camera.lookAt(myObject.position);

次に、レンダリング/アニメーションセクションでこれを行うことができます:

if (cameraAngle == desiredAngle) { orbitSpeed = 0; }
else {
  cameraAngle += orbitSpeed;
  camera.position.x = Math.cos(cameraAngle) * orbitRange;
  camera.position.y = Math.sin(cameraAngle) * orbitRange;
}

もちろん、ボタンを変更するとdesiredAngle(おそらく 0°、90°、180°、または 270°)、正しい平面を中心に回転する必要があります (上記の XY 平面を中心に回転しています)。orbitRangeそしてorbitSpeedあなたが幸せになるまで。

orbitSpeedまた、軌道パスに沿って移動する際に、さまざまな速度で速度を上げたり下げたりしcameraAngleて、よりスムーズな乗り心地を実現することもできます。このプロセスは「トゥイーン」と呼ばれ、詳細を知りたい場合は「トゥイーン」または「トゥイーン」で検索できます。Three.js はトゥイーンをサポートしていると思いますが、調べたことはありません。

また、カメラのfarプロパティをより大きく設定することを忘れorbitRadiusないでください。そうしないと、オブジェクトの前半分しか表示されず、内容によっては奇妙に見える場合があります。

于 2013-06-22T05:35:26.400 に答える