Graphics 在屏幕上拾取对象时,后面的主体是什么?
对于一般的3D图形应用程序,我们可以通过单击窗口看到,我们可以在场景图形中选择一个对象,我想知道3D图形中这种屏幕拾取的背后原理是什么?通常您会希望实现如下鼠标拾取(光线拾取):Graphics 在屏幕上拾取对象时,后面的主体是什么?,graphics,3d,Graphics,3d,对于一般的3D图形应用程序,我们可以通过单击窗口看到,我们可以在场景图形中选择一个对象,我想知道3D图形中这种屏幕拾取的背后原理是什么?通常您会希望实现如下鼠标拾取(光线拾取): 获取网格及其边界体积 像往常一样将网格及其边界体积变换到世界空间(使用其世界矩阵) 获取鼠标光标坐标(x,y) 使用逆视图和逆投影矩阵将“撤消投影”二维屏幕空间鼠标坐标取消投影到世界空间中的三维光线 检查光线和网格边界体积(粗略、快速)和/或网格三角形(精确、慢速)之间的碰撞 如果相交,则将对象标记为已拾取 对所有对
- 获取网格及其边界体积
- 像往常一样将网格及其边界体积变换到世界空间(使用其世界矩阵)
- 获取鼠标光标坐标(x,y)
- 使用逆视图和逆投影矩阵将“撤消投影”二维屏幕空间鼠标坐标取消投影到世界空间中的三维光线
- 检查光线和网格边界体积(粗略、快速)和/或网格三角形(精确、慢速)之间的碰撞
- 如果相交,则将对象标记为已拾取
- 对所有对象重复此操作
- 如果拾取了多个对象,请选择“离摄影机最近”