0

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

4

1 回答 1

1

通常你会想要像这样实现鼠标拾取(光线拾取):

  • 获取网格及其边界体积
  • 像往常一样将网格及其边界体积变换到世界空间(使用其世界矩阵)
  • 取鼠标光标坐标 (x, y)
  • unproject ("undo projection") 使用逆视图和逆投影矩阵将 2D 屏幕空间鼠标坐标转换为世界空间中的 3D 射线
  • 检查光线和网格边界体积(粗、快)和/或网格三角形(精确、慢)之间的碰撞
  • 如果相交,则将对象标记为拾取
  • 对所有对象重复
  • 如果选择了多个对象,请选择离相机最近的对象

顺便说一句,快速谷歌搜索返回了大量关于该主题的理论信息,以及使用不同编程语言的实际实现。

于 2013-08-17T05:40:00.170 回答