3 回答
TA贡献1891条经验 获得超3个赞
您不需要在场景中有任何对象来执行此操作。
你已经知道相机的位置了。
使用vector.unproject( camera )你可以获得指向你想要的方向的光线。
您只需要从摄像机位置延伸该光线,直到光线尖端的z坐标为零。
你可以这样做:
var vec = new THREE.Vector3(); // create once and reuse
var pos = new THREE.Vector3(); // create once and reuse
vec.set(
( event.clientX / window.innerWidth ) * 2 - 1,
- ( event.clientY / window.innerHeight ) * 2 + 1,
0.5 );
vec.unproject( camera );
vec.sub( camera.position ).normalize();
var distance = - camera.position.z / vec.z;
pos.copy( camera.position ).add( vec.multiplyScalar( distance ) );
变量pos是3D空间中的点的位置,“鼠标下方”和平面中的位置z=0。
编辑:如果您需要“在鼠标下”和平面中的点z = targetZ,请将距离计算替换为:
var distance = ( targetZ - camera.position.z ) / vec.z;
three.js r.98
添加回答
举报