对于一般的 3D 图形应用程序,我们通过点击窗口看到,我们可以在场景图中选择一个对象,我想知道这个屏幕在 3D 图形中选取的背后原理是什么?
问问题
57 次
1 回答
1
通常你会想要像这样实现鼠标拾取(光线拾取):
- 获取网格及其边界体积
- 像往常一样将网格及其边界体积变换到世界空间(使用其世界矩阵)
- 取鼠标光标坐标 (x, y)
- unproject ("undo projection") 使用逆视图和逆投影矩阵将 2D 屏幕空间鼠标坐标转换为世界空间中的 3D 射线
- 检查光线和网格边界体积(粗、快)和/或网格三角形(精确、慢)之间的碰撞
- 如果相交,则将对象标记为拾取
- 对所有对象重复
- 如果选择了多个对象,请选择离相机最近的对象
顺便说一句,快速谷歌搜索返回了大量关于该主题的理论信息,以及使用不同编程语言的实际实现。
于 2013-08-17T05:40:00.170 回答