我看到了很多关于如何缩放相机以使对象填充屏幕的问题,但我正在尝试移动对象以填充屏幕。
我一直在使用原始照片的像素大小尝试这样的东西,这些物体已经被缩放:
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。
这是有效的,不确定为什么。。
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;