2012-10-21 70 views
1

我想用three.js建立一个星系视图,除了一部分外,它工作得很好。 当我点击球体时,点并不总是正确的。 这里是我使用的射线代码: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/

任何帮助表示赞赏的一个简单的工作版本!

回答

0

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

+0

我想我必须使用较小的数字 – Xarun