2012-10-21 73 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