Three.js 缩放后鼠标坐标不相关,是虫子吗?

Three.js 缩放后鼠标坐标不相关,是虫子吗?,three.js,Three.js,我在获取鼠标坐标方面有一个问题,缩放后它的行为不相关 我有一个我的代码的JS fiddle链接,它将显示我面临的问题,是three.JS中的bug,还是我画线的方法是错误的,请给出您的反馈 提前感谢。您的小提琴中的相机近平面为0.0001,相机远平面为1000000000 因此,在调用unprojectVector()时,代码中存在数值问题 此问题与此处描述的深度缓冲区精度问题密切相关: 将“近平面”设置为1或更大,将“远平面”设置为可以忽略的最小值,例如10000 当我放大时,three.j

我在获取鼠标坐标方面有一个问题,缩放后它的行为不相关

我有一个我的代码的JS fiddle链接,它将显示我面临的问题,是
three.JS中的bug,还是我画线的方法是错误的,请给出您的反馈


提前感谢。

您的小提琴中的相机
近平面为0.0001,相机
远平面为1000000000

因此,在调用
unprojectVector()
时,代码中存在数值问题

此问题与此处描述的深度缓冲区精度问题密切相关:

将“近平面”设置为1或更大,将“远平面”设置为可以忽略的最小值,例如10000


当我放大时,three.js r.68

线条似乎仍然画得正确。你有什么问题吗?你检查缩小了吗?放大。啊,是的,缩小会产生问题,是不是有虫子?或者有其他方法来获取鼠标坐标吗?我接受这个答案,但我觉得这只是部分输出,现在。
var elem = self.renderer.domElement,
                boundingRect = elem.getBoundingClientRect(),
                x = (e.clientX - boundingRect.left) * (elem.width / boundingRect.width),
                y = (e.clientY - boundingRect.top) * (elem.height / boundingRect.height);
var vector = new THREE.Vector3((x / $("container").width()) * 2 - 1, -(y / $("container").height()) * 2 + 1, 0.5);
var pos = projector.unprojectVector(vector, camera);

var dir = pos.clone().sub(camera.position).normalize().multiplyScalar(-1);
var distance = camera.position.z / dir.z;     
var pos1 = camera.position.clone().sub(dir.multiplyScalar(distance));