Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript webgl three.js获取网格上的鼠标位置_Javascript_Cursor_Position_Three.js_Webgl - Fatal编程技术网

Javascript webgl three.js获取网格上的鼠标位置

Javascript webgl three.js获取网格上的鼠标位置,javascript,cursor,position,three.js,webgl,Javascript,Cursor,Position,Three.js,Webgl,老实说,我试图找到下面问题的解决方案,请帮助我。对不起我的英语:) 我已经创建了一张地图,添加了一个摄像头+添加了所有尺寸的摄像头控制 当我得到光标相对于网格的位置时,从不同角度看,位置总是不同的 查看jsfiddle.net中的所有代码: 我使用的是Three.js r49 此代码只负责计算位置 function onDocumentMouseMove(event) { var vector = new THREE.Vector3( ( event.clientX / window.

老实说,我试图找到下面问题的解决方案,请帮助我。对不起我的英语:)

我已经创建了一张地图,添加了一个摄像头+添加了所有尺寸的摄像头控制

当我得到光标相对于网格的位置时,从不同角度看,位置总是不同的

查看jsfiddle.net中的所有代码:

我使用的是Three.js r49

此代码只负责计算位置

function onDocumentMouseMove(event) {
    var vector = new THREE.Vector3(  ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 1);
    projector.unprojectVector( vector, camera );

    var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
    var intersect = ray.intersectObject( island );  

    if ( intersect.length > 0) { // !!
        document.getElementById('z').value = intersect[0].point.z;
        document.getElementById('x').value = intersect[0].point.x;
    }
}
我在浏览互联网时发现光标位置在地图上,但我无法将此方法移动到我的项目:(


请帮帮我!

您尝试过以下方法吗

mouseX = ( ( event.clientX - canvas.offsetLeft ) / canvas.clientWidth ) * 2 - 1;
mouseY = - ( ( event.clientY - canvas.offsetTop ) / canvas.clientHeight ) * 2 + 1;

您好!我的webgl项目已拉伸到全屏。但我测试了您的脚本,当我移动网格,并将鼠标移动到此网格的中心时,坐标与以前的坐标不同。谢谢!我找到的所有解决方案都适用于占据整个浏览器窗口的画布。仅当您的画布占据浏览器窗口的一部分。注意画布偏移是从父对象开始的本地偏移。最好使用getBoundingClientRect()而不是offsetLeft,它返回视口偏移对象。问题已解决!!!我将“z”改为三分之0.5。向量3(x,y,z)