浙江大学学报(工学版), 2024, 58(2): 257-267 doi: 10.3785/j.issn.1008-973X.2024.02.004

计算机技术、通信技术

精度可控的边界表示模型网格生成

曾铮,, 贾晓红,, 辛士庆, 严冬明

1. 中国科学院数学与系统科学研究院 系统科学研究所,北京 100190

2. 山东大学 计算机科学与技术学院,山东 青岛 250100

3. 中国科学院自动化研究所 多模态人工智能系统全国重点实验室,北京 100190

4. 清华大学 水沙科学与水利水电工程国家重点实验室,北京 100084

Precision controllable mesh generation for boundary representation model

ZENG Zheng,, JIA Xiaohong,, XIN Shiqing, YAN Dongming

1. Institute of Systems Science, Academy of Mathematics and Systems Science, Chinese Academy of Sciences, Beijing 100190, China

2. School of Computer Science and Technology, Shandong University, Qingdao 250100, China

3. State Key Laboratory of Multimodal Artificial Intelligence Systems, Institute of Automation, Chinese Academy of Sciences, Beijing 100190, China

4. State Key Laboratory of Hydroscience and Engineering, Tsinghua University, Beijing 100084, China

通讯作者: 贾晓红,女,研究员. orcid.org/0000−0001−6206−3216. E-mail:xhjia@amss.ac.cn

收稿日期: 2023-07-21  

基金资助: 国家重点研发计划资助项目(2020YFB1708900); 国家自然科学基金委优秀青年基金资助项目(12022117); 国家自然基金资助项目(2022117, 62272277, 62172415); 中国科学院稳定支持基础研究领域青年团队计划资助项目(YSBR-034); 清华大学水沙科学与水利水电工程国家重点实验室开放基金资助项目(sklhse-2022-D-04).

Received: 2023-07-21  

Fund supported: 国家重点研发计划资助项目(2020YFB1708900);国家自然科学基金委优秀青年基金资助项目(12022117);国家自然基金资助项目(2022117,62272277,62172415);中国科学院稳定支持基础研究领域青年团队计划资助项目(YSBR-034);清华大学水沙科学与水利水电工程国家重点实验室开放基金资助项目(sklhse-2022-D-04).

作者简介 About authors

曾铮(1996—),女,博士,从事计算机辅助设计的研究.orcid.org/0009−0005−8693−3796.E-mail:zengzheng14@amss.ac.cn , E-mail:zengzheng14@amss.ac.cn

摘要

针对边界表示模型生成的面网格模型存在的误差大、分辨率高和不水密的问题,提出针对计算机辅助设计(CAD)实体模型的保精度网格生成算法. 算法通过同步生成对齐共边点对保证网格的水密性;利用连续表征设计网格目标边长,以生成高精度、低分辨率的网格. 与现有的开源网格生成软件相比,算法能用更少的网格面片数生成精度更高的网格,且网格质量与其相当.

关键词: 边界表示模型 ; 网格生成 ; 水密性 ; 精度优化 ; 网格分辨率优化

Abstract

A precision-preserving mesh generation algorithm for computer aided design (CAD) solid models was proposed aiming at the issues of large errors, high resolution and non-watertightness in the surface mesh models generated by boundary representation models. The watertightness of the mesh was ensured by synchronously generating aligned pairs of vertices on shared curves. A continuous representation was utilized to design the target edge length of the mesh, resulting in a high-precision, low-resolution mesh. The algorithm can achieve higher-precision meshes with fewer mesh faces, while maintaining comparable mesh quality compared to existing open-source mesh generation software.

Keywords: boundary representation model ; mesh generation ; watertightness ; precision optimization ; mesh resolution optimization

PDF (6328KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

曾铮, 贾晓红, 辛士庆, 严冬明. 精度可控的边界表示模型网格生成. 浙江大学学报(工学版)[J], 2024, 58(2): 257-267 doi:10.3785/j.issn.1008-973X.2024.02.004

ZENG Zheng, JIA Xiaohong, XIN Shiqing, YAN Dongming. Precision controllable mesh generation for boundary representation model. Journal of Zhejiang University(Engineering Science)[J], 2024, 58(2): 257-267 doi:10.3785/j.issn.1008-973X.2024.02.004

边界表示(boundary representation)的参数曲面模型在计算机辅助设计(computer aided design, CAD) 系统中十分常见,从边界表示模型生成网格是数值模拟、快速成型、计算流体力学、可视化等众多领域关注的重点问题. 目前的主流 CAD 软件如Open Cascade[1]、NetGen[2]、 Gmesh[3]等在网格生成过程中会产生错误的网格结构,如退化三角形、网格缝隙、相交面片等,并且无法控制生成网格的误差. 尽管可以使用网格修复技术修复错误的网格结构,但修复结果往往存在较大的误差.

网格生成产生错误结构的原因之一是边界表示模型不水密. 边界表示模型上2个面片的共边是在2个参数曲面的参数域上分别存储的,因此会受到计算机截断误差的影响产生缝隙. 另外,设计误差、布尔运算求交误差、不同 CAD 软件的不同精度要求导致的误差等都会破坏模型的水密性. 网格生成算法必须对模型的重合边和重合点进行特殊处理. 修复模型的水密性通常采取以下2种手段. 1)通过局部网格编辑操作,填补、合并网格上的缝隙[4-6],该类方法仅适用于缝合间距较小的缝隙,无法识别在几何上互相重合的网格边. 2)通过全局重构建模型的隐式曲面,离散化该曲面来生成水密网格[7],该方法能够保证输出水密网格,但会模糊网格的尖点、硬边界、薄板等重要特征,导致生成网格模型存在较大的误差. 此外,可以对边界进行配对采样,保证网格的水密性,但现有的边界线采样方案多数仅考虑曲线精度的需求,没有综合考虑相邻2个曲面的精度需求. 本文通过对参数曲面边界线进行配对采样和配对优化来解决生成网格不水密和精度不可控的问题,并在采样时的目标边长计算策略中引入曲面精度估计项,以满足相邻面片的精度需求.

对于物理仿真应用来说,面网格模型除了需要保持水密性,还需要尽可能地降低误差和分辨率并提升网格三角面片的质量,这一目标可以采用网格简化的方法实现. 网格简化算法可以使用连续参数曲面的表征,也可以使用离散网格曲面的表征. 使用连续表征的优点是几何精度高,能够快速计算曲面点的位置、切向量、曲率等属性,但相关的几何计算通常是非线性的,存在数值稳定性问题,且投影点计算较耗时. 使用离散表征的优点是投影计算方便,相关几何计算是线性的,快速有效,但存在一定的离散误差. 目前,大部分网格简化算法仅利用网格顶点处的离散表征进行计算,无法精确控制离散化过程中的误差. 本文综合使用2种表征进行网格简化.一方面针对离散面片重心点进行距离估计;另一方面采用连续表征计算网格边的目标长度,以实现误差控制和质量优化.

1. 相关工作

网格生成的相关工作可以参考文献[8~10]. 现有的参数曲面三角网格生成算法可以分为映射法、直接法和混合法3类.

直接法利用曲面的曲率、法向和到曲面的投影点等几何信息,直接在三维空间中生成网格. 直接法的相关工作包括基于栅格的网格生成法 [11]、波前推进法 [2,12]、基于粒子的网格生成法 [13]、气泡堆积法 [14]、基于 Delaunay 三角剖分的网格生成法[15-17]等. 直接法的难点包括计算网格点到参数曲面的投影或直线与参数曲面的交点. 在参数曲面上,这些算法的效率和精度较低,比不上隐式曲面. 如果先将曲面隐式化,又会引入累积误差.

映射法利用曲面参数域上的黎曼度量来生成网格[18-19]. 映射法用映射距离代替投影距离来估算网格精度. 对于参数曲面$S( \cdot ):{\bf{R}^2} \to {\bf{R}^3}$和其生成网格上的一点$a$,可用$a$所在三角形的顶点$A、B、C$给出$a$的重心坐标$(\alpha ,\beta ,\gamma ) \in {\bf{R}^3}$,设$A、B、C$分别对应参数 $ {{\boldsymbol{u}}_A}、{{\boldsymbol{u}}_B}、{{\boldsymbol{u}}_C} \in {\bf{R}^2} $,则称$S(\alpha {{\boldsymbol{u}}_A}+\beta {{\boldsymbol{u}}_B}+\gamma {{\boldsymbol{u}}_C})$$a$的映射点. 网格上一点的映射距离由该点和对应的映射点之间的距离给出. 由于映射距离是通过网格点和曲面点之间的一一映射得到的,在曲面变化较多的情况下更适合用于度量网格的精度. 如图1所示,粗折线表示生成的折线(或网格面),细曲线表示原曲线(或曲面). 直接法将折线上的$ab$$bc$段分别投影到曲线上的${a_1}{b_1}$${b_2}{c_1}$段,忽略了${b_1}{b_2}$段的误差. 映射法将折线上的$ab$$bc$段分别投影到曲线上的 ${a_1}{b_1}$${b_1}{c_1}$段,曲线上不存在未考虑误差的点. Sheng等[20]基于映射法度量,生成高精度的网格. 当参数曲面的映射存在较大的扭曲和拉伸时,可以利用重新参数化方法进行解决[21-23].

图 1

图 1   直接法与映射法的降维示意图

Fig.1   Illustration of direct method and mapping method in reduced dimension


混合法综合考虑上述方法的优缺点,共同利用 三维几何和二维参数域信息来生成高质量网格. 多 数综合网格生成法[24-27]通过映射法生成高精度三角网格或低分辨率三角网格,利用三维几何信息进行质量优化. 这些方案中多数没有考虑网格模型的水密性,特别地,Guo等[26]通过对边界进行均匀采样,保证初始网格的水密性,但这种非自适应采样方案容易导致过高的网格分辨率. 在精度方面,现有的多数综合网格生成法不直接计算网格误差,而是利用逼近论中的相关结论进行精度优化. Shewchuk[28]利用曲面的各向异性,生成给定三角形数量下曲面的最优三角网格逼近. Frey等[29]利用三角形边长、三角形面片的插值误差与曲率的关系,控制生成网格的误差. 这些方法可以用于改善网格的误差与分辨率,但不能完全保证生成网格的精度. 此外,也有一些方法从隐式曲面或网格曲面出发,以误差为硬约束进行网格优化. Botsch等[30]通过估计网格曲面的有符号距离场来生成误差包络,利用该包络实现控制误差的快速网格优化,避免了多个网格优化过程的误差累积效应. Mandad等[31]通过对误差包络进行自适应采样,以生成拓扑正确且满足误差的网格. Wang等[32]提出判定线段是否位于误差包络内的精确快速算法. 从参数曲面生成误差包络,可能会丢失特征边,甚至导致拓扑错误. Hu等[33]基于网格局部编辑操作,设计保证精度的网格重新生成算法,该方法中基于贪心算法设计的角度优化流程能够有效地提高角度质量,但超参数较多,设置不当,会造成算法陷入死循环. Yang等[34]利用参数化方法生成满足误差的相容网格,在保证精度的前提下优化网格分辨率. Zhang等[35]通过遗传变异算法来进行精度、角度和数量的优化,利用该算法能够显著地优化三角网格的角度,但参数设置较复杂,计算更耗时.

2. 算法简介

算法输入为边界表示的CAD模型(IGES或STEP格式)$ G = \{ {S_i}\} _{i = 1}^n $,模型中包含$n$片边界表示的参数曲面${S_i}$. 用户须提供给定的误差$e$,表示曲面到三角网格的单边Hausdorff距离. 算法输出为误差不超过$e$的三角网格. 以包含6片曲面的椭球模型为例,算法流程如图2所示. 模型包围盒对角线长为107.4,输入的误差要求为$e = 0.04$,最终生成的模型误差为0.038,算法主要包括以下步骤.

图 2

图 2   网格生成算法的流程

Fig.2   Process of mesh generation method


1)利用参数域的等参线,得到初始水密网格(见图2(b)). 在参数域上生成等参线网格. 按照三维曲线的长度对边界线进行均匀采样,对于表示同一共边的2条边界,保证采样点数一致,通过邻近关系即可确定初始点对的对应关系. 利用受约束的Delaunay三角剖分(constrained Delaunay triangulation,CDT)生成参数域网格,通过曲面参数方程得到曲面网格.

2)生成参数曲面边界线上的采样点(见图2(c)). 通过同步编辑参数域边界上的采样点,减小网格在参数曲面共边附近的误差,保证共边上采样点保持互相对应关系.

3)生成满足距离误差的三角网格(见图2(d)). 在各参数曲面内部进行网格优化,优化过程中主要通过控制参数域三角面片重心在曲面上的对应点与网格三角面片重心的距离,控制网格误差.

4)优化三角网格的角度(见图2(e)). 对网格进行全局优化.

算法主要利用图3的网格局部编辑操作进行优化,图3中第1行是编辑操作前网格,第2行是编辑操作后网格. 边分裂操作先在网格边的中点上添加顶点,然后分裂与边相邻的2个面. 边合并将边的两端点合并为边的中点. 边翻转将给定的网格边变为相邻面组成的四边形的另一条对角线. 顶点位置优化根据给定的权重,改变顶点的位置. 下文将具体介绍算法每个步骤中所用的局部编辑操作.

图 3

图 3   网格的局部编辑操作

Fig.3   Local editing operations of mesh


2.1. 生成参数曲面的边界采样点

算法对边界采样点进行优化,边界线上采样点的分布密度需要综合考虑2个共边面片的误差来确定,以保证后续网格优化步骤可以满足误差要求. 投影计算的效率比利用高斯-勒让得积分公式计算曲线长度并定位曲线中点的效率低,因此算法过程不涉及投影计算而直接定位曲线点.

由于初始化得到的网格点在共边处互相配对,合并配对点可以得到互相重合的折线. 本算法对表示共边的2条折线中的1条进行优化,使得该折线满足给定的距离误差要求. 按照同样的长度比例更新另一条折线,以保持顶点的配对关系. 优化后,使用CDT生成参数域网格. 网格边界线的优化过程由算法1给出,其中包含下述子步骤.

计算目标边长(步骤1.1). 对折线上的每条线段计算目标边长,使得当线段长度为目标边长时折线能够满足距离误差. 给定顶点为$ {{\boldsymbol{v}}_a}、{{\boldsymbol{v}}_b} \in {\bf{R}^3} $的边${{\boldsymbol{e}}_{ab}} \in {\bf{R}^3}$,对应的曲线为参数曲面${S_i}$${S_j}$之间的一段交线. 令${{\boldsymbol{v}}_c}$为边${{\boldsymbol{e}}_{ab}}$对应曲线段的中点. 为了使边长满足距离误差要求,计算曲面${S_i}$${{\boldsymbol{v}}_c}$处的最小曲率半径$r_c^i$、曲面${S_j}$${{\boldsymbol{v}}_c}$处的最小曲率半径$r_c^j$和曲线段在${{\boldsymbol{v}}_c}$处的曲率半径${r_c}$.

计算线段${{\boldsymbol{e}}_{ab}}$的目标长度$ l_{ab}^{{\text{target}}} $

为了避免生成的线段过长或过短,可将目标长度$ l_{ab}^{{\text{target}}} $限制在给定范围$[{l_{{\text{min}}}},{l_{{\text{max}}}}]$,本文取${l_{{\text{min}}}} = 0.000\;1L,{l_{{\text{max}}}} = L$,其中$L$为模型对角线长度.

边分裂优化(步骤1.2). 当边${{\boldsymbol{e}}_{ab}}$长度${l_{ab}}$>$(4/5)l_{ab}^{{\text{target}}}$时,在${{\boldsymbol{e}}_{ab}}$中间插入${{\boldsymbol{e}}_{ab}}$对应曲线段的中点${{\boldsymbol{v}}_c}$,更新${{\boldsymbol{v}}_c}$相邻线段的目标边长.

边合并优化(步骤1.3). 当边${{\boldsymbol{e}}_{ab}}$的边长${l_{ab}}$<$(4/3)l_{ab}^{{\text{target}}}$时,合并边${{\boldsymbol{e}}_{ab}}$到对应曲线段的中点${{\boldsymbol{v}}_c}$,更新${{\boldsymbol{v}}_c}$相邻边的目标边长.

采样点位置优化(步骤1.4). 对2条边${{\boldsymbol{e}}_{ab}}$${{\boldsymbol{e}}_{bd}}$的公共点${{\boldsymbol{v}}_b}$,根据目标边长$ l_{ab}^{{\text{target}}} $$ l_{bd}^{{\text{target}}} $优化${{\boldsymbol{v}}_b}$的位置,使其满足$ l_{ab}^{{\text{curve}}}/l_{bd}^{{\text{curve}}} = l_{ab}^{{\text{target}}}/l_{bd}^{{\text{target}}} $,其中$l_{ab}^{{\text{curve}}}、l_{bd}^{{\text{curve}}}$分别为${{\boldsymbol{e}}_{ab}}$${{\boldsymbol{e}}_{bd}}$对应曲线段的长度.

算法1 边界采样点生成算法
输入:用户给定的距离误差$e$,CAD模型一片曲面$S$上的一条边界线$C$以及在初始化所得网格$M$$C$对应的网格边集${E_C}$.
输出:优化后的网格边集${E_C}$.
1)初始化迭代次数$i = 0\;\;.$
2)while $i < 20$ do
3)计算${E_C}$中的每条边的目标边长(步骤1.1).
4)对${E_C}$中的每条边进行边分裂优化(步骤1.2).
5)对${E_C}$中端点外的顶点进行位置优化(步骤1.4).
6)计算${E_C}$中的每条边的目标边长(步骤1.1).
7)对${E_C}$中的每条边进行边合并优化(步骤1.3).
8)对${E_C}$中端点外的顶点进行位置优化(步骤1.4).
9)$i: = i+1$
10)end while

测试76条边的采样过程并记录算法收敛的迭代次数,多数情况下上述算法可以在20次迭代内收敛. 由于后续会对网格进行优化,多余的迭代降低的误差不大,算法固定迭代次数.

2.2. 生成低误差三角网格

算法使用前述步骤生成的网格作为初始网格,在优化误差的过程中保持网格边界点固定. 为了减少投影计算并提高效率,算法使用映射距离来估计网格与曲面的距离. 曲面网格上三角形面片$f$的映射距离为$f$在参数域上的重心代表的曲面点${{\boldsymbol{p}}_1}$$f$的重心${{\boldsymbol{p}}_2}$之间的距离. 这一步的优化过程由算法2给出,算法包含下述子步骤.

计算目标边长(步骤2.1). 对网格上的每个顶点${{\boldsymbol{v}}_a}$计算目标长度$l_a^{{\text{target}}}$,使得当网格边长不超过两边端点目标长度之和时,网格满足精度. 计算${{\boldsymbol{v}}_a}$相邻边的最小边长${l_a}$.$f_a^i\left(i = 1,2, \cdots ,{n_a}\right)$${{\boldsymbol{v}}_a}$的相邻三角面,${\boldsymbol{p}}_a^i$为三角面的重心,$d_a^i$为三角面重心到曲面的距离,${\boldsymbol{q}}_a^i$${\boldsymbol{p}}_a^i$到曲面${{P}_i}$的投影点,$r_a^i$为曲面${\boldsymbol{q}}_a^i$处的最小曲率半径. ${{\boldsymbol{v}}_a}$的目标长度为

边分裂优化 (步骤2.2). 当网格边${{\boldsymbol{e}}_{ab}}$的边长${l_{ab}}$与目标边长 $l_{ab}^{{\text{target}}} = (1/2)(l_a^{{\text{target}}}+l_a^{{\text{target}}})$满足${l_{ab}} > (4/5)l_{ab}^{{\text{target}}}$时,对网格执行边分裂操作,即在边${{\boldsymbol{e}}_{ab}}$间插入边中点${{\boldsymbol{v}}_c}$,分裂与边${{\boldsymbol{e}}_{ab}}$相邻的面片. 在处理完所有网格边后,更新网格的目标边长.

边合并优化 (步骤2.3). 当网格边${{\boldsymbol{e}}_{ab}}$的边长${l_{ab}}$与目标边长$l_{ab}^{{\text{target}}} = (1/2)(l_a^{{\text{target}}}+l_b^{{\text{target}}})$满足${l_{ab}} < (4/3)l_{ab}^{{\text{target}}}$时,合并${{\boldsymbol{e}}_{ab}}$${{\boldsymbol{e}}_{ab}}$对应曲线段的中点${{\boldsymbol{v}}_c}$. 在处理完所有网格边后,更新目标边长.

顶点度优化(步骤2.4). 网格顶点的相邻边数称为网格顶点的度,内部网格顶点的目标度为6,边界边夹角为$\theta $的网格顶点目标度为$\left\lfloor {3\theta /\pi +1.5} \right\rfloor $. 对于每一条网格边${{\boldsymbol{e}}_{ab}}$,设其相邻三角形分别为${{\boldsymbol{v}}_a}{{\boldsymbol{v}}_b}{{\boldsymbol{v}}_c}$${{\boldsymbol{v}}_a}{{\boldsymbol{v}}_b}{{\boldsymbol{v}}_d}$. 若边翻转操作能够使4个网格点${{\boldsymbol{v}}_a}、{{\boldsymbol{v}}_b}、{{\boldsymbol{v}}_c}、{{\boldsymbol{v}}_d}$的度更接近目标网格顶点的度,则翻转边${{\boldsymbol{e}}_{ab}}$并更新网格的目标边长.

顶点位置优化(步骤2.5). 对于每个内部顶点${{\boldsymbol{v}}_a}$,计算所有相邻面片$f_a^i\left(i = 1,2, \cdots ,{n_a}\right)$的重心${\boldsymbol{p}}_a^i$. 根据每个面片$f_a^i$的3个顶点${{\boldsymbol{v}}_a}、{{\boldsymbol{v}}_{{b_i}}}、{{\boldsymbol{v}}_{{c_i}}}$的目标长度,计算面片的权重${w_i} = 3{l^{{\text{avg}}}}/(l_a^{{\text{target}}}+l_{{b_i}}^{{\text{target}}}+l_{{c_i}}^{{\text{target}}})$,其中${l^{{\text{avg}}}}$为所有顶点的目标长度的平均值. 更新顶点${{\boldsymbol{v}}_a}$的位置:

$ {{\boldsymbol{v}}_a} = {{P}}\left(\left(\sum\limits_{i = 1}^{{n_a}} | f_a^i|{w_i}{\boldsymbol{p}}_a^i\right)\left/{\left(\sum\limits_{i = 1}^{{n_a}} | f_a^i|{w_i}\right)}\right.\right). \\$

式中:$|f_a^i|$为三角面片$f_a^i$的面积,${{P}}({\boldsymbol{p}})$为空间点${\boldsymbol{p}}$到曲面的投影.

顶点优化步骤根据目标长度进行优化,目标长度根据误差动态确定.当误差增大时,目标长度会变小,引导算法在下一轮循环中在误差大的地方生成更小的三角形面片,以降低误差.

角度优化(步骤2.6). 这一步的目标是使三角形内角接近60°. 对于三角形对每条内部网格边${{\boldsymbol{e}}_{ab}}$,检查边翻转是否能使各角与60°的差值的绝对值之和更小. 若可以,则翻转边${{\boldsymbol{e}}_{ab}}$.

算法2 网格精度优化算法
输入:用户给定的距离误差$e$、CAD模型中的曲面片$S$及边界采样点优化后的网格$M$.
输出:误差优化后的网格$M$.
1) 初始化收敛距离$d = L$$L$为模型包围盒对角线长度.
2) 循环执行40次以下步骤2)~10),直到$d > 0.1e$.
3) 计算网格$M$每点处的目标边长(步骤2.1).
4) 对网格$M$中的每条边进行边分裂优化(步骤2.2).
5) 对网格$M$中的每条边进行顶点度优化(步骤2.4).
6) 对网格$M$中的内部网格点进行位置优化(步骤2.5).
7) 计算网格$M$每点处的目标边长(步骤2.1).
8) 对网格$M$中的每条边进行边合并优化(步骤2.3).
9) 对网格$M$中的每条边进行顶点度优化(步骤2.4).
10)对网格$M$中的内部网格点进行位置优化(步骤2.5),更新$d$为所有网格点位置偏移长度的最大值.
11) 对网格$M$中的每条边进行角度优化(步骤2.6).

2.3. 生成高质量三角网格

当2片曲面之间的拼接不满足G2连续时,网格精度优化后可能会在边界线附近生成图4所示的质量较差的狭长三角形.

图 4

图 4   网格质量初步优化的示意图

Fig.4   Illustration of preliminary mesh quality optimization


2.3.1. 确定网格顶点数

这一步的主要目的是得到合理的各向异性网格顶点数. 在边界采样点固定的条件下,依次对每一片参数曲面${S_i}$进行优化. 优化过程由算法3给出,算法包含下述子步骤.

边分裂优化(步骤3.1). 对于所有最小角<15°的三角形$f$,计算最短边的长度${l_{{\text{short}}}}$.$f$中非边界边${{\boldsymbol{e}}_i}$的长度大于$2{l_{{\mathrm{short}}}}$,则对${{\boldsymbol{e}}_i}$进行分裂. 在分裂过程中,记录新增的顶点数${N_{{\text{inserted}}}}$.

边合并优化(步骤3.2). 按照角度从小到大的顺序依次对小角的对边进行合并,当合并数量达到$\left\lfloor {0.3{N_{{\text{inserted}}}}} \right\rfloor $时,结束合并. 增加合并优化步骤可以防止边分裂优化步骤产生过多的狭长三角形,但由于该步骤的主要目的是加密过大的狭长三角形,不宜合并过多的三角形. 通过统计发现,当合并数量定为$\left\lfloor {0.3{N_{{\text{inserted}}}}} \right\rfloor $时网格的钝角三角形和小角度三角形总数更小,因此选择当合并数量达到$\left\lfloor {0.3{N_{{\text{inserted}}}}} \right\rfloor $时结束合并.

算法3 确定网格顶点数算法
输入:CAD模型中的曲面片$S$及误差优化后的网格$M$.
输出:顶点数优化后的网格$M$.
1)循环执行4次步骤2)~7).
2)对$M$进行边分裂优化(步骤3.1)并标记新增顶点.
3)对$M$的每条边进行角度优化(步骤2.6)并标记翻转网格边的顶点.
4)对$M$中标记网格点的2-邻域内的内部网格点进行位置优化(步骤2.5)并清除标记.
5)对$M$进行边合并优化(步骤3.2),标记合并后的顶点.
6)对$M$的每条边进行角度优化(步骤2.6),标记翻转网格边的顶点.
7)对$M$中标记网格点的2-邻域内的内部网格点进行位置优化(步骤2.5),清除标记.

2.3.2. 全局网格优化

在边界点固定的情况下进行角度优化时,边界处可能存在多次分裂合并无法消除的钝角三角形,使得算法在该三角形处反复分裂出许多三角形,形成过密分布,因此这一步边界点不能被完全固定. 对得到的所有曲面片的网格进行合并,生成水密网格${M_{\mathrm{w}}}$,对${M_{\mathrm{w}}}$进行全局优化. 优化过程中参数曲面片顶点对应的网格点保持固定,边界边上的端点始终位于曲面片的边界上. 由于网格${M_{\mathrm{w}}}$已足够接近曲面,全局优化的过程中可以使用空间点到${M_{\mathrm{w}}}$的投影替代空间点到曲面的投影. 全局优化步骤由算法4给出,算法中包含下述子步骤.

计算目标边长(步骤4.1).与步骤1.1不同,该步使用当前网格来估计顶点处的最小曲率半径${r_a}$,不使用参数曲面来估计最小曲率半径. 网格上每个顶点${{\boldsymbol{v}}_a}$的目标长度为$l_a^{{\text{target}}} = \sqrt {6{r_a}e - 3{e^2}} .$

网格上的最小曲率半径可以通过网格的平均曲率与高斯曲率求出[36].

边分裂优化(步骤4.2). 计算钝角三角形的个数${n_{{\text{obtuse}}}}$,对于所有的钝角三角形$f$,按照钝角从大到小的顺序分裂前$\left\lfloor {0.3{n_{{\text{obtuse}}}}} \right\rfloor $个钝角三角形的最长边,记录新增的顶点数${N_{{\text{inserted}}}}$. 对于最长边为曲面边界边的情况,新增顶点须投影到曲面边界上.

边合并优化(步骤4.3). 按照角度从小到大的顺序,依次对小角的对边进行合并.当合并数量达到${N_{{\text{inserted}}}}$时结束合并.

顶点位置优化(步骤4.4). 这一步与步骤2.5类似,不同之处为式(1)中计算权重使用的目标边长改为步骤4.1所得的目标边长,空间点到曲面的投影改为到水密网格${M_{\mathrm{w}}}$的投影.

算法4 网格全局优化算法
输入:CAD模型及对应的水密网格${M_{\mathrm{w}}}$.
输出:全局优化后的水密网格${M_{\mathrm{w}}}$.
1)循环执行20次步骤2)~9).
2)对${M_{\mathrm{w}}}$进行边分裂优化(步骤4.2)并标记新增点.
3)对${M_{\mathrm{w}}}$进行顶点度优化(步骤2.4)并标记翻边的顶点.
4)计算${M_{\mathrm{w}}}$的目标边长(步骤4.1).
5)对${M_{\mathrm{w}}}$中所有标记网格点的2-环邻域内的网格点进行位置优化和更新目标边长(步骤4.4),清除标记.
6)对${M_{\mathrm{w}}}$进行边合并优化(步骤4.3),标记合并后的顶点.
7)对${M_{\mathrm{w}}}$进行顶点度优化(步骤2.4),标记翻转边的顶点.
8)计算${M_{\mathrm{w}}}$的目标边长(步骤4.1).
9)对${M_{\mathrm{w}}}$中所有标记网格点的2-环邻域内的网格点进行位置优化(步骤4.4),清除标记.

3. 实验评估

算法使用c++语言、CGAL库和开源CAD软件开发平台Open Cascade共同实现. 所有实验均在配备了Intel i7-7700HQ处理器的笔记本电脑上开展. 在评估过程中,误差指标$h$为曲面到网格的单边Hausdorff距离,假设网格曲面的顶点数为$|V|$,该距离由曲面上均匀采样的$|{V_{\mathrm{s}}}|$个点到网格的距离最大值给出,且$|{V_{\mathrm{s}}}| > 100|V|$. 平均距离指标$d$由采样点到网格的距离平均值给出.

3.1. 角度优化对误差的影响

当进行全局角度优化时,算法没有限制模型误差,这可能会导致模型误差变大. 表1给出不同特性的模型在角度优化前、后的网格精度与质量指标. 表1中,阶段1表示误差优化阶段,阶段2表示全局角度优化阶段,阶段3表示全局误差优化阶段,$L$为模型包围盒对角线长度,$e$为输入的距离误差,$|V|$为模型顶点数,$h$为参数模型到网格模型的单边Hausdorff距离,$d$为参数模型到网格模型的平均距离,${\theta _{{\text{min}}}}$为网格最小角度,${\theta _{{\text{max}}}}$为网格最大角度,${\theta _{{\text{avg}}}}$为所有网格面片最小角的平均值,$T$为运行时间. 当参数曲面间为G2连续拼接时,如椭球模型所示,全局角度优化阶段对模型误差的影响较小,生成网格满足精度要求. 当光滑参数曲面之间的拼接仅满足G1或G0连续时,如鼠标模型所示,在全局角度优化阶段,模型误差可能会增大.

表 1   算法各阶段的模型精度与质量

Tab.1  Todel precision and quality during different stages

网格模型$L$$e$$|V|$$h$$d$${\theta _{{\text{min}}}/{\rm{(^\circ )}}}$${\theta _{{\text{max}}}/{\rm{(^\circ )}}}$${\theta _{{\text{avg}}}/{\rm{(^\circ )}}}$$T$/s
椭球(阶段1)107.490.3744770.350.0123.43125.9950.3315.6
椭球(阶段2)107.490.3744770.350.0138.2289.9752.072.3
鼠标(阶段1)299.360.6020830.550.066.03133.3943.6126.3
鼠标(阶段2)299.360.6023851.670.1017.83121.5549.451.8
鼠标(阶段3)299.360.6025710.580.0617.88120.3149.301.1

新窗口打开| 下载CSV


在进行全局角度优化后,对网格误差进行全局优化. 将全局角度优化中边分裂(步骤4.2)的条件由钝角三角形改为误差较大的三角形,称该边分裂步骤为优化误差的边分裂步骤. 全局误差优化阶段将优化误差的边分裂步骤、顶点度优化(步骤2.4)、计算网格目标边长(步骤4.1)、更新顶点位置优化(步骤4.4)按顺序循环执行4次. 在优化全局误差后,表1的鼠标模型可以满足精度要求,具有较高的网格质量.

表1的运行时间可以看出,第1次误差优化阶段较耗时,这是由于优化过程需要精确计算网格点到曲面的投影,该过程利用连续表征进行计算,较耗时.后续2个步骤利用网格曲面表征代替参数曲面表征进行优化,仅须在优化结束后计算一遍所有网格点到曲面的投影,大大减少了优化时间.

3.2. 不同精度要求生成的网格结果

采用不同的误差限制,生成了不同分辨率的鼠标网格模型,如图5所示. 图5的网格质量指标由表2给出. 表中,$ {\theta _{{\text{small}}}} $为最小角小于30°的三角形占比. 给定不同的$e$,本算法生成的网格模型均能够满足精度要求. 比较单边Hausdorff距离$h$与平均距离$d$可以发现,对于同一模型,利用本文算法生成的网格$h$$d$几乎成正比,因此可以通过本文算法间接控制网格与曲面之间的平均距离. 从时间上看,由于顶点投影计算占据了大部分的运行时间,算法用时与顶点数几乎成正比.

图 5

图 5   不同精度指标下的鼠标网格

Fig.5   Mouse meshes with different precision requirement


表 2   不同精度要求的鼠标网格模型质量指标

Tab.2  Mesh qualities of different mouse models generated with different precision requirements

图5$e$$|V|$$h$$d$${\theta _{{\text{min}}}/{\rm{(^\circ )}}}$${\theta _{{\text{max}}}/{\rm{(^\circ )}}}$${\theta _{{\text{avg}}}/{\rm{(^\circ )}}}$${\theta _{{\text{small}}}/{\rm{(^\circ )}}}$$T/{\mathrm{s}}$
图5(a)0.03304670.0280.00320.83134.1551.170.13368.3
图5(b)0.1288990.120.01421.17117.9050.050.07120.7
图5(c)0.3041520.260.03118.39134.3249.800.5048.7
图5(d)0.6025710.580.06017.88120.3149.300.6029.2

新窗口打开| 下载CSV


3.3. 与开源软件的对比

使用不同的复杂模型对算法进行测试,与主流开源网格生成软件Gmsh和Netgen进行比较. 比较指标的数值由表3给出. 表中,$P$为模型面片数. 从表3可知,在本文算法的网格分辨率大幅小于开源算法的情况下,能够生成最大误差和平均误差都更小的网格. 在网格质量上,本文算法的最小角、最大角及小角三角形的占比这几个指标整体上优于Gmsh,指标水平与Netgen相当,同时本文算法在鼠标和枕头模型上均具有最优的精度和质量指标. 从齿轮模型(见图6)可以看出,在非光滑拼接的模型上,本文算法的网格顶点密度分布更合理. Gmsh和Netgen在参数曲面曲率较小的地方,如齿轮之间的平坦锥面上会生成过密的网格,齿轮突起部分的顶点过于稀疏,利用本文算法能够保证顶点密度与曲面曲率成正相关,生成误差更小的网格. 在模型侧面的大圆柱上,Gmesh的顶点分布过于稀疏,Netgen的顶点分布不均匀,相比之下,本文算法在该区域生成的网格点更密集且分布均匀,网格误差更小.

表 3   本算法与开源网格生成软件Gmsh和Netgen在网格精度和质量上的比较

Tab.3  Comparision of mesh precision and quality for our algorithim with open-source software Gmsh and Netgen

模型及大小算法$|V|$$h$$d$${\theta _{{\text{min}}}/{\rm{(^\circ )}}}$${\theta _{{\text{max}}}/{\rm{(^\circ )}}}$${\theta _{{\text{avg}}}/{\rm{(^\circ )}}}$${\theta _{{\text{small}}}/{\rm{(^\circ )}}}$
齿轮Gmsh130620.680.0571.13171.7146.1416.57
$ L = 103.00 $Netgen171610.610.0426.22159.3846.025.18
$ P = 229 $本算法($e = 0.2$79210.190.0395.91171.8242.6410.73
蜂鸟Gmsh878373.630.3835.41169.1650.990.86
$ L = 8\;246.02 $Netgen684222.280.16418.24117.7352.500.03
$ P = 312 $本算法($e = 1.0$611800.990.09317.56137.9650.310.05
涡轮Gmsh581930.330.0150.21178.7553.631.48
$ L = 226.28 $Netgen434990.240.0113.17156.9750.940.26
$ P = 138 $本算法($e = 0.06$406430.060.0062.74159.2948.380.42
鼠标Gmsh402450.310.0333.35119.6247.720.07
$L = 229.36$Netgen582990.570.02820.50118.9050.040.09
$P = 38$本算法($e = 0.12$88990.120.01421.17117.9050.050.07
枕头Gmsh30300.370.06320.24134.3748.781.91
$L = 104.62$Netgen22460.930.14529.45107.4950.590.04
$P = 8$本算法($e = 0.4$1 8350.310.04835.0291.7951.190.00

新窗口打开| 下载CSV


图 6

图 6   齿轮模型网格生成结果的对比

Fig.6   Comparison of gears model mesh generation results


图78可知,在光滑拼接的模型上,本文算法的顶点密度分布比Gmsh和Netgen更合理. 在曲率较大的地方,如枕头中心和蜂鸟翅膀边缘,本文算法的网格顶点密度比Gmsh和Netgen小;在曲率较小的地方,本文算法的网格顶点密度比Gmsh和Netgen大,即本文算法的网格密度随曲率的变化比Gmsh和Netgen小,这使得本文算法的网格在曲率变化较剧烈的地方,网格密度过渡更自然,这能够大大减少狭长三角面片的数量. 从蜂鸟模型可以看出,Netgen的网格顶点在接缝处容易产生过密分布,面片接缝对本文方案的影响较小.

图 7

图 7   枕头模型网格生成结果的对比

Fig.7   Comparison of pillow model mesh generation results


图 8

图 8   蜂鸟模型网格生成结果的对比

Fig.8   Comparison of hummingbird model mesh generation results


图9可以看出,本文算法适用于具有薄片形状的模型. Gmsh的网格质量在薄片模型上会大幅降低,这是因为其在薄片的平坦边缘处采样过于稀疏,会产生较多的狭长三角形,这一点反映在表3中小角度三角形的数量占比上. 相比之下,本文算法在薄片的平坦边缘处有更密的采样,以保证该区域的网格质量. Netgen在薄片边界处生成密集均匀采样,然而在该区域过密的网格不能提升网格的精度. 相比之下,本文算法在该区域的采样点分布更稀疏,与曲面曲率相适应,能够在保证精度的前提下大幅降低该区域的网格分辨率.

图 9

图 9   涡轮模型网格生成结果的对比

Fig.9   Comparison of turbo model mesh generation results


图10可以看出,当边界表示模型存在小间隙时,Gmsh和Netgen生成的网格会产生缝隙,利用本文算法能够自动缝合模型缝隙,生成水密网格,保留表示曲面共边的网格边. 本文算法的网格分辨率由精度决定,Gmsh和Netgen的网格分辨率由单位曲率的三角形数量决定.

图 10

图 10   鼠标模型网格生成结果的对比

Fig.10   Comparison of turbo model mesh generation results


图1112所示为本文算法和其他2种算法生成的不同分辨率的网格的hausdorff距离和平均距离比较. 可以看出,利用本文算法,能够用更少的网格顶点数,生成精度更高的网格.

图 11

图 11   Hausdorff距离与网格分辨率的关系

Fig.11   Relationship of Hausdorff distance and mesh resolution


图 12

图 12   平均距离与网格分辨率的关系

Fig.12   Relationship of average distance and mesh resolution


3.4. 局限性分析

在用时上,Gmsh和Netgen的表现更优. 利用本文算法生成网格消耗的时间约为$ 0.01|V| $,Gmsh和Netgen均利用并行计算技术进行加速,生成顶点数为30 000的模型仅需4~10 s,因此用时均高于本文算法. 本文算法中的目标边长计算、局部操作、投影计算等步骤均可利用并行计算进行加速,效率存在较大的可提升空间.

在一些过于狭长的参数面片上,若本文算法不调整迭代次数及全局优化前增加的顶点数,则可能生成较狭长的三角形. 未来可以考虑将狭长的参数面片进行合并.

4. 结 语

本文设计针对CAD实体模型的精度可控的网格生成算法. 该算法利用三角面片重心的映射距离来计算网格误差,在边界采样时考虑相邻网格面的误差,使得网格在共边处的采样能够满足两边曲面的误差要求. 与开源软件相比,利用本文算法生成网格的综合质量更高,其中网格分辨率和误差均大幅低于开源软件生成网格,能够自动修复非水密参数曲面模型的缝隙,生成水密网格. 目前,本文算法在运行效率上存在较大的提升空间,在后续的研究中,会考虑利用并行计算对算法进行加速.

参考文献

Open Cascade SAS. Open cascade technology [EB/OL]. (2023-01-01)[2023-04-15]. https://www.opencascade.com/.

[本文引用: 1]

SCHÖBERL J

NETGEN An advancing front 2D/3D-mesh generator based on abstract rules

[J]. Computing and Visualization in Science, 1997, 1 (1): 41- 52

DOI:10.1007/s007910050004      [本文引用: 2]

GEUZAINE C, REMACLE J F

Gmsh: a 3-D finite element mesh generator with built-in pre-and post-processing facilities

[J]. International Journal for Numerical Methods in Engineering, 2009, 79 (11): 1309- 1331

DOI:10.1002/nme.2579      [本文引用: 1]

ATTENE M

A lightweight approach to repairing digitized polygon meshes

[J]. The Visual Computer, 2010, 26 (11): 1393- 1406

DOI:10.1007/s00371-010-0416-3      [本文引用: 1]

JU T

Robust repair of polygonal models

[J]. ACM Transactions on Graphics, 2004, 23 (3): 888- 895

DOI:10.1145/1015706.1015815     

王骁, 雷娜, 罗钟铉

基于局部的全自动网格修复算法

[J]. 计算机辅助设计与图形学学报, 2022, 34 (19179): 1391- 1401

[本文引用: 1]

WANG Xiao, LEI Na, LUO Zhongxuan

An automatic surface-based mesh repairing algorithm

[J]. Journal of Computer-Aided Design and Computer Graphics, 2022, 34 (19179): 1391- 1401

[本文引用: 1]

CENTIN M, PEZZOTTI N, SIGNORONI A

Poisson-driven seamless completion of triangular meshes

[J]. Computer Aided Geometric Design, 2015, 35: 42- 55

[本文引用: 1]

ALLIEZ P, UCELLI G, GOTSMAN C, et al. Recent advances in remeshing of surfaces [M]// DE FLORIANI L, SPAGNUOLO M. Shape analysis and structuring . Berlin: Springer , 2008: 53-82.

[本文引用: 1]

BOTSCH M, KOBBELT L, PAULY M, et al. Polygon mesh processing [M]. Boca Raton: CRC Press, 2010: 85-150.

KHAN D, PLOPSKI A, FUJIMOTO Y, et al

Surface remeshing: a systematic literature review of methods and research directions

[J]. IEEE Transactions on Visualization and Computer Graphics, 2020, 28 (3): 1680- 1713

[本文引用: 1]

HARTMANN E

A marching method for the triangulation of surfaces

[J]. The Visual Computer, 1998, 14 (3): 95- 108

DOI:10.1007/s003710050126      [本文引用: 1]

CUILLIÉRE J

An adaptive method for the automatic triangulation of 3D parametric surfaces

[J]. Computer-Aided Design, 1998, 30 (2): 139- 149

DOI:10.1016/S0010-4485(97)00085-7      [本文引用: 1]

ZHONG Z, GUO X, WANG W, et al

Particle-based anisotropic surface meshing

[J]. ACM Transactions on Graphics, 2013, 32 (4): 1- 14

[本文引用: 1]

SHIMADA K, GOSSARD D C

Automatic triangular mesh generation of trimmed parametric surfaces for finite element analysis

[J]. Computer Aided Geometric Design, 1998, 15 (3): 199- 222

DOI:10.1016/S0167-8396(97)00037-X      [本文引用: 1]

PEYRÉ G, COHEN L. Surface segmentation using geodesic centroidal tessellation [C]// Proceedings of 2nd International Symposium on 3D Data Processing, Visualization and Transmission . Thessaloniki: IEEE, 2004: 995-1002.

[本文引用: 1]

VALETTE S, CHASSERY J M, PROST R

Generic remeshing of 3D triangular meshes with metric-dependent discrete Voronoi diagrams

[J]. IEEE Transactions on Visualization and Computer Graphics, 2008, 14 (2): 369- 381

DOI:10.1109/TVCG.2007.70430     

YAN D M, LÉVY B, LIU Y, et al

Isotropic remeshing with fast and exact computation of restricted Voronoi diagram

[J]. Computer Graphics Forum, 2009, 28 (5): 1445- 1454

DOI:10.1111/j.1467-8659.2009.01521.x      [本文引用: 1]

DU Q, WANG D

Anisotropic centroidal Voronoi tessellations and their applications

[J]. SIAM Journal on Scientific Computing, 2005, 26 (3): 737- 761

DOI:10.1137/S1064827503428527      [本文引用: 1]

LABELLE F, SHEWCHUK J R. Anisotropic Voronoi diagrams and guaranteed-quality anisotropic mesh generation [C]// Proceedings of the 19th Annual Symposium on Computational Geometry . New York: ACM, 2003: 191- 200.

[本文引用: 1]

SHENG X, HIRSCH B E

Triangulation of trimmed surfaces in parametric space

[J]. Computer-Aided Design, 1992, 24 (8): 437- 444

DOI:10.1016/0010-4485(92)90011-X      [本文引用: 1]

GU X, YAU S T. Global conformal surface parameterization [C]// Proceedings of the 2003 Eurographics/ACM SIGGRAPH Symposium on Geometry Processing . Goslar: ACM, 2003: 127-137.

[本文引用: 1]

LIU L, YE C, NI R, et al

Progressive parameterizations

[J]. ACM Transactions on Graphics, 2018, 37 (4): 1- 12

SU K, LEI N, CHEN W, et al

Curvature adaptive surface remeshing by sampling normal cycle

[J]. Computer-Aided Design, 2019, 111: 1- 12

DOI:10.1016/j.cad.2019.01.004      [本文引用: 1]

BÉCHET E, CUILLIERE J C, TROCHU F

Generation of a finite element MESH from stereolithography (STL) files

[J]. Computer-Aided Design, 2002, 34 (1): 1- 17

DOI:10.1016/S0010-4485(00)00146-9      [本文引用: 1]

AUBRY R, KARAMETE B K, MESTREAU E L, et al

A three-dimensional parametric mesher with surface boundary-layer capability

[J]. Journal of Computational Physics, 2014, 270: 161- 181

DOI:10.1016/j.jcp.2014.03.057     

GUO J, DING F, JIA X, et al

Automatic and high-quality surface mesh generation for CAD models

[J]. Computer-Aided Design, 2019, 109: 49- 59

DOI:10.1016/j.cad.2018.12.005      [本文引用: 1]

尤磊, 申则宇, 张立强, 等

CAD 模型三角网格优化算 法

[J]. 计算机辅助设计与图形学学报, 2019, 31 (6): 878- 885

DOI:10.3724/SP.J.1089.2019.17393      [本文引用: 1]

YOU Lei, SHEN Zeyu, ZHANG Liqiang, et al

A mesh optimization algorithm for CAD models

[J]. Journal of Computer-Aided Design and Computer Graphics, 2019, 31 (6): 878- 885

DOI:10.3724/SP.J.1089.2019.17393      [本文引用: 1]

SHEWCHUK J R. What is a good linear element? interpolation, conditioning, and quality measures [C]// Proceedings of the International Meshing Roundtable . Ithaca: SIAM, 2002: 115-126.

[本文引用: 1]

FREY P J, BOROUCHAKI H

Geometric surface mesh optimization

[J]. Computing and Visualization in Science, 1998, 1 (3): 113- 121

DOI:10.1007/s007910050011      [本文引用: 1]

BOTSCH M, BOMMES D, VOGEL C, et al. GPU-based tolerance volumes for mesh processing [C]// Proceedings of the Pacific Conference on Computer Graphics and Applications . Goslar: IEEE, 2004: 237-243.

[本文引用: 1]

MANDAD M, COHEN-STEINER D, ALLIEZ P

Isotopic approximation within a tolerance volume

[J]. ACM Transactions on Graphics, 2015, 34 (4): 1- 12

[本文引用: 1]

WANG B, SCHNEIDER T, HU Y, et al

Exact and efficient polyhedral envelope containment check

[J]. ACM Transactions on Graphics, 2020, 39 (4): 114

[本文引用: 1]

HU K, YAN D M, BOMMES D, et al

Error-bounded and feature preserving surface remeshing with minimal angle improvement

[J]. IEEE Transactions on Visualization and Computer Graphics, 2016, 23 (12): 2560- 2573

[本文引用: 1]

YANG Y, ZHANG W X, LIU Y, et al

Error-bounded compatible remeshing

[J]. ACM Transactions on Graphics, 2020, 39 (4): 1- 15

[本文引用: 1]

ZHANG W X, WANG Q, GUO J P, et al

Constrained remeshing using evolutionary vertex optimization

[J]. Computer Graphics Forum, 2022, 41 (2): 237- 247

DOI:10.1111/cgf.14471      [本文引用: 1]

MEYER M, DESBRUN M, SCHRÖDER P, et al. Discrete differential-geometry operators for triangulated 2-manifolds [C]// Visualization and Mathematics III . Berlin: Springer, 2003: 35-57.

[本文引用: 1]

/