【问题标题】:Three.js ray intersect incorrect三.js 射线相交不正确
【发布时间】:2012-10-30 16:19:44
【问题描述】:

我正在尝试使用 three.js 构建一个星系视图,除了一个部分外,它工作得非常好。 当我单击一个球体时,该点并不总是正确的。 这是我用于射线的代码:

mouseX = 2 * (c.pageX / SCREEN_WIDTH) - 1;
mouseY = 2 * -(c.pageY / SCREEN_HEIGHT) + 1;
c = new THREE.Vector3(mouseX, mouseY, 0.5);
c = projector.unprojectVector(c, camera);
ray = new THREE.Ray(camera.position, c.subSelf(camera.position).normalize());
c = ray.intersectObjects(scene.children);
0 < c.length && (sphere.id == c[0].object.id ? 1 < c.length && (i(c[1].object), debug(c[1].object.id), sphere.position = c[1].point) : (i(c[0].object), sphere.position = c[0].point))

如果对象距离场景中心不远,这会起作用,
但是我不会让每个行星都靠近中心,这就是我遇到问题的地方。我离中心越远,错误似乎就越大。

这是代码的简单工作版本
http://jsfiddle.net/PHKTL/

感谢任何帮助!

【问题讨论】:

    标签: three.js


    【解决方案1】:

    问题在于,因为您使用了如此大的数字,而交集代码使用的是从 0 到 1 的数字,这会在计算中产生如此大的错误。

    【讨论】:

    • 我想我必须使用较小的数字
    猜你喜欢
    • 2014-01-30
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多