1

真的一直在为这个苦苦挣扎。我有一个使用 Three.js 的 CSS3D 渲染器的程序,我试图以 div 的像素(包含单个图像)为单位获得投影的“真实”屏幕宽度。

我尝试在图像上使用 getBoundingClientRect() ,但从该函数返回的宽度和高度是错误的。我假设是由于视角问题。

我也尝试过这种方法,它给了我一个准确的中心坐标,来自 mrdoob 的这篇文章:https ://stackoverflow.com/a/11605007

var width = window.innerWidth, height = window.innerHeight;
var widthHalf = width / 2, heightHalf = height / 2;

var projector = new THREE.Projector();
var vector = projector.projectVector( object.matrixWorld.getPosition().clone(), this.camera );

vector.x = ( vector.x * widthHalf ) + widthHalf;
vector.y = -( vector.y * heightHalf ) + heightHalf;

不幸的是,我找到的所有获取对象的顶部、左角或任何角的方法都使用 CSS3DObject 不使用的几何对象(即获取角顶点的向量并投影这些向量参考:https://stackoverflow。 com/a/14044103/2009076)。

任何人都知道如何做到这一点?简而言之,我只想在 Three.js CSS3D 场景中获得一个 div 的真实屏幕尺寸(紧密地围绕它的 img)。最后,我想检测相机变焦是否使图像大于其原始尺寸(以像素为单位)。

谢谢!

4

0 回答 0