• Opencascade 选择器算法


     

    算法的阶段

    该算法包括预处理和三个主要阶段。

    使用深度优先搜索逐层遍历所有对象 。

    预处理

    计算平截头体及其主要特征的计算。

    第一阶段 - 遍历第一级BVH

    在成功构建选择平截头体之后,算法开始遍历对象级BVH树。根据分离轴定理(separating axis theorem 
    SAT)的项,测试包含轴对齐边界框的节点与选择平截头体的重叠。当遍历向下到叶节点时,这意味着已找到具有可能重叠的感知实体(sensitive entity)的候选对象。如果没有检测到这样的对象,则算法停止并且假设不需要选择任何对象。否则,它将传递到下一个阶段以处理找到的可选对象的实体。

    第二阶段 - 遍历第二级BVH

    在这个阶段,有必要确定一个对象的所有感知实体中是否存在候选者。

    首先,在此阶段,算法检查是否存在对当前对象应用的任何变换。如果它有自己的位置,那么相应变换的平截头体将用于进一步的计算。在下一步骤,访问给定对象的第二级BVH树的节点以搜索重叠叶。如果没有找到这样的叶子,则算法返回到第二阶段。否则,它会通过执行以下检查来开始处理找到的实体:

    • 激活检查 - 当前实体可能处于非活动状态,因为它属于未激活选择器;
    • 公差检查 - 当前选择平截头体可能太大而无法进一步检查,因为它始终以所有激活实体中的最大公差构建。因此,在该步骤中,可以缩放平截头体。

    在这些检查之后,算法进入最后阶段。

    第三阶段 - 特定敏感实体的重叠或包含测试

    如果实体是原子的,则执行简单的SAT测试。在复杂实体的情况下,遍历第三级BVH树。分析匹配的敏感实体的定量特征(如深度,到几何中心的距离)并应用剪裁平面(如果它们已经设置)。存储检测结果并且算法返回到第二阶段。

  • 相关阅读:
    学校的破网,你别再掉了
    PhotoShop SDK的获取
    我的C++博客开张了
    一个新的嵌入式门户
    试用Bloglines.com
    PhotoShop的插件体系
    VB6 to VB.NET Migration Guide Community Preview #4
    看看Microsoft都买了些什么
    Borland CTO辞职
    PhotoShop插件的开发
  • 原文地址:https://www.cnblogs.com/2018shawn/p/10923010.html
Copyright © 2020-2023  润新知