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