opengl es的射线拾取
2019独角兽企业重金招聘Python工程师标准>>>
在opengl中关于拾取有封装好的选择模式,名字栈,命中记录,实现拾取的功能,相对容易一些。但是到了opengl es里面就比较倒霉了,因为opengl es是opengl的简化版,很多功能都被去掉了。没办法,要想实现拾取的功能只有自己动手。目前比较成熟而且相对较简单的拾取方案是:射线相交拾取。
先介绍一下射线相交拾取的原理:
(1):将用户在屏幕上点击的坐标(X, Y),转换为归一化坐标(Xn, Yn)
(2):考虑到透视投影的可视锥有一个近平面和一个远平面,所以可以将刚才的归一化坐标转换为两个归一化坐标,一个的z值在近平面上,z值为-1;另一个的z值在远平面上,z值为1
(3):计算出透视投影的逆矩阵,用这个逆矩阵分别乘以两个归一化坐标,相乘之后得到的值分别除以w,也就是做透视除法,这样就得到了在虚拟空间中的两个点。
(4):用上一步计算出的虚拟空间中的两个点,生成一条射线。
(5):用这条射线和其他的物体做相交检测。为了便于检测,可以将要检测的物体当成一个球体,这样射线和球体之间是否相交就比较容易检测了。
原本想自己在这篇博客中,将所有的步骤都讲的详细透彻,但是,真正动手才发现自己水平不够。既然这样就向大家推荐一处好的资料吧,《opengl es应用开发实践指南 android卷》的第九章,讲的很精彩。
转载于:https://my.oschina.net/u/1273706/blog/829425
opengl es的射线拾取相关推荐
- OPENGL ES 对象的拾取
时间:19:51 2010-12-14 用户问题的说明 响应鼠标操作,其当中有一个非常重要的知识:使用鼠标点取,达到对三维模型对象的捕捉. 对象的拾取,这是3D当中的一个专业术语.也就是在二维屏幕当中 ...
- Android OpenGL射线拾取手势旋转(二)
上回分解-_-!,Android OpenGL射线拾取&手势旋转(一). 3)Renderer:RayPickRenderer.java OpenGL渲染器,比较多的东西都在这里面了. pub ...
- [OpenGL]射线拾取RayPicking---(1)生成射线
Vries的教程是我看过的最好的可编程管线OpenGL教程,没有之一.但没有讲关于拾取(Picking)的章节,而这个功能的确很重要,就自己试着写写看了. 这节有三个很重要的参考网址,基本可以算照抄了 ...
- OpenGL ES应用开发实践指南:iOS卷
<OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...
- 【OpenGL ES】凸镜贴图
1 前言 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,同理,也可以将圆形上的纹理映射到凸镜的球形曲面上.如下图,最左边的竖条是原图片的截面(纹理坐标),最右边的竖条是变换后的顶点模型 ...
- OpenGL ES 2.0 for Android教程(六):进入第三维
OpenGL ES 2 第六章:进入第三维 文章传送门 OpenGL ES 2.0 for Android教程(一) OpenGL ES 2.0 for Android教程(二) OpenGL ES ...
- OpenGL ES 2.0 for Android教程(九):添加触摸反馈
OpenGL ES 2 第九章:添加触摸反馈 文章传送门 OpenGL ES 2.0 for Android教程(一) OpenGL ES 2.0 for Android教程(二) OpenGL ES ...
- OpenGL.ES在Android上的简单实践:10-曲棍球(拖动物体、碰撞测试)
OpenGL.ES在Android上的简单实践:10-曲棍球(拖动物体.碰撞测试) 1.让木槌跟随手指移动 继续上一篇文章9的内容.既然可以测试木槌是否被触碰了,我们将继续努力下去:当我们来回拖动木槌 ...
- Android OpenGL(二) 学习《Android 3D 游戏开发技术宝典 -openGL ES 2.0》
note: 1 1-4章相关基础 2 5-8章重点 3 9-15章重点的进阶 4 16-19章相关技术:物理,传感器,事件交互. 5 20-22章 实例. 第一章 基础环境 第二章 游戏相关开发基础 ...
最新文章
- 让静态对象来维护你的数据
- 设备履历管理系统php开源,航空机载设备履历本管理制作系统诞生记
- gdb调试多进程和多线程命令 .
- Struts2学习笔记(六):Struts2的处理流程与Action的管理方式
- AI和物联网在零售环境中的长期应用
- 2019年嵌入式开发系统详细分析告诉你是否还值得去学习
- 邮箱批量登录接验证码_记一次莫名的需求(临时邮箱|企业邮箱)
- SPARK全栈 全流程 大数据实战 之 技术选型篇
- linux nslookup 解析不到dns_涉及DNS的简单操作,只看这一篇就够了
- DWR入门教程(http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html)
- 入门 ggplot2 的图形语法
- linux命令 语法 pdf,Linux命令详解词典pdf
- python遍历文件夹内文件并检索文件中的中文内容
- 金山实习周记(2)——沟通
- Monkey Test 命令使用
- 15 个提高 Google 搜索效率的小技巧
- outlook发邮件的服务器,outlook中要求写接收、发送邮件的服务器,应该怎样写?...
- 数字化时代,如何赋能人才
- linux如何用命令进入u盘,linux 下如何打开u盘
- 新型博客网站的运营要素分析
热门文章
- linux获取ip地址的接口,获取Linux上接口的IP地址
- matlab 读取mov文件格式,VideoReader 支持的文件格式 - MATLAB VideoReader.getFileFormats
- MathWorks 中国...
- java sca视频教程_如何进入Java SCA软件的开发
- antd 怎么用ajax,react+dva+antd接口调用方式
- android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出
- oracle rman备份整库,RMAN备份恢复整个库
- php mysql 图像_将图像插入MySQL并使用PHP检索图像
- 素质教育新模式:后疫情时代教育 OMO 模式如何切实落地?
- link linux 跨设备,Linux中的两种link方式
- bootstrap 栅栏布局中 col-xs-*、col-sm-*、col-md-*、col-lg-* 区别及使用方法