0

在检测鼠标光标附近的对象以捕捉到(在 3d 视图中)的问题中,我们使用了拾取射线方法(它基本上形成光标直接邻域的 3d 区域,然后检测该区域中存在的对象)。

我想知道这是否是解决任务的唯一方法。例如,我可以使用视图矩阵获取对象在视图空间中的 2D 坐标,然后搜索光标附近的任何对象吗?

我对拾取射线方法不满意,因为它相对昂贵,所以问题本质上是关于任何基于空间变换的方法通常是否会更快。我是 3D 编程的新手,所以请给我一个深入研究的方向。

4

1 回答 1

1

您可以通过在对象周围形成嵌套边界框的层次结构并检查光线与边界框的交叉点来加速光线拾取过程。这样,您就可以省去大量的交叉测试。

还有一个替代方案,利用可用的渲染引擎:您可以在屏幕外平面上渲染相同的视图,而不是使用普通渲染属性渲染到屏幕,使用平面阴影并为每个对象设置不同的颜色。您将获得一个对象映射,该映射会立即告诉您任何像素的对象 ID。

于 2014-01-22T09:28:26.500 回答