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 XML数据显示为HTML一例
Dec 23 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
Sep 02 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
jQuery中html()方法用法实例
Dec 25 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
学习JavaScript设计模式之享元模式
Jan 18 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
谈谈vue中mixin的一点理解
Dec 12 Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 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
PHP中鲜为人知的10个函数
2014/02/28 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
vue cli 全面解析
2018/02/28 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
理论讲解python多进程并发编程
2018/02/09 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python制作抖音代码舞
2019/04/07 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Python tkinter三种布局实例详解
2020/01/06 Python
python实现飞行棋游戏
2020/02/05 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
木工主管岗位职责
2013/12/08 职场文书
情侣吵架检讨书
2014/02/05 职场文书
《海底世界》教学反思
2014/04/16 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
小学优秀班主任材料
2014/12/17 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python