所以这是我的问题,因为我在一个项目中使用了三个 js,其中用户给出了 x y
坐标,在三个 js 场景上添加了一个点,我需要计算后面碰撞对象的位置/在这一点之前。我尝试使用 Raycaster
但我找不到一个简单的示例来说明如何将 Raycaster
与由点定义的向量一起使用:/
到目前为止,这是我的代码
var projector = new THREE.Projector();
var directionVector = new THREE.Vector3();
/* how could i use a vector defined by my origin point
var origin = new THREE.Vector3(x, y, 0 );
instead of the camera vector as used below ?
*/
projector.unprojectVector(directionVector, camera);
directionVector.sub(camera.position);
directionVector.normalize();
var ray = new THREE.Raycaster();
ray.set(camera.position,directionVector)
var intersects = ray.intersectObjects(scene.children);
if (intersects.length > 0) {
console.log(intersects);
}
最佳答案
要从任意点进行光线转换,您可以使用此模式:
var raycaster = new THREE.Raycaster(); // create once, and reuse
var origin = new THREE.Vector3(); // reuse it
var direction = new THREE.Vector3(); // reuse it
...
origin.set( x, y, z );
direction.set( 0, 0, - 1 ).normalize(); // direction vector must have unit length
raycaster.set( origin, direction );
var intersects = raycaster.intersectObjects( objects, recursiveFlag );
if ( intersects.length > 0 ) {
// your code
}
three.js r.75
关于javascript - 如何从任意点进行光线转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36640096/