私はカメラが見ているCubeGeometryを持っていますが、カメラをズームしてキューブが完全に見えるようにします。可視のThree.js形状のカメラを調整する
私の最初の試みは、カメラ座標系へのキューブverticiesを変換することでした、
function toScreenXY(position, camera) {
var pos = position.clone();
var projScreenMat = new THREE.Matrix4();
projScreenMat.multiply(camera.projectionMatrix, camera.matrixWorldInverse);
projScreenMat.multiplyVector3(pos);
return pos;
}
function ScaleInView() {
camera.fov = 0.0;
for (var i=0; i<8; i++) {
proj2d = toScreenXY(cube.geometry.vertices[i],camera);
angle = 57.296 * Math.max(Math.atan(proj2d.x/proj2d.z), Math.atan(proj2d.y/proj2d.z));
camera.fov = Math.max(camera.fov,angle);
}
camera.updateProjectionMatrix();
}
の位置に応じて、(大きすぎて、私はこれが働くだろうと思ったが、時にはそれが小さすぎだし、他の回カメラ)。
また、正射影カメラでこれを行う必要があります。
編集:カメラは、いくつかの任意の(R、シータ、ファイ)の位置に移動したときに 私はキューブがカメラに直面している時にこれを行う方法を知っているが、私は(それを行う方法を探しています球の極座標; rは私の目的のために実際は一定です)。
私の元の質問ではっきりしていたはずです。私がしようとしていることは、カメラがキューブの周りを回転するときに自動的にズームインまたはズームアウトすることです。つまり、キューブをある角度から見ているときです。私はこれを明確にするために質問を編集しました。 – sn6uv
どのように立方体の高さを見つけることができますか?バウンディングボックスを計算することですか?カメラの初期化後にモデルのバウンディングボックスを取得します。 –