首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >THREE.js - Intersections中的RayCasting问题是喜怒无常的,大多数时候不会返回交集

THREE.js - Intersections中的RayCasting问题是喜怒无常的,大多数时候不会返回交集
EN

Stack Overflow用户
提问于 2017-01-27 02:32:20
回答 1查看 66关注 0票数 0

我正在使用THREE.js中的光线投影器来关注鼠标位置的对象。这是我以前做过一百万次没有问题的事情,但在我当前的设置中有一些东西不起作用。

偶尔会触发onFocus回调,但大多数时候会调用onBlur回调。就我从示例和Stack Overflow问题中所看到的,我做的事情是正确的,但似乎不是……我能看到的唯一的区别是,我的相机通常是在0.0001,0,0.0001,向外看物体,这次相机在上面,看物体。

相机位于130,325,194,对象位于0,0,0。

下面是代码片段:

代码语言:javascript
复制
scene = new THREE.Scene();
scene.add(camera);

const geometry = new THREE.CubeGeometry(50, 50, 50);
const material = new THREE.MeshBasicMaterial( { color: 0xff00ff, wireframe: false } );
const mesh = new THREE.Mesh(geometry, material);
mesh.onFocus = () => {
    console.log('focus test');
}
mesh.onBlur = () => {
    console.log('blur test');
}
intersectableObjects.push(mesh);
scene.add(mesh);



const onMouseMove = ({ clientX, clientY }) => {
    const x = (clientX / window.innerWidth) * 2 - 1;
    const y = - (clientY / window.innerHeight) * 2 + 1;
    mouseVector.set(x, y);
    raycaster.setFromCamera(mouseVector, camera);
    castFocus();
}



const castFocus = () => {
    intersectableObjects.forEach((obj, i) => {
        const intersects = raycaster.intersectObject( obj, false );
        if (intersects.length) return obj.onFocus();
        obj.onBlur();
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 21:07:30

几个小时后,我发现当cameraNear的值非常低时,光线投影器会出现问题。

我将相机设置为接近0.000001,但当我将其增加到0.01时,它工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41880475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档