Javascript 3.js交叉点光线投射器

Javascript 3.js交叉点光线投射器,javascript,three.js,dhtmlx,Javascript,Three.js,Dhtmlx,我已经创建了一些几何体和一些函数来移动和检测它。 它工作得非常完美,但现在我已经将其插入到javascript UI库中,效果不好。问题在于:例如,使用raycaster,当几何体不在鼠标下时,它也会找到与几何体的交点。看起来所有的几何图形都是从原来的位置向上移动的,所以画图是假的 我在此url中做了一个示例:。您可以在控制台中看到完整的代码 正如您在实时示例中所看到的,如果在立方体上方单击,也可以拖动立方体。我认为这是因为鼠标坐标是文档坐标,而不是画布中的坐标 在我的应用程序中,我确定光线的正

我已经创建了一些几何体和一些函数来移动和检测它。 它工作得非常完美,但现在我已经将其插入到javascript UI库中,效果不好。问题在于:例如,使用raycaster,当几何体不在鼠标下时,它也会找到与几何体的交点。看起来所有的几何图形都是从原来的位置向上移动的,所以画图是假的

我在此url中做了一个示例:。您可以在控制台中看到完整的代码


正如您在实时示例中所看到的,如果在立方体上方单击,也可以拖动立方体。

我认为这是因为鼠标坐标是文档坐标,而不是画布中的坐标

在我的应用程序中,我确定光线的正确坐标,如下所示:

var mouseX = event.clientX - myCanvas.offsetLeft;
var mouseY = event.clientY - myCanvas.offsetTop;

var mouseXForRay = (mouseX / this.canvas.width) * 2 - 1;
var mouseYForRay = -(mouseY / this.canvas.height) * 2 + 1;

myCanvas是通过id canvas id获得的@Kovacsv是的,您可以通过id获取画布。我建议您将鼠标事件侦听器附加到画布,而不是文档。我按照您的代码示例更新了应用程序,但仍然不起作用。我找不到解决办法。你可以在我之前的链接上看到这个应用@是的,我明白了。对不起,我不知道怎么回事,但画布的物理效果似乎比屏幕上的效果更好。