CN101441780B - 三维网格模型的剖切方法 - Google Patents

三维网格模型的剖切方法 Download PDF

Info

Publication number
CN101441780B
CN101441780B CN2008101975094A CN200810197509A CN101441780B CN 101441780 B CN101441780 B CN 101441780B CN 2008101975094 A CN2008101975094 A CN 2008101975094A CN 200810197509 A CN200810197509 A CN 200810197509A CN 101441780 B CN101441780 B CN 101441780B
Authority
CN
China
Prior art keywords
array
tri patch
grid model
polygon
tri
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008101975094A
Other languages
English (en)
Other versions
CN101441780A (zh
Inventor
王泉德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN2008101975094A priority Critical patent/CN101441780B/zh
Publication of CN101441780A publication Critical patent/CN101441780A/zh
Application granted granted Critical
Publication of CN101441780B publication Critical patent/CN101441780B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

本发明涉及三维虚拟场景中的三维网格模型的数据结构和实时剖切操作,特别涉及对保证这种操作剖切成的子三维网格模型的完整性,以及和原三维网格模型数据结构一致性的三维网格模型的剖切方法。本发明直接在三角网格模型的顶点数组和三角面片数组上实现三角网格模型的平面剖切,避免计算并建立半边数据结构所需的系统开销。若三维网格模型的面片不是三角面片,需要将每个面片剖分为多个三角面片,从而将三维网格模型转化为三角网格模型。

Description

三维网格模型的剖切方法
技术领域
本发明涉及三维虚拟场景中的三维网格模型的数据结构和实时剖切操作,特别涉及对保证这种操作剖切成的子三维网格模型的完整性,以及和原三维网格模型数据结构一致性的三维网格模型的剖切方法。 
背景技术
网格模型是一种重要的三维形体表示方法,其中三角网格使用最为广泛。网格模型可以以任意精度表示任意复杂的曲面和空间形体。在CAD/CAM领域,由曲线和曲面造型构造出的空间形体模型一般都转化为网格模型来进行存储和共享,CAM设备可直接利用网格模型数据进行加工和生产。在地理空间信息科学等领域,从大量的点云数据中重建的三维形体也大多转化为三角网格模型进行存储和管理,便于采用不同的方法进行后续处理和分析,提取不同实际应用所需要的重要信息。随着几何造型领域的不断发展,网格模型成为三维形体的主流描述方式之一。 
面对机械设计和生产加工中无处不在的网格模型,实现任意实体网格模型的剖切,进而计算实体模型不同部分的特征信息,具有较大实用价值和现实意义。为此,本文提出一种可以对任意三角网格模型进行平面剖切的方法,该方法根据所指定任意平面,直接在三角网格模型的三角面片集合上实现剖切计算,将任意拓扑结构的三角网格模型剖切为子三角网格。由于避免了将三角网格模型转换为特定的数据结构进行存储、管理和维护所带来的空间和时间复杂性,从而能实现三角网格模型的快速、高效剖切。
对于任意一个给定的三维网格模型,只有所有面片围成有限封闭空间的网格模型才构成计算机图形学意义上的正则三维形体。常用网格模型的每个面片是平面凸多边形,且网格上的每条边由且仅由两个面片共有。在网格模型中,每个面片的边数可能是变化的,网格模型的每个面片都是三角形时称之为三角网格。非三角网格可以通过网格模型中每个凸多边形面片的三角剖分来将其转换为三角网格。 
为了能统一地描述各类网格模型,需要设计一种通用的网格数据结构。目前,最常用的网格数据表示方法是半边数据结构。半边数据结构以边为中心来组织网格模型的所有顶点、边和面数据。对于网格模型中的任意一条边e,将其分为两条半边eler,每条半边记录中包括p0,…,p4共五个表示邻接关系的指针:p0指向该半边顶点;p1指向同一面片的下一条半边;p2指向本条半边所属面片;p3指向属于同一条边的另一半边;p4指向属于同面片的前一条半边。此外,每个顶点记录包含一个以该顶点为起点的任一条半边的指针p5;每个面片记录包含一个指向属于该面片的任一条半边的指针p6。在建立起整个网格模型的半边结构后,可以通过上述指针访问整个网格的数据。半边数据结构可以表示任意网格。 
因此,如果采取半边数据结构可以表示任意网格表示三角网格,则需要根据所读取的三角网格存储信息计算并建立其半边数据结构,如根据读取的三角网格顶点列表和三角面片列表构造半边,计算点、边和三角面片的邻接关系并添加到网格的半边数据结构中等。 
发明内容
目前常用的三维网格模型剖切方法主要是采用平面剖切、开窗或用户交互选择面片带的方式来实现剖切。本发明可通过指定剖切方向和剖切线 对任意网格三维模型进行剖切,剖切方向和剖切线均可根据用户要求来指定,当剖切线只包含一条线段时即可实现平面剖切;当剖切线为封闭多边形时即可实现各种形状的开窗;剖切线可任意设置,对剖切线中每条线段的长度没有限制,比选择面片带进行剖切的方式要更为精确。因此,目前常用剖切方法是本发明的特例。此外,本发明直接在三维网格模型的顶点数组和面片数组信息上实现剖分计算,确保剖分形成的两个子三维网格模型的完整性,并提出了一种快速多边形三角剖分方法,是更灵活、更精确、更快速的三维网格模型剖切方法,可以满足地理信息、医学、工程施工等领域对地形三维网格模型、人体三维网格模型和施工工程三维网格模型等进行精确剖切、体积和面积等信息计算的需要。 
本发明的上述技术问题主要是通过下述技术方案得以解决的: 
一种三维网格模型的剖切方法,其特征在于,包括以下步骤: 
步骤一,模型转换装置将三维网格模型转换为三角网格模型; 
步骤二,模型剖切预备装置对步骤1中转换后的三角网格模型指定剖切方向和剖切线; 
步骤三,模型剖切装置对步骤2中已经指定剖切方向和剖切线的三角网格模型进行剖切。 
在上述的三维网格模型的剖切方法中,所述的步骤1中具体的转换方法如下: 
步骤2.1,三角面片剖分单元将三维网格模型的各个多边形面片剖分为三角形面片; 
步骤2.2,数组组合分配单元将上述步骤1中剖分的三角形面片的顶点数组和三角面片数组存储到数组存储单元,完成所有三角面片的信息添加分配后得到的三角面片数组和顶点数组即构成了三角网格模型,其中顶点 数组的每个元素存储有包括一个顶点的三维坐标、法线向量和纹理坐标,三角面片数组中每三个元素表示一个三角面片; 
在上述的三维网格模型的剖切方法中,所述的步骤2中,指定剖切方向的具体方法如下:由剖切方向指定单元指定三维空间中与剖切方向平行的矢量,即剖切方向。 
在上述的三维网格模型的剖切方法中,所述的步骤2中,指定剖切线的具体方法如下:由剖切线指定单元指定垂直剖切方向的二维平面内的顶点序列即构成的剖切线,所述的剖切线是位于垂直剖切方向平面内的直线或者曲线。 
在上述的三维网格模型的剖切方法中,所述的步骤3中,对已经指定剖切方向和剖切线的三角网格模型进行剖切的具体方法,由剖切面片判断单元对上述若干三角面片是否与剖切面相交选择执行下面步骤: 
步骤5.1,若剖切面片判断单元判断剖切面与上述剖切后的三角面片不相交:首先由三角面片位置判断单元判断三角面片位于剖切面的正侧或反侧,数组组合分配单元将三角形面片的信息分配到正侧或反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角网格模型的所有三角面片的信息添加分配后得到的正侧和反侧三角面片数组和顶点数组即构成了正侧和反侧的子三角网格模型一; 
步骤5.2,若剖切面片判断单元判断剖切面与上述剖切后的三角面片相交,则按照以下步骤进行: 
步骤5.21.首先由多边形面片剖分单元将三角面片剖分为位于正侧和反侧的两个多边形面片,然后由三角面片剖分单元将正侧和反侧的两个多边形面片剖分为三角形面片,数组组合分配单元将剖分为三角形面片的信 息添加分配到正侧或反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角网格模型的所有三角面片的信息添加分配后得到的正侧和反侧三角面片数组和顶点数组即构成了正侧和反侧的子三角网格模型二; 
步骤5.22.交点计算单元根据三角面片与剖切面的所有交点计算该剖切截面的剖面多边形; 
步骤5.23.三角面片剖分单元将将步骤5.22中剖面多边形剖分为三角面片,数组组合分配单元并将剖分后的三角面片信息添加到正侧和反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角面片的信息添加分配后得到的该剖切截面的子三角网格模型三。 
在上述的三维网格模型的剖切方法中,所述的步骤5.22中,根据三角面片与剖切面的所有交点计算该剖切截面的剖面多边形的具体方法为: 
步骤6.1,由区域分配模块计算折线段中的每条线段沿剖切方向扫描形成的平面条形区域; 
步骤6.2,由多边形获取模块计算每个条形区域和三角网格模型的每个三角面片的两个交点,即包括条形区域两条端线与所有面片的交点构成的交线,根据条形区域和所有三角面片的交线的邻接关系依次连接各条交线,得到条形区域和三角网格模型相交的若干个交面多边形,该若干个交面多边形即所需得到的剖面多边形。 
在上述的三维网格模型的剖切方法中,所述的步骤2.1中,三角面片剖分单元将剖面多边形剖分为三角面片的方法为,首先由内边界判断模块判断剖面多边形是否存在内边界,然后选择执行下面步骤: 
步骤7.1,若剖面多边形不存在内边界,则由三角剖分分配模块直接计 算剖面多边形的三角剖分; 
步骤7.2,若剖面多边形存在一条及一条以上内边界,则由三角剖分分配模块依次取最外层和次外层边界形成环形多边形,计算连接环形多边形内外环边界的桥边,然后计算添加桥边后的环形多边形的三角剖分。 
在上述的三维网格模型的剖切方法中,所述的步骤5.21中,三角面片剖分单元将剖面多边形剖分为三角面片的方法为,首先由内边界判断模块判断剖面多边形是否存在内边界,然后选择执行下面步骤: 
步骤7.1,若剖面多边形不存在内边界,则由三角剖分分配模块直接计算剖面多边形的三角剖分; 
步骤7.2,若剖面多边形存在一条及一条以上内边界,则由三角剖分分配模块依次取最外层和次外层边界形成环形多边形,计算连接环形多边形内外环边界的桥边,然后计算添加桥边后的环形多边形的三角剖分。 
在上述的三维网格模型的剖切方法中,所述的步骤5.22中,三角面片剖分单元将剖面多边形剖分为三角面片的方法为,首先由内边界判断模块判断剖面多边形是否存在内边界,然后选择执行下面步骤: 
步骤7.1,若剖面多边形不存在内边界,则由三角剖分分配模块直接计算剖面多边形的三角剖分; 
步骤7.2,若剖面多边形存在一条及一条以上内边界,则由三角剖分分配模块依次取最外层和次外层边界形成环形多边形,计算连接环形多边形内外环边界的桥边,然后计算添加桥边后的环形多边形的三角剖分。 
在上述的三维网格模型的剖切方法中,所述的子三角网格模型一、子三角网格模型二以及子三角网格模型三构成了三角网格模型,所述的数组组合分配单元还将三角面片的三个顶点在顶点数组中的索引号存储在存储单元中。
附图说明
图1是本发明的存储单元的三角网格信息存储格式示意图; 
图2是本发明的三角面片与平面的相交于两条边(非顶点)的位置关系示意图; 
图3是本发明的三角面片与平面的相交于一个顶点和一条边的位置关系示意图; 
图4是本发明出现的复杂截面的剖面多边形结构示意图; 
图5是本发明图2或者图3中中剖面多边形的三角剖分结果示意图; 
图6是本发明剖切面片判断单元针对非封闭剖切线的剖切方法示意图; 
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。 
实施例: 
一种三维网格模型的剖切方法,其特征在于,包括以下步骤: 
步骤一,模型转换装置将三维网格模型转换为三角网格模型; 
具体的转换方法如下: 
步骤2.1,三角面片剖分单元将三维网格模型的各个多边形面片剖分为三角形面片;步骤2.2,数组组合分配单元将上述步骤1中剖分的三角形面片的顶点数组和三角面片数组存储到数组存储单元,完成所有三角面片的信息添加分配后得到的三角面片数组和顶点数组即构成了三角网格模型,其中顶点数组的每个元素存储有包括一个顶点的三维坐标、法线向量和纹理坐标,三角面片数组中每三个元素表示一个三角面片; 
如图1所示,上述步骤2.1以及步骤2.2的三角面片剖分单元剖分三角形面片以及数组组合分配单元将相应数组存储到数组存储单元的具体算法为: 
对三维网格模型中的任意面片A,设A的顶点集为VA={v0,...,vM-1},法向为
Figure G2008101975094D00081
剖分形成的三角面片集记为RA,采用如下方法实现A的三角剖分: 
1)
Figure G2008101975094D00082
2)计算中VA中所有顶点的凸凹性:对任意顶点vi(vi∈VA), 
Figure G2008101975094D00083
其中,当i=0时  v v i p = v M i - 1 , 否则  v v i p = v i - 1 ; 当i=Mi-1时  v v i q = v 0 , 否则  v v i q = v i + 1 ;
3)若vi为凸顶点,且除
Figure G2008101975094D00088
vi外,VA中没有其它顶点位于三角形 
Figure G2008101975094D000810
中,则顶点vi可切除,
Figure G2008101975094D000811
的最小内角记为
Figure G2008101975094D000812
4)按下式计算最小内角最大的顶点vs, 
Figure G2008101975094D000813
5)  R A = R A ∪ { Δ v v i p v i v v i q } , VA=VA-{vs}: 
6)若|VA|>3,转2);否则把VA中最后3个顶点构成的三角形添加到RA中; 
7)按最大最小内角准则对RA中所有三角面片进行优化即可得到Ai的三角剖分:最大最小内角准则三角面片优化方法针对共边的三角面片对进行:对任意两共边三角面片T1和T2,如果T1和T2构成的四边形是凹的,则不做任何处理;如果T1和T2构成的四边形是凸的,则计算T1和T2的最小内角∠min(T1,T2)交换四边形对角线得到两个新的共边三角面片,记为
Figure G2008101975094D0008143932QIETU
计算最小内角
Figure G2008101975094D0008144019QIETU
如果  ∠ min ( T 1 ′ , T 2 ′ ) > ∠ min ( T 1 , T 2 ) , 则用
Figure G2008101975094D0008144034QIETU
Figure G2008101975094D0008144050QIETU
替换T1和T2。上述优化过程针对整个三角面片集合重复进行,直到不存在可优化的三角面片对为止。
步骤二,模型剖切预备装置对步骤一中转换后的三角网格模型指定剖切方向和剖切线, 
其中由剖切方向指定单元指定三维空间中与剖切方向平行的矢量,即剖切方向,由剖切线指定单元指定垂直剖切方向的二维平面内的顶点序列即构成的剖切线,所述的剖切线是位于垂直剖切方向平面内的直线或者曲线,具体方法如下:令待剖切的三角网格模型记为M,其顶点集和三角面片集分别记为MV和MT。剖切面由顶点序列p0,...pN-1(N≥2)依次连接成的折线剖切线〈p0,...pN-1〉沿剖切方向
Figure G2008101975094D00091
扫描成的曲面,顶点p0,...pN-1位于垂直于
Figure G2008101975094D00092
的平面内。M被剖切后形成两个子三角网格模型,分别记为M+和M-,相应的顶点集和三角面片集分别记为
Figure G2008101975094D00093
Figure G2008101975094D00094
Figure G2008101975094D0009103033QIETU
Figure G2008101975094D00095
。任意三角面片T的顶点集记为  V T = { v T 1 , v T 2 , v T 3 } .
在指定剖切线〈p0,...pN-1〉时,为确保其沿着剖切方向
Figure G2008101975094D00097
可将M剖分为两部分,必须确保剖切线〈p0,...pN-1〉满足下述条件之一: 
(1)〈p0,...pN-1〉封闭,即p0=pN-1; 
(2)〈p0,...pN-1〉不封闭,但pN-1和pN-1位于M的包围盒外; 
步骤三,模型剖切装置对步骤2中已经指定剖切方向和剖切线的三角网格模型进行剖切。具体方法,由剖切面片判断单元对上述若干三角面片是否与剖切面相交选择执行下面步骤: 
步骤5.1,若剖切面片判断单元判断剖切面与上述剖切后的三角面片不相交:首先由三角面片位置判断单元判断三角面片位于剖切面的正侧或反侧,数组组合分配单元将三角形面片的信息添加分配到正侧或反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角网格模型的所有三角面片的信息添加分配后得到的正侧和反侧三角面片数组和顶点数组即构成了正侧和反侧的 子三角网格模型一;具体处理过程如下: 
对M中任意三角面片T,按上述方法判定三角面片三个顶点
Figure G2008101975094D00101
Figure G2008101975094D00102
Figure G2008101975094D00103
位于剖切面正侧或反侧,若顶点
Figure G2008101975094D00105
Figure G2008101975094D00106
都位于剖切面正侧或剖切面上,则 
V M + = V M + ∪ V T , T M + = T M + ∪ { T } ;
若顶点
Figure G2008101975094D00109
Figure G2008101975094D001010
Figure G2008101975094D001011
都位于剖切面反侧或剖切面上,则 
V M - = V M - ∪ V T , T M - = T M - ∪ { T }
如图6所示,剖切面片判断单元的具体算法如下: 
为了快速判断任意顶点p位于剖切面的正侧还是反侧,采用如下方法: 
(1)将p和M的包围盒BM投影到〈p0,...pN-1〉所在平面,p的投影记为p′,M的包围盒BM的投影为多边形区域,记为BM′; 
(2)若〈p0,...pN-1〉封闭:在〈p0,...pN-1〉所在平面内连接p′和多边形〈p0,...pN-1〉外任意一点pw,求线段p′pw和多边形〈p0,...pN-1〉的交点个数,交点个数计算方法为: 
1)p′pw和多边形〈p0,...pN-1〉相交在任意顶点pi(0≤i≤N-1)时,若〈p0,...pN-1〉中以pi为起点和终点的两条边位于p′pw同侧,记相交两次,否则记相交一次; 
2)p′pw和多边形〈p0,...pN-1〉相交在非顶点时,记相交一次。 
若线段p′pw和多边形〈p0,...pN-1〉的交点个数为奇数,判定p位于剖切面正侧;否则,判定p位于剖切面反侧; 
(2)若〈p0,...pN-1〉不封闭:在BM′外取两点
Figure G2008101975094D001014
Figure G2008101975094D001015
,使得线段pN-1
Figure G2008101975094D001016
Figure G2008101975094D001017
Figure G2008101975094D001018
Figure G2008101975094D001019
p0都和BM′不相交。用(1)中交点计数法计算p′和多边形 
Figure G2008101975094D001020
外任意一点pw的连线p′pw和多边形
Figure G2008101975094D001021
的交点个数,若交点个数为奇数,判定p位于剖切面正侧;否则,判定p位于剖切面反侧;
步骤5.2,若剖切面片判断单元判断剖切面与上述剖切后的三角面片相交, 
步骤5.21.首先由多边形面片剖分单元将三角面片剖分为位于正侧和反侧的两个多边形面片,然后由三角面片剖分单元将正侧和反侧的两个多边形面片剖分为三角形面片,数组组合分配单元将剖分为三角形面片的信息添加分配到正侧或反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角网格模型的所有三角面片的信息添加分配后得到的正侧和反侧三角面片数组和顶点数组即构成了正侧和反侧的子三角网格模型二;处理过程如下: 
对M中和剖切面相交的任意三角面片T,依次用剖切线〈p0,...pN-1〉中各条线段沿扫描方向
Figure G2008101975094D00111
扫描形成的条状区域将T剖切为仅位于剖切面一侧的多个小三角面片,然后按前面所述方法判断各个小三角面片位于剖切面的正侧或反侧,并将小三角面片及其顶点信息添加到
Figure G2008101975094D00113
Figure G2008101975094D00115
中;同时,根据条状区域和T的交点得到剖面多边形,将剖面多边形剖分为三角面片后,将这些三角面片及其顶点信息同时添加到
Figure G2008101975094D00116
Figure G2008101975094D00117
Figure G2008101975094D0011103839QIETU
Figure G2008101975094D00118
中。 
令剖切线段pi-1pi(0≤i≤N-1)沿扫描方向
Figure G2008101975094D00119
形成的条状区域Ri-1对T剖切完成后的三角面片集合为  S i - 1 = { T 0 , . . . , T N i - 1 - 1 } (i=0时,S-1={T})。对剖切线段pipi+1沿扫描方向
Figure G2008101975094D001111
扫描形成的条状区域Ri对三角面片T的剖切处理方法如下: 
(1)取三角面片Ti∈Si-1,置Si为空; 
(2)线段pipi+1所在直线沿扫描方向
Figure G2008101975094D001112
扫描形成的平面记为,三角面片T和平面
Figure G2008101975094D001113
相交的情况必为图2和图3中所示两种情形之一,交点记为
Figure G2008101975094D001114
Figure G2008101975094D001115
对图2中所示情形:将三角面片
Figure G2008101975094D001116
Figure G2008101975094D001117
Figure G2008101975094D001118
添加到Si中;对图3中所示情形:将三角面片添加到Si中;
(3)计算Ri和T的交线Li(T):计算剖切线段pipi+1在三角面片T所在平面的投影
Figure G2008101975094D00121
则Ri和T的交线Li(T)为三角面片T所在平面上线段
Figure G2008101975094D00122
和线段的重合部分,即:  L i ( T ) = ( v I 1 v I 2 ) ∩ p i T p i + 1 T ;
(4)将Ti从Si-1中删除。若Si-1为空则处理完毕,否则转(1); 
剖切线〈p0,...pN-1〉中所有N条线段按上述方法对三角面片T的剖切处理完成后,按前面所述方法判断SN-1中的每个三角面片位于剖切面的正侧或反侧,并将这些三角面片及其顶点信息添加到
Figure G2008101975094D00125
Figure G2008101975094D00126
Figure G2008101975094D00128
中; 
然后,按照剖切面与上述剖切后的三角面片相交和不相交处理完三角网格模型M中所有的三角面片后,
Figure G2008101975094D00129
Figure G2008101975094D001211
即为剖切形成的剖面开口的两个子三角网格模型的顶点集和三角面片集,为使得子三角网格模型封闭,需要按下述方法对剖切截面进行三角剖分:即首先交点计算单元根据三角面片与剖切面的所有交点计算该剖切截面的剖面多边形,具体方法为: 
步骤6.1,由区域分配模块计算折线段中的每条线段沿剖切方向扫描形成的平面条形区域; 
步骤6.2,由多边形获取模块计算每个条形区域和三角网格模型的每个三角面片的两个交点,即包括条形区域两条端线与所有面片的交点构成的交线,根据条形区域和所有三角面片的交线的邻接关系依次连接各条交线,得到条形区域和三角网格模型相交的若干个交面多边形,该若干个交面多边形即所需得到的剖面多边形。具体算法为: 
剖面的三角剖分针对剖切线〈p0,...pN-1〉的每条折线段进行。步骤二中已经计算出了M中三角面片T和剖切线段pipi+1沿扫描方向
Figure G2008101975094D001213
扫描形成的条状区域Ri的交线Li(T)。因此,可按下式计算条状区域Ri和M中所有三角面片交线的集合Li
L i = ∪ T ∈ M T L i ( T )
Ri剖切M形成的剖面Ai可能由多条多边形边界构成,为此不妨设  A i = { A i 0 , . . . , A i K - 1 } (K≥1,是Ai包含的边界条数),Li中的所有交线按下述方法连接成剖面Ai的各个多边形边界: 
(1)令n=0(0≤n≤K-1); 
(2)从Li提取任意交线  l f = ⟨ v f 1 , v f 2 ⟩ 作为剖面多边形
Figure G2008101975094D00134
的第一条边,同时将lf从中Li去除; 
(3)置当前边  l = ⟨ v 1 , v 2 ⟩ = ⟨ v f 1 , v f 2 ⟩
(4)在Li中计算距离当前边末端v2最近的边lnext: 
l next = min l ′ ∈ L i ( | v 2 - l ′ | ) , 其中|v2-l′|计算顶点v2与边l′两端点距离的较小值 
(5)若|v2-lnext|小于v2和剖面多边形
Figure G2008101975094D00137
的第一条边起点
Figure G2008101975094D00138
的距离 
Figure G2008101975094D00139
则lnext为剖面多边形的下一条边,同时将lnext从中Li去除,当前边l=lnext转(4)寻找下一条边;否则,剖面多边形
Figure G2008101975094D001311
的所有边提取完毕。若Li为空,则整个过程结束;否则,n=n+1,转(2)从Li中为新的剖面多边形 
Figure G2008101975094D0013104632QIETU
提取边。 
对于提取的剖面Ai的各个多边形边界,对于满足正则性要求的三角网格模型M,这些多边形边界应该是无自相交的多边形,如图3所示,为可能出现的较复杂剖面多边形,其中阴影部分为实体区域,各个多边形边界可能相离,也可能相互包含。 
对于剖面  A i = { A i 0 , . . . , A i K - 1 } , 任意  A i k ∈ A i ( 0 ≤ k ≤ ( K - 1 ) ) , 若有下述(1)和(2)式成立: 
⫬ ∃ ( A ′ ∈ A i , A ′ ≠ A i k ) A ′ ⊃ A i k - - - ( 1 )
⫬ ∃ ( A ′ ∈ A i , A ′ ≠ A i k ) A i k ⊃ A ′ - - - ( 2 )
Figure G2008101975094D00141
所包围的区域为实体区域,并称之为单多边形边界实体区域。 
此外,对任意  A i j , A i k ∈ A i ( 0 ≤ j , k ≤ ( K - 1 ) ; j ≠ k ) , 且  A i j ⊃ A i k , 若有下述(3)、(4)和(5)式成立: 
Figure G2008101975094D00145
⫬ ∃ ( A ′ ′ ∈ A i , A ′ ′ ≠ A i j , A ′ ′ ≠ A i k ) A i j ⊃ A ′ ′ ⊃ A i k - - - ( 5 )
(其中|·|计算集合元素个数,mod为模运算) 
则Ai和Aj所夹的区域为实体区域,称之为环形边界实体区域,
Figure G2008101975094D0014104827QIETU
为边界外环,
Figure G2008101975094D0014104836QIETU
为内环。 
然后,三角面片剖分单元将步骤B中剖面多边形剖分为三角面片,数组组合分配单元并将剖分后的三角面片信息添加到正侧和反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角面片的信息添加分配后得到的该剖切截面的子三角网格模型三。 
然而,在对剖切截面剖分过程中,可能遇到复杂的剖分情况:即是否存在内边界问题,即上述的不存在内边界即单多边形边界实体区域和存在内边界即环形边界实体区域进行定义,在这种情况下: 
首先由内边界判断模块判断剖面多边形是否存在内边界,然后选择执行下面步骤: 
步骤7.1,若剖面多边形不存在内边界,则由三角剖分分配模块直接计算剖面多边形的三角剖分; 
具体算法如下: 
基于凸凹顶点的单多边形边界实体区域即剖面多边形不存在内边界的三角剖分方法
单多边形边界可以采用逐步切除凸顶点的方法实现其Delaunay三角剖分。对A中的任意单多边形边界Ai∈Aset(1≤i≤N),设Ai的顶点集为  V A i = { v 0 , . . . , v M i - 1 } (Mi为Ai顶点数),法向为
Figure G2008101975094D00152
三角剖分形成的三角面片集记为
Figure G2008101975094D00153
采用如下方法实现三角剖分: 
1)
Figure G2008101975094D00154
2)计算中中所有顶点的凸凹性,对任意顶点  v i ( v i ∈ V A i ) ,
Figure G2008101975094D00157
其中,当i=0时  v v i p = v M i - 1 , 否则  v v i p = v i - 1 ;
当i=Mi-1时  v v i q = v 0 , 否则  v v i q = v i + 1 ;
3)若vi为凸顶点,且除
Figure G2008101975094D001512
vi
Figure G2008101975094D001513
外,
Figure G2008101975094D001514
中没有其它顶点位于
Figure G2008101975094D001515
中,则顶点vi可切除,
Figure G2008101975094D001516
的最小内角记为
Figure G2008101975094D001517
4)按下式计算最小内角最大的顶点vs, 
Figure G2008101975094D001518
R A i = R A i ∪ ( Δ v v i p v i v v i q ) , V A i = V A i - { v s } ;
5)若  | V A i | > 3 , 转2);否则把
Figure G2008101975094D001522
中最后3个顶点构成的三角形添加到
Figure G2008101975094D001523
中; 
按前面所述的最大最小内角准则对中所有三角面片进行优化即可得Ai的Delaunay三角剖分。 
步骤7.2,若剖面多边形存在一条及一条以上内边界,则由三角剖分分配模块依次取最外层和次外层边界形成环形多边形,计算连接环形多边形内外环边界的桥边,然后计算添加桥边后的环形多边形的三角剖分。 
具体算法如下: 
环形边界实体区域的三角剖分可以先构建连接内外环的桥边,然后采 用单多边形边界实体区域的三角剖分方法进行三角剖分。 
对于环形边界,桥边是连接一个外环顶点和一个内环顶点构成的,与外环和内环多边形各边均不相交的双向边。 
对A中的任意双多边形边界  ( A i , A j ) ( A i , A j ∈ A set , 1 ≤ i , j ≤ ( N - 1 ) , i ≠ j , A i ⊃ A j ) , 设Ai的顶点集为  V A i = { v 0 i , . . . , v M i - 1 i } (Mi为Ai顶点数),Aj的顶点集为  V A j = { v 0 j , . . . , v M j - 1 i } (Mj为Aj顶点数),则的三角剖分方法如下: 
将单多边形边界实体区域的三角剖分方法中顶点vi可切除的条件修改为:vi为凸顶点,且除
Figure G2008101975094D00164
vi
Figure G2008101975094D00165
外,
Figure G2008101975094D00166
Figure G2008101975094D00167
中没有其它顶点位于
Figure G2008101975094D00168
中; 
利用上述修改后的三角剖分方法对外边界Ai进行三角剖分,直到
Figure G2008101975094D00169
中不存在可切除顶点为止。此时,剖分形成的三角面片集为
Figure G2008101975094D001610
Ai的顶点集为  V A i = { v 0 i , . . . , v M i ′ - 1 i } (
Figure G2008101975094D0016105712QIETU
为余下的顶点数) 
构造桥边  ( v k i , v l j ) ( 0 ≤ k ≤ M i ′ , 0 ≤ l ≤ M j ) : 任取顶点  v k i ∈ V A i ( 0 ≤ k ≤ M i ′ ) , 计算顶点集合: 
E B ( v k i , V A j ) = { v | v ∈ V A j , 且除以顶点
Figure G2008101975094D0016105637QIETU
和v为起点或终点的边以外,边
Figure G2008101975094D001615
与内外边界多边形其它边不相交} 
则  v l j = min v ∈ E B ( v k i , V A j ) | | v k i - v | |
根据桥边
Figure G2008101975094D001617
构造新多边形Ai,j,其顶点集合为: 
V A i , j = { v 0 i , . . . , v k i , v l j , . . . , v 0 j , v M j - 1 j , v l j , v k i , . . . , v M i ′ - 1 i }
采用单多边形边界实体区域的三角剖分方法对Ai,j进行三角剖分,剖分成的三角面片集合记为
Figure G2008101975094D0016105751QIETU
; 
双多边形边界(Ai,Aj)的三角剖分结果为
Figure G2008101975094D001619
图4是采用上述三角剖分方法对图2或者图3中剖面多变形进行三角剖分的结果。 
剖面Ai的三角剖分完成后,将剖分形成的所有三角面片及其顶点信息 添加到
Figure G2008101975094D00171
Figure G2008101975094D00172
Figure G2008101975094D00173
Figure G2008101975094D00174
中。按步骤三对剖切线〈p0,...pN-1〉的每条折线段沿扫描方向
Figure G2008101975094D00175
扫描形成的条状区域对M剖切形成的剖面进行处理。 
完成上述所有处理过程后,即处理完三角面片与剖切面相交、不相交以及剖切界面的三角网格计算以后,
Figure G2008101975094D00176
Figure G2008101975094D00178
即为剖切形成的两个子三角网格模型的顶点集和三角面片集,剖分完成。 
剖切操作仅根据三角网格模型的三角面片集合进行,避免了将三角网格转换为特定的数据结构进行存储、管理和维护所带来的空间和时间复杂性,不仅能提高模型剖切的速度,同时还具有广泛的适应性,在计算机辅助设计/制造、工程施工管理、遥感遥测等领域有着重要的应用价值。 
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (8)

1.一种三维网格模型的剖切方法,其特征在于,包括以下步骤:
步骤一,模型转换装置将三维网格模型转换为三角网格模型;具体的转换方法如下:
步骤2.1,三角面片剖分单元将三维网格模型的各个多边形面片剖分为三角形面片;
步骤2.2,数组组合分配单元将上述步骤2.1中剖分的三角形面片的顶点数组和三角面片数组存储到数组存储单元,完成所有三角面片的信息添加分配后得到的三角面片数组和顶点数组即构成了三角网格模型,其中顶点数组的每个元素存储有包括一个顶点的三维坐标、法线向量和纹理坐标,三角面片数组中每三个元素表示一个三角面片;
步骤二,模型剖切预备装置对步骤一中转换后的三角网格模型指定剖切方向和剖切线;
步骤三,模型剖切装置对步骤二中已经指定剖切方向和剖切线的三角网格模型进行剖切,具体方法是,由剖切面片判断单元对步骤一中若干三角面片是否与剖切面相交选择执行下面步骤:
步骤5.1,若剖切面片判断单元判断剖切面与剖切后的三角面片不相交:首先由三角面片位置判断单元判断三角面片位于剖切面的正侧或反侧,数组组合分配单元将三角形面片的信息添加分配到正侧或反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角网格模型的所有三角面片的信息添加分配后得到的正侧和反侧三角面片数组和顶点数组即构成了正侧和反侧的子三角网格模型一;
步骤5.2,若剖切面片判断单元判断剖切面与剖切后的三角面片相交,则按照以下步骤进行:
步骤5.21,首先由多边形面片剖分单元将三角面片剖分为位于正侧和反侧的两个多边形面片,然后由三角面片剖分单元将正侧和反侧的两个多边形面片剖分为三角形面片,数组组合分配单元将剖分为三角形面片的信息添加分配到正侧或反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角网格模型的所有三角面片的信息添加分配后得到的正侧和反侧三角面片数组和顶点数组即构成了正侧和反侧的子三角网格模型二;
步骤5.22,交点计算单元根据三角面片与剖切面的所有交点计算剖切截面的剖面多边形;
步骤5.23,三角面片剖分单元将步骤5.22中剖面多边形剖分为三角面片,数组组合分配单元并将剖分后的三角面片信息添加到正侧和反侧子三角网格模型的三角面片数组和顶点数组中,并将三角面片数组和顶点数组存储到数组存储单元中,完成所有三角面片的信息添加分配后得到的该剖切截面的子三角网格模型三。
2.根据权利要求1所述的三维网格模型的剖切方法,其特征在于,所述的步骤二中,指定剖切方向的具体方法如下:由剖切方向指定单元指定三维空间中与剖切方向平行的矢量,即剖切方向。
3.根据权利要求1所述的三维网格模型的剖切方法,其特征在于,所述的步骤二中,指定剖切线的具体方法如下:由剖切线指定单元指定垂直剖切方向的二维平面内的顶点序列即构成的剖切线,所述的剖切线是位于垂直剖切方向平面内的直线或者曲线。
4.根据权利要求1所述的三维网格模型的剖切方法,其特征在于,所述的步骤5.22中,根据三角面片与剖切面的所有交点计算该剖切截面的剖面多边形的具体方法为:
步骤6.1,由区域分配模块计算折线段中的每条线段沿剖切方向扫描形成的平面条形区域;
步骤6.2,由多边形获取模块计算每个条形区域和三角网格模型的每个三角面片的两个交点,即包括条形区域两条端线与所有面片的交点构成的交线,根据条形区域和所有三角面片的交线的邻接关系依次连接各条交线,得到条形区域和三角网格模型相交的若干个交面多边形,该若干个交面多边形即所需得到的剖面多边形。
5.根据权利要求1所述的三维网格模型的剖切方法,其特征在于,所述的步骤2.1中,三角面片剖分单元将剖面多边形剖分为三角面片的方法为,首先由内边界判断模块判断剖面多边形是否存在内边界,然后选择执行下面步骤:
步骤7.1,若剖面多边形不存在内边界,则由三角剖分分配模块直接计算剖面多边形的三角剖分;
步骤7.2,若剖面多边形存在一条及一条以上内边界,则由三角剖分分配模块依次取最外层和次外层边界形成环形多边形,计算连接环形多边形内外环边界的桥边,然后计算添加桥边后的环形多边形的三角剖分。
6.根据权利要求1所述的三维网格模型的剖切方法,其特征在于,所述的步骤5.21中,三角面片剖分单元将剖面多边形剖分为三角面片的方法为,首先由内边界判断模块判断剖面多边形是否存在内边界,然后选择执行下面步骤:
步骤7.1,若剖面多边形不存在内边界,则由三角剖分分配模块直接计算剖面多边形的三角剖分;
步骤7.2,若剖面多边形存在一条及一条以上内边界,则由三角剖分分配模块依次取最外层和次外层边界形成环形多边形,计算连接环形多边形内外环边界的桥边,然后计算添加桥边后的环形多边形的三角剖分。
7.根据权利要求1所述的三维网格模型的剖切方法,其特征在于,所述的步骤5.23中,三角面片剖分单元将剖面多边形剖分为三角面片的方法为,首先由内边界判断模块判断剖面多边形是否存在内边界,然后选择执行下面步骤:
步骤7.1,若剖面多边形不存在内边界,则由三角剖分分配模块直接计算剖面多边形的三角剖分;
步骤7.2,若剖面多边形存在一条及一条以上内边界,则由三角剖分分配模块依次取最外层和次外层边界形成环形多边形,计算连接环形多边形内外环边界的桥边,然后计算添加桥边后的环形多边形的三角剖分。
8.根据权利要求1所述的三维网格模型的剖切方法,其特征在于,所述的子三角网格模型一、子三角网格模型二以及子三角网格模型三构成了三角网格模型,所述的数组组合分配单元还将三角面片的三个顶点在顶点数组中的索引号存储在存储单元中。
CN2008101975094A 2008-11-05 2008-11-05 三维网格模型的剖切方法 Expired - Fee Related CN101441780B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101975094A CN101441780B (zh) 2008-11-05 2008-11-05 三维网格模型的剖切方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101975094A CN101441780B (zh) 2008-11-05 2008-11-05 三维网格模型的剖切方法

Publications (2)

Publication Number Publication Date
CN101441780A CN101441780A (zh) 2009-05-27
CN101441780B true CN101441780B (zh) 2012-01-11

Family

ID=40726199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101975094A Expired - Fee Related CN101441780B (zh) 2008-11-05 2008-11-05 三维网格模型的剖切方法

Country Status (1)

Country Link
CN (1) CN101441780B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8620627B2 (en) * 2009-10-13 2013-12-31 The Boeing Company Composite information display for a part
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
CN102193998B (zh) * 2011-05-05 2012-11-14 河南理工大学 一种含边拓扑信息的不规则三角网弧扫式构建方案
CN106273496B (zh) * 2016-08-30 2018-08-07 大连理工大学 一种增材制造中的复杂切片区域自动分割方法
CN106600671A (zh) * 2016-10-21 2017-04-26 上海拆名晃信息科技有限公司 一种网格模型的体素化方法及装置
CN106919742B (zh) * 2017-02-09 2020-05-15 一汽-大众汽车有限公司 一种自动标注断面位置的方法和装置
CN107610230B (zh) * 2017-09-12 2020-09-11 首都师范大学 一种3d打印数字模型剖切及接口设计方法及应用
CN108734760A (zh) * 2017-09-12 2018-11-02 武汉天际航信息科技股份有限公司 三维网格线条拉直系统及三维网格线条拉直方法
CN107967682B (zh) * 2017-11-24 2021-01-01 深圳市一图智能科技有限公司 一种两点式网格模型裁切方法
CN107945273B (zh) * 2017-12-19 2022-03-22 网易(杭州)网络有限公司 地形网格的处理方法和装置、存储介质及终端
CN109005399A (zh) * 2018-05-03 2018-12-14 成都光魔科技有限公司 一种3d数据加密、压缩方法及一种医疗信息交互系统
CN110458935A (zh) * 2018-05-03 2019-11-15 成都光魔科技有限公司 一种3d模型的剖面实时生成方法
CN108765572B (zh) * 2018-05-31 2022-05-10 中南大学 三维扫描中平面点集的三角剖分方法及系统
CN108898659B (zh) * 2018-05-31 2022-04-22 中南大学 一种用于三维重构的三角剖分方法及系统
CN109360260B (zh) * 2018-10-22 2023-07-18 南京科远智慧科技集团股份有限公司 一种三角网格三维模型的切挖重构方法
CN110120083B (zh) * 2019-05-17 2020-03-06 中科三清科技有限公司 水质预报分布图绘制方法、装置和电子设备
CN110633517B (zh) * 2019-09-03 2023-07-25 江西博微新技术有限公司 一种用于三维场景的高效切片方法
CN111161129B (zh) * 2019-11-25 2021-05-25 佛山欧神诺云商科技有限公司 二维图像的立体交互设计方法、系统
CN112651063B (zh) * 2019-12-11 2022-07-26 江苏艾佳家居用品有限公司 一种创建户型整体网格模型的方法
CN111145356B (zh) * 2019-12-31 2023-08-18 威创集团股份有限公司 一种基于Unity3D模型的切割方法
CN113643351A (zh) * 2021-07-30 2021-11-12 深圳市中金岭南有色金属股份有限公司凡口铅锌矿 矿井采空区空间体积的计算方法、装置、设备及存储介质
CN117078890B (zh) * 2023-10-13 2024-01-12 芯瑞微(上海)电子科技有限公司 一种手机三维几何模型网格剖分方法和系统
CN117892602B (zh) * 2024-03-15 2024-06-07 芯瑞微(上海)电子科技有限公司 基于工业仿真软件的2.5d模型的网格剖分方法及相关设备

Also Published As

Publication number Publication date
CN101441780A (zh) 2009-05-27

Similar Documents

Publication Publication Date Title
CN101441780B (zh) 三维网格模型的剖切方法
CN101373543A (zh) 三维网格模型的快速剖切方法
CN108595858B (zh) 基于bim的轻量化深度处理工作方法
CN106683167B (zh) 复杂建筑物高精度模型自动建模方法
US10726618B2 (en) Systems and methods for generating volumetric models
EP2441054B1 (en) Method for mapping tubular surfaces to a cylinder
JP4783100B2 (ja) 境界データのセル内形状データへの変換方法とその変換プログラム
CN109377561A (zh) 一种基于共形几何的数模表面网格生成方法
EP1881458B1 (en) Computer-implemented process for creating a parametric surface
US8537158B2 (en) Parallel triangle tessellation
CN101877147B (zh) 三维三角形网格模型的简化算法
CN101872488B (zh) 曲面渲染系统及方法
CN102521863B (zh) 一种基于粒子系统的三维流体标矢量统一动态表示方法
Wang et al. Multi-dimensional dynamic programming in ruled surface fitting
Bern et al. Triangulations and mesh generation
CN110489778A (zh) 面向激光刻蚀加工的图形分割方法、激光刻蚀控制系统
CN102629391A (zh) 基于数字图形介质的三维空间结构图形切割及切片方法
CN116229015B (zh) 一种基于2N-Tree带附面层的贴体笛卡尔网格生成方法
CN103366402B (zh) 三维虚拟服饰的快速姿态同步方法
CN107886569A (zh) 一种基于离散李导数的测度可控的曲面参数化方法及系统
CN113421336B (zh) 动态水域的体绘制方法及装置、存储介质、电子设备
Gong et al. Three-dimensional reconstruction of medical image based on improved marching cubes algorithm
CN101515306A (zh) 基于G1连续三角Bézier曲面的产品STL模型重建方法
CN104504758B (zh) 义齿冠表面曲面生成方法
CN106960469B (zh) 一种快速分割三角形的光滑自由变形方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120111

Termination date: 20121105