c – OpenGL获取最近世界3D的3D坐标指向当前鼠标位置

前端之家收集整理的这篇文章主要介绍了c – OpenGL获取最近世界3D的3D坐标指向当前鼠标位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在OpenGL上下文中,我已经看到可以将鼠标坐标转换为3D世界坐标(例如 MFC with Opengl get 3d coordinate from 2d coordinate of mouse).但是,当我只有一组GLPoints和大量空白区域时,这不起作用:当我将鼠标悬停在空白区域时,3D坐标没有任何意义.

如何获取最近的3D点到我鼠标位置的坐标?

解决方法

认识到将2D鼠标坐标“未投影”到3D世界需要额外的信息.屏幕上的2D位置对应于沿着一条线的无限多个点,从3D中的近平面到远平面.这意味着要获得3D点,您还需要提供深度值.

gluUnProject函数是执行此操作的便捷方式,并为此winZ提供参数. 0.0将在近平面处找到3D点,1.0将在远处平面处找到它.

gluUnProject(winX,winY,winZ,model,proj,view,objX,objY,objZ);

注意:如果gluUnProject不可用,你可以很容易地用矩阵找出相同的东西. source here

当鼠标用于与3D对象交互时,通常通过从深度缓冲器采样,或使光线与场景几何体或基元(例如球体或框)相交来找到该深度值.如果目标是与点交互,则可以在每个点周围使用球体.如果你只想要一个“点在某处”的3D点,你可以决定一个深度值(在近平面上可能是0.0或在近平面和远平面之间的0.5 – 中间).

猜你在找的C&C++相关文章