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 相关文章推荐
js螺旋动画效果的具体实例
Nov 15 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
Aug 23 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 Javascript
详解js的异步编程技术的方法
Feb 09 Javascript
js字符串倒序的实例代码
Nov 30 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
微信小程序 Storage更新详解
Jul 16 Javascript
通过layer实现可输入的模态框的例子
Sep 27 Javascript
Vue.js仿Select下拉框效果
Feb 18 Javascript
JS实现手风琴特效
Nov 08 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
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
取得一定长度的内容,处理中文
2006/12/20 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
Python中的yield浅析
2014/06/16 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
自考生自我鉴定范文
2013/10/01 职场文书
记者岗位职责
2014/01/06 职场文书
预备党员思想汇报
2014/01/08 职场文书
竞聘上岗演讲
2014/05/19 职场文书
法制宣传标语
2014/06/23 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers