我很困惑将屏幕位置转换为three.js中的世界位置。我已经查看了有关Stackoverflow问题的几个答案,但无法理解公式和/或从示例中的光线投射或鼠标测试中提取它们(我都没有这样做)。我只想根据场景/窗口的宽度将平面定位在世界位置。例如,窗口的右下角减去平面的宽度和高度,因此它在屏幕上并且可见。像这样:
//geometry and material of the plane
var geometry = new THREE.PlaneGeometry(50, 50);
var material = new THREE.MeshPhongMaterial( { color: 0xff0000 } );
//create plane
plane = new THREE.Mesh( geometry, material);
position = new THREE.Vector3();
position.x = ( window.innerWidth / 2 ) - asquare.geometry.parameters.width;
position.y = - ( window.innerHeight / 2 ) - asquare.geometry.parameters.height;
position.z = 0;
plane.position.set( position.x, position.y, position.z );
它是在正确的方向但是太远了,我想这是相机和平面z位置之间的差异,这是问题。如果我的相机处于z 500且平面处于z 0,我该如何相应地调整x和y?