javascript - 如何从任意点进行光线转换

标签 javascript three.js

所以这是我的问题,因为我在一个项目中使用了三个 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/

相关文章:

javascript - 三.JS光线转换性能

javascript - FirstPersonControls 从查看一个对象开始

apache - 尽管有适当的许可,跨源图像加载仍被拒绝

javascript - hello.js:是否可以动态设置提供程序的设置?

javascript - 使用 d3.js 和 topoJSON 创建非洲 map

javascript - 添加内容后如何删除内容textarea? jQuery

javascript - <select> 上的更改事件

javascript - Azure DevOps 自定义任务(在 TypeScript 中): navigating through repository with file path and retrieving XML for future processing

javascript - 在 three.js 中创建具有矩形底面的锥形几何体?

javascript - Three.js - 一次加载 JSON 模型并多次添加