Ray和Plane的交点坐标

Luc*_*ann 5 three.js

我有一缕射线和一架飞机.光线与飞机相交,我想知道在哪里.我如何获得这个交叉点的世界坐标?

(我的具体情况是我将屏幕坐标取消投影到相机并创建光线.飞机是场景的基础)

var vector = new THREE.Vector3( mousePosition.x, mousePosition.y, 1 );
projector.unprojectVector( vector, camera );
var ray = new THREE.Ray(
    camera.position,
    vector.subSelf( camera.position ).normalize()
);
Run Code Online (Sandbox Code Playgroud)

Wes*_*ley 9

这是通常的模式.您可能需要调整它以适应您的特定情况.

var raycaster = new THREE.Raycaster(); // create once and reuse
var mouse = new THREE.Vector2(); // create once and reuse

...

mouse.x = ( event.clientX / renderer.domElement.clientWidth ) * 2 - 1;
mouse.y = - ( event.clientY / renderer.domElement.clientHeight ) * 2 + 1;

raycaster.setFromCamera( mouse, camera );

var intersects = raycaster.intersectObjects( objects, recursiveFlag );

if ( intersects.length > 0 ) {

    console.log( intersects[ 0 ].point; );

}
Run Code Online (Sandbox Code Playgroud)

objects是一个数组.例如,

var objects = [];

objects.push( plane_mesh );
Run Code Online (Sandbox Code Playgroud)

编辑:更新为three.js r.84