查看: 1767|回复: 7

请问下如何读取屏幕上某个点的像素深度值?

[复制链接]

该用户从未签到

发表于 2014-6-24 02:28:32 | 显示全部楼层 |阅读模式
当鼠标点击的时候,能否在EventHanlder里面读取所点击的某个像素的深度值?谢谢

该用户从未签到

发表于 2014-6-24 09:49:35 | 显示全部楼层
可以,计算得到鼠标点击点的世界坐标v之后,v*M(相机)*M(投影)即可得到深度信息

该用户从未签到

 楼主| 发表于 2014-6-24 10:22:01 | 显示全部楼层
casthc 发表于 2014-6-24 09:49
可以,计算得到鼠标点击点的世界坐标v之后,v*M(相机)*M(投影)即可得到深度信息

问题是鼠标点击的是一个二维点,如何知道这个二维点所对应的像素的真正深度呢?不懂这部分,按我的理解,您说的是强行给这个二维点指定一个深度然后推出来?

该用户从未签到

 楼主| 发表于 2014-6-24 10:25:26 | 显示全部楼层
casthc 发表于 2014-6-24 09:49
可以,计算得到鼠标点击点的世界坐标v之后,v*M(相机)*M(投影)即可得到深度信息

在opengl里面我可以通过glReadPixels(x,y,1,1, GL_DEPTH_COMPONENT, GL_FLOAT, &gloablewinZ);这样来读取这个像素的深度值,但是您说的方式我没能理解,谢谢

该用户从未签到

发表于 2014-6-24 10:56:14 | 显示全部楼层
我说的是计算鼠标点击所在点的世界坐标,然后通过视图矩阵和投影矩阵计算深度,何来强制一说。。。

该用户从未签到

 楼主| 发表于 2014-6-24 21:25:31 | 显示全部楼层
casthc 发表于 2014-6-24 10:56
我说的是计算鼠标点击所在点的世界坐标,然后通过视图矩阵和投影矩阵计算深度,何来强制一说。。。

您说的我没能理解,前提是您能算出这个世界坐标(能算出来后面也都不用说了),也就是怎么就从一个没有深度的二维点转到三维点的?第三维坐标哪儿来的

该用户从未签到

发表于 2014-6-26 09:53:20 | 显示全部楼层
如果一个三维引擎连通过鼠标点击点计算出的世界坐标的能力都没有,这个引擎还有任何存在的必要。。。强大的osg对这个实现只需要三到四句代码,呵呵

该用户从未签到

发表于 2014-6-26 10:05:34 | 显示全部楼层
你可能使用opengl比较多,对osg不是很了解,所说的二维坐标其实就是一个窗口坐标(x,y),osg实现的原理就是通过逆推实现,构造窗口坐标系中的两个坐标点(x,y,0)(x,y,1)连线,其实就是鼠标点击点往屏幕内部的射线,然后计算这条射线与场景的碰撞检测,得到一系列碰撞检测结果,只需要使用第一个就是碰撞检测结果,即可得到世界坐标点,然后下一步。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表