我知道這個問題已被問及許多次,並回答,但我目前沒有任何運氣與任何我已遵循的答案(主要是這一Mouse/Canvas X, Y to Three.js World X, Y, Z)。Three.js世界座標從鼠標位置與Orthographic相機
我已經得到了對象選擇做和工作我使用的代碼如下
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
發現物體完美,但我不知道如何獲得當前世界上射線的座標。
我在這裏發佈了一個答案:https://stackoverflow.com/a/48068550/882912 – KTCO 2018-01-02 22:23:56