Page 37 - 电力与能源2023年第二期
P. 37

陶立欣,等:适用于虚拟现实电站内电气设备模型的网格简化算法                                      131

                这对,并更新涉及的所有有效对的开销。                                   图 1 中,边 uv 是要坍缩移除掉的边,三角面 A
                    剩下的唯一问题是如何从构造误差度量 Δ 时                        和 B 是边邻接的面,也要随之移除,同时将 u 点和
                计算初始 Q 矩阵。                                       v 点合并为 u 点。之后将 u 点和 v 点的其他相邻点
                    此算法特点在于会在模型曲率变化小的区域                          相连。最后删除 v 点,称 u 点的坍缩移除目标就是

                做出简化。算法的优点在于效率、质量、通用,但                           v 点。对于一个模型来说,经过一次坍缩计算,模
                其缺点也很明显,误差会随着折叠次数累加,导致                           型的网格信息中就会少 1 个顶点、2 个三角面和 3
                错误的边折叠。                                          条边;再继续不断的坍缩计算来得到预期的精简
                    为了保留模型集合的几何信息,GarLand 在                      面数。当顶点 u 和顶点 v 的距离很近,无限趋近于

                原有算法上进行了拓展,提出了对于有颜色和纹                            零时,可以认为这两点是一个点;当两点的距离很
                                                                 大时,可以认为这两点最好不会合并。因此将两
                理的模型的二次误差测度简化算法。将之前三维
                                                                 点的距离作为判断是否需要移除的最重要因素之
                的坐标扩展到带有颜色信息的六维坐标上,再将
                                                                 一,但只用距离判定还不是很准确。如果在一个
                扩展的坐标类推到 QEM 算法中。这种算法处理
                                                                 平面上,两个点的距离即使很大也可以考虑将两
                连续的纹理和属性比较好,但对于不连续的属性
                                                                 点合并。因此,还需要考虑和这两点相邻的平面
                信息,会得到错误结果,导致简化效果不理想。
                                                                 是否平滑,当这两点相邻面的夹角过于“尖锐”时,
                3.3 迭代网格边坍缩算法
                                                                 显然无法合并。这里的“尖锐”与否,可以用面和
                    迭代网格边坍缩算法是一种得到了广泛应用的
                                                                 面的点积表示,面的点积=1−面法线的点积。最
                算法。其基本原理是根据网格边的收缩代价进行排
                                                                 后得出坍缩代价计算公式:
                序,收缩代价通常是由于收缩网格边而引入到模型
                                                                                              {
                中的误差量。在每一次迭代计算时,需要压缩代价                               cost(v,u) =|| v - u||× max  min {(1 -
                                                                                           f ∈ T v  n ∈ T vu
                最低的边并更新相邻边的代价。不同的基于收缩的
                                                                         f. normal. n. normal )÷ 2} }    (1)
                方法之间的主要区别就是用于排序网格边的误差度
                                                                             u
                                                                 式中 cost(v,) ——将 v塌陷到 u的代价;T v——集
                量方法。这些算法通常能产生良好的结果,尽管不
                                                                 合了所有含有顶点 v 的三角形;T vu——既包含顶点
                同的方法之间在运行时间上有很大的差异。迭代网
                                                                 u又包含顶点 v的三角形的集合;v−u||指边 uv的长
                                                                                             |
                                                                                            |
                格边坍缩算法能自然地产生多分辨率模型,这也是
                                                                 度,模型精简过程中,会优先考虑将很短的边移除;
                该算法特别有吸引力的地方之一。
                                                                     {
                                                                                                    }
                                                                 max  min {(1 - f.normal.n.normal )÷ 2} ——指 v
                4 电气设备模型简化                                       f ∈ T u  n ∈ T uv
                                                                 点周围面的曲面率变化值,曲面率的大小表示 v 点
                4.1 模型简化过程
                                                                 的区域平坦程度,该数值越小的点,其周围的区域面
                4.1.1 简化算法处理
                                                                 越 平 整 ,考 虑 先 移 除 曲 面 率 变 化 小 的 点 ;
                    经过对网格简化算法的研究与分析,本文选
                                                                 f.normal.n.normal——包含 u 面的法线和同时包含
                择用迭代网格边坍缩算法作为模型简化的基础算
                                                                 u,v 面法线的点积。
                法。这是一种边删除的简化算法,将两个顶点合
                                                                     通过式(1)可知,移除 u,v 之间的哪一点,由
                并成其中一个顶点,如图 1 所示。
                                                                 它们各自坍缩到彼此的代价决定。将所有的点都
                                                                 计算出坍缩每一个相邻点的代价,然后排序,最终
                                                                 选择代价最小的点,就是要移除的点。
                                                                     模型简化算法步骤如图 2 所示。
                                                                    (1)收集所有顶点信息:顶点位置、所属三角
                           图 1 迭代网格边坍缩算法示意                       边、所属三角面、相邻的点。
   32   33   34   35   36   37   38   39   40   41   42