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 迭代网格边坍缩算法示意 边、所属三角面、相邻的点。

