Ciao,我正在努力实现这个目标:我能够知道在我的场景中双击3D对象,并设置动画相机位置以将对象置于屏幕中心。
我没有成功地尝试使用raycaster和投影仪的交互式立方体示例...
http://www.gioblu.com/GiO/web/solarsystem/index_backup
如您所见,您可以在空间中导航并使用鼠标右键和左键更改相机位置。我可以通过双击地球回到初始摄像机位置(地面在屏幕中央)。
答案 0 :(得分:0)
为什么不通过调整示例获得成功?发生了什么错误?您的意思是this示例吗? 因为raycaster和投影仪是您寻找的方式。
首先,您需要为容器上的ondblclick事件提供eventListener。在事件功能中,您可以从链接的示例中复制和粘贴:
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
}
希望这有帮助!