我已经看到很多关于如何缩放相机以使对象填满屏幕的问题,但是我试图移动对象来填充屏幕。
我一直在使用原始照片的像素大小尝试这样的东西,并且这些对象已经缩放:
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.
答案 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;