2017-06-30 4 views
2

カメラから半径と距離がわかっている私のカメラの前に中心があります。どのようにしてカメラの視野(FOV)を調整して、任意のビューポートサイズ内でカメラを球に正確に合わせることができますか?three.jsパースペクティブカメラの視野を球に合わせて調整するにはどうすればよいですか?

Image of the angle I'm looking for

This answer似ていますが、私の代わりに球に合わせてFOVを調整するには、カメラの距離

答えて

2

のFOVを調整したい、私はから角度を計算するために逆三角関数を使用するために必要な三角形は、球体までの距離と球体上の最も遠い可視点から形成されます。

Image of the triangle that will give the correct angle

// to get the fov to fit the sphere into the camera 
var vFOV = 2 * Math.asin(sphereRadius/distance); 
// get the project's aspect ratio to calculate a horizontal fov 
var aspect = this.width/this.height; 
// more trig to calculate a horizontal fov, used to fit a sphere horizontally 
var hFOV = 2 * Math.atan(Math.tan(vFOV/2)/aspect); 

これはラジアンで答えを与えます。 hFOVまたはvFOVに度数fov * (180/Math.PI)を掛けてcamera.fovに適用します。

最初は間違った三角形を使用するというトラップに遭遇しました。 Image of the wrong triangle for a cropped view

this answer states として北極 『

いけないこれを行う「球はあなたが大きな球に近い立っている場合、あなたはそのを見ることができないのと同じ理由でクリッピングされています』

関連する問題