发明名称 三维网格模型四面体化方法
摘要 本发明公开了一种三维网格模型四面体化方法,包括以下步骤:(1)、模型初始位置预处理;(2)、构建体心立方结构;(3)、计算节点符号及两端节点符号相反的四面体边的切点;(4)、切点移动;(5)、边界重四面体化。本发明公开的三维模型四面体化方法,基于体心立方的网格四面体化算法,增加了三维模型主成分分析的预处理,改进了模型边界切点的移动方式转向模型特征点移动,并对最终的四面体网格使用了密度能量误差函数来优化节点的位置。三维模型运用主成分分析后,提高了初始四面体单元的质量;改进切点向模型特征点移动保证了四面体化后模型的局部特征;密度能量误差函数优化了最终四面体网格的质量。
申请公布号 CN103942836B 申请公布日期 2016.09.28
申请号 CN201410171681.8 申请日期 2014.04.25
申请人 杭州梅德珥智能科技有限公司 发明人 李重;王君良;王岳剑
分类号 G06T17/00(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 浙江英普律师事务所 33238 代理人 陈小良
主权项 一种三维网格模型四面体化方法,包括以下步骤:(1)、模型初始位置预处理根据三维网格模型数据中面的法向,运用表面法向主成分分析法(NPCA)提取三维网格模型的主要成分;(2)、构建体心立方结构根据三维网格模型表面曲率,自适应构建基于欧式距离变换的细分八叉树结构的体心立方,得到初始四面体;(3)、计算节点符号及两端节点符号相反的四面体边的切点计算体心立方的节点符号及切点,其中,节点符号计算方法为:根据角度权伪法矢量判断节点在三维网格模型内部或外部,定义位于三维网格模型内部的节点的符号为正,位于三维网格模型外部的节点的符号为负,位于三维网格模型表面的节点的符号为零;或者,定义位于三维网格模型外部的节点的符号为正,位于三维网格模型内部的节点的符号为负,位于三维网格模型表面的节点的符号为零;切点计算方法为:模型中节点符号不同的边所在的三角面组成一个三角面集合,分别计算每条节点符号不同的边与这些三角面所在的平面的交点,切点为在三角面内的交点;(4)、切点移动分别计算切点和两端节点之间的距离与边长的比值,比值小于阈值的切点进行移动,切点移动方向为三维网格模型表面的特征点,且该特征点对应的虚拟原点与切点之间的距离最小;其中,切点移动方向的确定方法为:计算切点所在三维网格三角面的特征点,使用拉普拉斯算法计算各特征点对应的拉普拉斯坐标虚拟原点,计算切点和各虚拟原点之间的距离,移动方向为与切点距离最小的虚拟原点对应的特征点,所述拉普拉斯算法具体为:三维网格上某一点的拉普拉斯坐标定义为该点指向其相邻点的所有向量之和,拉普拉斯坐标具有平移不变性,使用网格上相邻顶点的线性组合来表示顶点的网格坐标,描述网格的细节特性和局部特征,具体的拉普拉斯坐标公式表示如下:<maths num="0001"><math><![CDATA[<mrow><msub><mi>&sigma;</mi><mi>i</mi></msub><mo>=</mo><munder><mo>&Sigma;</mo><mrow><mi>j</mi><mo>&Element;</mo><mi>N</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></munder><msub><mi>w</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mrow><mo>(</mo><msub><mi>v</mi><mi>i</mi></msub><mo>-</mo><msub><mi>v</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000984229450000011.GIF" wi="394" he="111" /></maths>其中N(i)={j{i,j}∈E}是与顶点v<sub>i</sub>的相邻的顶点的集合,w<sub>ij</sub>表示顶点v<sub>i</sub>和v<sub>j</sub>之间的权重,满足等式<img file="FDA0000984229450000012.GIF" wi="235" he="111" />(5)、边界重四面体化基于网格质量的密度能量误差函数对四面体的边界重新四面体化,构成逼近模型的四面体网格;其中,基于网格质量的密度能量误差函数如下:<maths num="0002"><math><![CDATA[<mrow><msub><mi>E</mi><mrow><mi>O</mi><mi>D</mi><mi>T</mi></mrow></msub><mo>=</mo><mfrac><mn>1</mn><mn>4</mn></mfrac><munder><mo>&Sigma;</mo><mi>i</mi></munder><msup><msub><mi>x</mi><mi>i</mi></msub><mn>2</mn></msup><mrow><mo>(</mo><msub><mi>&Sigma;</mi><mrow><msub><mi>T</mi><mi>j</mi></msub><mo>&Element;</mo><msub><mi>&Omega;</mi><mi>i</mi></msub></mrow></msub><msub><mi>q</mi><mi>j</mi></msub><mo>|</mo><msub><mi>T</mi><mi>j</mi></msub><mo>|</mo><mo>)</mo></mrow><mo>-</mo><msub><mo>&Integral;</mo><mi>M</mi></msub><msup><mi>x</mi><mn>2</mn></msup><mi>d</mi><mi>x</mi></mrow>]]></math><img file="FDA0000984229450000021.GIF" wi="781" he="126" /></maths>其中,M是整个网格空间,E<sub>ODT</sub>是网格空间M的密度能量误差,x<sub>i</sub>是网格节点的当前位置,Ω<sub>i</sub>是以x<sub>i</sub>为中心节点的星型结构,T<sub>j</sub>是星型结构Ω<sub>i</sub>中的网格单元,x是网格空间M中的任意位置,q<sub>j</sub>是网格单元T<sub>j</sub>的网格质量;|T<sub>j</sub>|是T<sub>j</sub>的面积,通过求解上式的极小值可得优化后节点的位置为:<maths num="0003"><math><![CDATA[<mrow><msup><msub><mi>x</mi><mi>i</mi></msub><mo>*</mo></msup><mo>=</mo><mfrac><mn>1</mn><mrow><msub><mi>&Sigma;</mi><mrow><msub><mi>T</mi><mi>j</mi></msub><mo>&Element;</mo><msub><mi>&Omega;</mi><mi>i</mi></msub></mrow></msub><msub><mi>q</mi><mi>j</mi></msub><mo>|</mo><msub><mi>T</mi><mi>j</mi></msub><mo>|</mo></mrow></mfrac><munder><mo>&Sigma;</mo><mrow><msub><mi>T</mi><mi>j</mi></msub><mo>&Element;</mo><msub><mi>&Omega;</mi><mi>i</mi></msub></mrow></munder><msub><mi>q</mi><mi>j</mi></msub><mo>|</mo><msub><mi>T</mi><mi>j</mi></msub><mo>|</mo><msub><mi>c</mi><mi>j</mi></msub></mrow>]]></math><img file="FDA0000984229450000022.GIF" wi="598" he="147" /></maths>其中x<sub>i</sub><sup>*</sup>是x<sub>i</sub>的优化后的位置,c<sub>j</sub>是T<sub>j</sub>的外接圆圆心,Ω<sub>i</sub>是以x<sub>i</sub>为中心节点的星型结构,T<sub>j</sub>是星型结构Ω<sub>i</sub>中的网格单元,x是网格空间M中的任意位置,q<sub>j</sub>是网格单元T<sub>j</sub>的网格质量;在四面体网格中,网格单元的质量函数可设为:<maths num="0004"><math><![CDATA[<mrow><mi>q</mi><mo>=</mo><msqrt><mn>24</mn></msqrt><mfrac><mi>r</mi><msub><mi>l</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mfrac></mrow>]]></math><img file="FDA0000984229450000023.GIF" wi="262" he="118" /></maths>其中r为四面体的内接球半径,l<sub>max</sub>是四面体的最长边。
地址 310018 浙江省杭州市杭州经济技术开发区白杨街道19号大街571号4幢c111室