Three.js计算填充屏幕所需的物体距离

时间:2014-08-31 07:40:05

标签: math 3d three.js

我已经看到很多关于如何缩放相机以使对象填满屏幕的问题,但是我试图移动对象来填充屏幕。

我一直在使用原始照片的像素大小尝试这样的东西,并且这些对象已经缩放:

    var dist = object.originalSize.height > $(window).height() 
            || object.originalSize.width  >  $(window).width()
            ? ( $(window).height() / object.originalSize.height ) * 100 
            : 10;

    var pLocal = new THREE.Vector3( 0, 0, -dist);
    var target = pLocal.applyMatrix4( camera.matrixWorld );
    var tweenMove = new TWEEN.Tween(object.position).to(target, 1500).easing(TWEEN.Easing.Cubic.InOut);

要想出一个向量来移动对象,但是,我无法让对象填满屏幕。我需要计算一个对象需要多远才能填满屏幕的数学知识?

对象是一个具有不同子节点的Object3D,具体取决于它的类型。

我知道原始照片尺寸(object.originalSize.height),我知道已经按比例放大以适应2的幂的几何体。

感谢任何线索如何计算相机所需的距离,以确保物体适合屏幕范围。

我也知道该项目的边界框,即1024到128.

1 个答案:

答案 0 :(得分:0)

这有效,不知道为什么..

    var vFOV = camera.fov * Math.PI / 180; 
    var ratio = 2 * Math.tan( vFOV / 2 );
    var screen = ratio * (window.innerWidth / window.innerHeight) ; 
    var size = getCompoundBoundingBox( object ).max.y;
    var dist = (size/screen) / 4;