3 回答

TA貢獻(xiàn)1891條經(jīng)驗 獲得超3個贊
您不需要在場景中有任何對象來執(zhí)行此操作。
你已經(jīng)知道相機的位置了。
使用vector.unproject( camera )你可以獲得指向你想要的方向的光線。
您只需要從攝像機位置延伸該光線,直到光線尖端的z坐標(biāo)為零。
你可以這樣做:
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空間中的點的位置,“鼠標(biāo)下方”和平面中的位置z=0。
編輯:如果您需要“在鼠標(biāo)下”和平面中的點z = targetZ,請將距離計算替換為:
var distance = ( targetZ - camera.position.z ) / vec.z;
three.js r.98
添加回答
舉報