首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ThreeJS -投影/光线投射鼠标单击到XZ平面

ThreeJS -投影/光线投射鼠标单击到XZ平面
EN

Stack Overflow用户
提问于 2017-10-13 02:38:52
回答 1查看 701关注 0票数 0

我正在尝试在ThreeJS scene的3D地图中实现离线路由。我希望用户点击一个点,然后导航一个立方体到这一点。导航工作正常,但单击点不准确。平面贴图是在XZ坐标中Y轴向上的平面。在场景中,我有轨道控制,当轨道改变相机的位置参数时,光线投射与我正在做的方式是不准确的。我需要在任何轨道状态下得到正确的XZ坐标。我得到了3D中传统光线投射的正确坐标,但正如我所说的,这不是我需要的。我尝试了ThreeJS文档中的基本方法,用this question回答,用Vector3.unproject()取消鼠标点击,但都没有成功。

Here是jsfiddle来说明我的意思。这里有一些重要的解释注释。

EN

回答 1

Stack Overflow用户

发布于 2017-10-16 02:57:03

我的代码中可能有一些bug。经过重写和一些试验,从相交平面得到坐标的方法效果很好。当然,使用已实现的轨道控制。下面是我的'onMouseClick‘函数现在的样子:

代码语言:javascript
复制
var mouse = new THREE.Vector2();
   var rect = scope.renderer.domElement.getBoundingClientRect();
    mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
    mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
  raycaster.setFromCamera(mouse, camera);
  var intersection = raycaster.intersectObject(plane);
  //example box for position visualisation
  box.position.copy(intersection[0].point);
  box.position.y = 0;

Three.js r.87

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46716704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档