选择对象
一般来说,大多数用户输入,包括按钮和鼠标事件,将由窗口系统和你的应用程序处理,根本不涉及HOOPS/3DGS。这条规则的主要例外是当你想在HOOPS/3DGS数据库中选择对象时。这也被称为选取或命中测试。HOOPS/3DGS提供了一个例行程序,称为::Compute_Selection,其参数定义了空间中的射线/矩形/体积。HOOPS/3DGS将计算哪些物体与选择射线/体积相交,并将它们返回给用户。
Compute_Selection的用法
下面的图片显示了一个选择事件的路径,输入开始时是一个来自窗口系统的位置事件。::Compute_Selection对数据库中的3D对象进行命中测试,并将项目放在一个队列中,以便它们可以一次被检查。
下图说明了带有窗口系统的选择过程。
::Compute_Selection及其变体所使用的默认选择算法不会忽略被其他物体遮挡的物体,但会返回与选择射线/体积相交的物体列表。它也会将物体从后往前排序(在视点空间中),因此在视点中最重要的物体会在列表的顶部。如果希望只选择没有被其他物体遮挡的物体,那么可以指示默认的选择算法对所选项目进行 "可视化 "的、基于帧缓冲区的后处理,以从选择列表中移除被遮挡的项目。这里将讨论这个问题。
当几何体是可选择的(除了窗口),并且不止一个可选择的对象在选择距离所定义的圆内,你可以通过使用::Find_Related_Selection命