2013-07-31 31 views
0

Ciao,我试图做到这一点:我将能够知道在我的场景中双击3D对象,并动画摄像头的位置,使对象在屏幕中心。three.js得到双击3d对象

我尝试没有成功,以适应使用raycaster和投影机的互动立方体例子...

http://www.gioblu.com/GiO/web/solarsystem/index_backup

正如你可以看到你可以在太空中导航和更改相机的位置,左右鼠标按钮。双击地球,我就可以回到初始相机位置(屏幕中心的地球)。

回答

0

为什么你没有通过适应例子成功?发生什么错误?你的意思是this的例子? 因为raycaster和投影仪是你正在寻找的方式。

首先,您需要一个eventListener,用于容器上的ondblclick事件。在活动功能,您可以从链接的例子复制&粘贴:

1)保存鼠标坐标

mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
mouse.y = - (event.clientY/window.innerHeight) * 2 + 1; 

2)项目通过摄像机坐标到世界体系,并创建一个射线

var vector = new THREE.Vector3(mouse.x, mouse.y, 1); 
projector.unprojectVector(vector, camera); 
raycaster.set(camera.position, vector.sub(camera.position).normalize()); 

3)检查双击元素是否是你的星球

var intersects = raycaster.intersectObject("your_planet"); 
if (intersects.length > 0) { 
    reset your camera 
} 

希望这有助于!