Three.js获取鼠标点击的三维坐标示例代码


Posted in Javascript onMarch 24, 2017

由于工作需要,但是对于three.js又是一窍不通,网上的资料又很少,所以上来就让我获取坐标,真是一个头两个大。好歹最后终于实现了。

既然已经是想要获取鼠标点击的三维坐标了,相信你camera对象和scene都已经有了,如果不了解的小伙伴,可以先去看一下这两个对象。这里主要说一下怎么获取到三维坐标,原理性的东西不提。上代码:

function onDocumentMouseDown( event ) {
  event.preventDefault();
  var vector = new THREE.Vector3();//三维坐标对象
  vector.set(
    ( event.clientX / window.innerWidth ) * 2 - 1,
    - ( event.clientY / window.innerHeight ) * 2 + 1,
    0.5 );
  vector.unproject( camera );
  var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
  var intersects = raycaster.intersectObjects(scene.children);
  if (intersects.length > 0) {
    var selected = intersects[0];//取第一个物体
    console.log("x坐标:"+selected.point.x);
    console.log("y坐标:"+selected.point.y);
    console.log("z坐标:"+selected.point.z);
  }

我理解的就是鼠标点击的时候屏幕收到的是二维坐标,这个二维坐标和相机连线,在视角的方向上延伸,形成一条射线,这条射线会和场景中的物体相交,接收这些相交的所有物体,第一个物体就是离相机最近的,最后一个就是离相机最远的。一般就把第一个相交的物体作为鼠标点击的物体。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 继承详解(三)
Jul 13 Javascript
javascript function调用时的参数检测常用办法
Feb 26 Javascript
JavaScript聚焦于第一个字段的代码
Oct 15 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
jquery判断浏览器类型的代码
Nov 05 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
JavaScript的Number对象的toString()方法
Dec 18 Javascript
svg动画之动态描边效果
Feb 22 Javascript
jQuery取得元素标签名称小结(附代码)
Aug 16 jQuery
Vue渲染函数详解
Sep 15 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
vue中img src 动态加载本地json的图片路径写法
Apr 25 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 #jQuery
Node.js和Express简单入门介绍
Mar 24 #Javascript
js鼠标经过tab选项卡时实现切换延迟
Mar 24 #Javascript
详解angular2实现ng2-router 路由和嵌套路由
Mar 24 #Javascript
JS实现向iframe中表单传值的方法
Mar 24 #Javascript
JS正则替换去空格的方法
Mar 24 #Javascript
原生js封装自定义滚动条
Mar 24 #Javascript
You might like
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
详解php实现页面静态化原理
2017/06/21 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
js DataSet数据源处理代码
2010/03/29 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
openlayers实现地图测距测面
2020/09/25 Javascript
详解Python中的正则表达式的用法
2015/04/09 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
Python函数式编程
2017/07/20 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
python Gabor滤波器讲解
2020/10/26 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
小小的船教学反思
2014/02/21 职场文书
晚会主持词开场白
2014/03/17 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL