Graphics 在屏幕上拾取对象时,后面的主体是什么?

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

对于一般的3D图形应用程序,我们可以通过单击窗口看到,我们可以在场景图形中选择一个对象,我想知道3D图形中这种屏幕拾取的背后原理是什么?

通常您会希望实现如下鼠标拾取(光线拾取):

  • 获取网格及其边界体积
  • 像往常一样将网格及其边界体积变换到世界空间(使用其世界矩阵)
  • 获取鼠标光标坐标(x,y)
  • 使用逆视图和逆投影矩阵将“撤消投影”二维屏幕空间鼠标坐标取消投影到世界空间中的三维光线
  • 检查光线和网格边界体积(粗略、快速)和/或网格三角形(精确、慢速)之间的碰撞
  • 如果相交,则将对象标记为已拾取
  • 对所有对象重复此操作
  • 如果拾取了多个对象,请选择“离摄影机最近”
顺便说一句,quick返回了大量关于该主题的理论信息,以及使用不同编程语言的实际实现