OpenGL环境下的射线选择
2010-08-26 21:04
453 查看
用过OpenGL的人,应该都知道,OpenGL是自带拾取功能的,但用过的人应该也知道,这功能确实不好用。代码
winX = point.x;
winY = screenHeight - point.y;
//获取像素对应的前裁剪面的点坐标
bool bResult = gluUnProject(winX, winY, 0.0, modelview, projection, viewport, &posX, &posY, &posZ);
FPoint3 nearPoint;
nearPoint.x = posX; nearPoint.y = posY; nearPoint.z = posZ;
//获取像素对应的后裁剪面的点坐标
bResult = gluUnProject(winX, winY, 1.0, modelview, projection, viewport, &posX, &posY, &posZ);
FPoint3 farPoint;
farPoint.x = posX; farPoint.y = posY; farPoint.z = posZ;
第四步,计算待选择目标跟该的关系,将与射线距离最近的对象,作为选择对象。
第五步,本文绘制了分布在不同三维空间的5个点,用鼠标右键,可以进行点的选择,如果选中,点会变成黄色,鼠标左键可以随意对这些点进行旋转等。
程序源代码
winX = point.x;
winY = screenHeight - point.y;
//获取像素对应的前裁剪面的点坐标
bool bResult = gluUnProject(winX, winY, 0.0, modelview, projection, viewport, &posX, &posY, &posZ);
FPoint3 nearPoint;
nearPoint.x = posX; nearPoint.y = posY; nearPoint.z = posZ;
//获取像素对应的后裁剪面的点坐标
bResult = gluUnProject(winX, winY, 1.0, modelview, projection, viewport, &posX, &posY, &posZ);
FPoint3 farPoint;
farPoint.x = posX; farPoint.y = posY; farPoint.z = posZ;
第四步,计算待选择目标跟该的关系,将与射线距离最近的对象,作为选择对象。
第五步,本文绘制了分布在不同三维空间的5个点,用鼠标右键,可以进行点的选择,如果选中,点会变成黄色,鼠标左键可以随意对这些点进行旋转等。
程序源代码
相关文章推荐
- OpenGL: OpenGL环境下的射线选择
- opengl环境下的射线选择
- OpenGL-tutorials之射线求交选择(Picking with custom Ray-OBB function)
- OpenGL 射线选择中射线的生成过程,代码与图示参考
- OPENGL: 射线选择
- OpenGL学习进程(2)OpenGL开发环境的搭建
- 程序员:当前的行业环境下 你会选择创业吗?
- OpenGL基础图形编程 - Windows NT环境下的OpenGL
- win7 64位下在VS2012上搭建OpenGL环境
- OpenGL链接错误和环境搭配问题
- 【OpenGL】VS2010环境配置 [转]
- eclipse 搭建Android 开发环境(ADT安装和sdk下载,选择)
- 用OpenGL实现射线拣取对象
- 在Windows7 下 mingw32 开发环境中采用 glut3.7 学习 OpenGL
- 在 Eclipse或CLion 中集成 opengl 环境 (windows+mingw)
- Spring Cloud Netflix Eureka: 多网卡环境下Eureka服务注册IP选择问题
- Win7 64位 + VS2013 环境下配置新版本OpenGL方法
- win7下VS2013设置OpenGL环境
- OpenGL—射线拾取(ray pick)
- Mac下的OpenGL环境配置