我正在使用THREE.js中的光线投影器来关注鼠标位置的对象。这是我以前做过一百万次没有问题的事情,但在我当前的设置中有一些东西不起作用。
偶尔会触发onFocus回调,但大多数时候会调用onBlur回调。就我从示例和Stack Overflow问题中所看到的,我做的事情是正确的,但似乎不是……我能看到的唯一的区别是,我的相机通常是在0.0001,0,0.0001,向外看物体,这次相机在上面,看物体。
相机位于130,325,194,对象位于0,0,0。
下面是代码片段:
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();
});
}发布于 2017-01-27 21:07:30
几个小时后,我发现当cameraNear的值非常低时,光线投影器会出现问题。
我将相机设置为接近0.000001,但当我将其增加到0.01时,它工作得很好。
https://stackoverflow.com/questions/41880475
复制相似问题