【发布时间】:2014-11-15 09:01:24
【问题描述】:
我知道这个问题已经被问过很多次并得到了回答,但我目前对我所遵循的任何答案都没有运气(主要是这个Mouse / Canvas X, Y to Three.js World X, Y, Z)。
我已经完成了对象选择,我正在使用的代码如下
onMouseMove:function(event)
{
event.preventDefault();
var scope = Game.GSThree,
$container = $(scope.container.element),
width = $container.width(),
height = $container.height(),
vector,
ray,
intersects;
scope.mouse.x = (event.clientX - scope.container.padding.left) / width * 2 - 1;
scope.mouse.y = - (event.clientY / height) * 2 + 1;
scope.mouse.z = 0.5;
vector = new THREE.Vector3(scope.mouse.x , scope.mouse.y , scope.mouse.z);
ray = scope.projector.pickingRay(vector.clone() , scope.camera);
intersects = ray.intersectObjects(scope.tiles.children);
if(intersects.length)
{
var hovered = intersects[0].object;
scope.selectObject(hovered);
}
}
这很好用,但实际上我还需要知道当前鼠标位置的确切世界坐标。我不确定我尝试过的解决方案是否适用于我正在使用的正交相机。如果我记录scope.mouse.x 或vector.x,这些都没有给出世界坐标,ray 可以完美地找到对象,但我不知道如何获取世界中射线的当前坐标。
【问题讨论】:
-
我在这里发布了答案:stackoverflow.com/a/48068550/882912
标签: javascript three.js mouse