曲面渲染系统及方法

文档序号:6586982阅读:377来源:国知局
专利名称:曲面渲染系统及方法
技术领域
本发明涉及一种曲面构建系统及方法,尤其是关于一种曲面渲染系统及方法。
背景技术
目前较为成熟的模型重建技术是通过构建曲面来实现的,在构建曲面的过程中, 根据实物模型的点云数据构建曲面、对曲面利用几何图形,例如三角形进行网格化以逼近 实物面在实践中被广泛应用。常用的曲面三角网格化方法有迭代法和迪式(Delaimay)算 法,然而这两种方法都存在不足之处用迭代法直接算出曲面的控制点,再根据控制点坐标 拟合三角形的速度非常慢,且拟合出来的三角形大小不一致,速度和精度都不尽人意;用 Delaimay算法所获得的三角网格比较规则,但Delaimay算法致力于提高剖分质量,而导致 剖分生成的三角面片的数量巨大,所以速度缓慢。

发明内容
鉴于以上内容,有必要提供一种曲面渲染系统,可以快速三角网格化曲面,并对网 格化后的曲面各区域的三角形根据该区域的平滑程度进行多级细分,提高曲面渲染的速度 及精度。此外,还有必要提供一种曲面渲染方法,可以快速三角网格化曲面,并对网格化后 的曲面各区域的三角形根据该区域的平滑程度进行多级细分,提高曲面渲染的速度及精度。一种曲面渲染系统,应用于数据处理装置。该系统包括曲面网格化模块,用于从 与数据处理装置相连接的存储设备读取曲面控制点及曲面边界点,根据曲面控制点及曲面 边界点对曲面进行三角网格化;曲面细分模块,用于根据网格化后的曲面中相邻三角形法 向量的夹角大小对曲面中的三角形进行多级细分;显示状态标示模块,用于确定多级细分 后的曲面中的表面三角形及内部三角形,得到曲面中所有三角形的显示及隐藏信息;及曲 面显示模块,用于确定与数据处理装置相连接的显示设备的视口显示范围,在所述视口显 示范围内显示曲面中的表面三角形。一种曲面渲染方法,应用于数据处理装置。该方法包括(A)从与数据处理装置相 连接的存储设备读取曲面控制点及曲面边界点,根据曲面控制点及曲面边界点对曲面进行 三角网格化;(B)根据网格化后的曲面中相邻三角形法向量的夹角大小对曲面中的三角形 进行多级细分;(C)确定多级细分后的曲面中的表面三角形及内部三角形,得到曲面中所 有三角形的显示及隐藏信息;及(D)确定与数据处理装置相连接的显示设备的视口显示范 围,在所述视口显示范围内显示曲面中的表面三角形。相较于现有技术,本发明提供的曲面渲染系统及方法可以快速三角网格化曲面, 对网格化后的曲面各区域的三角形根据该区域的平滑程度进行多级细分,并快速显示曲 面,提高曲面渲染的速度及精度。


图1是本发明曲面渲染系统较佳实施例的应用环境图。图2是本发明曲面渲染方法较佳实施例的总流程图。图3是图2中步骤S201的细化流程图。图4是图2中步骤S203的细化流程图。图5是图2中步骤S205的细化流程图。图6是图2中步骤S207的细化流程图。
具体实施例方式如图1所示,是本发明曲面渲染系统10较佳实施例的应用环境图。该曲面渲染系 统10安装并运行于电子装置100。该电子装置100还包括存储设备20、处理器30及显示 设备40。存储设备20用于存储曲面相关资料及曲面渲染系统10的计算机化程序代码。存 储设备20可以为电子装置100内置的存储器,也可以为电子装置100外接的存储器。所述 曲面相关资料包括曲面控制点及曲面边界点。处理器30执行曲面渲染系统10的计算机化程序代码,实现快速三角网格化曲面、 对网格化后的曲面各区域的三角形根据实际平滑程度进行多级细分。显示设备40用于显示网格化前、网格化后及多级细分后的曲面。所述电子装置100可以为计算机或其它任意适用的具备数据处理功能的装置。该曲面渲染系统10包括曲面网格化模块11、曲面细分模块12、显示状态标示模 块13及曲面显示模块14。曲面网格化模块11用于从存储设备20读取曲面控制点及曲面边界点,根据曲面 控制点及曲面边界点对曲面进行三角网格化(具体介绍请参见图3)。曲面控制点决定曲面 的变化趋势。曲面边界点决定曲面的形状。曲面细分模块12用于根据网格化后的曲面中相邻三角形法向量的夹角大小对曲 面中的三角形进行多级细分(具体介绍请参见图4)。显示状态标示模块13用于确定多级细分后的曲面中的表面三角形及内部三角 形,得到曲面中所有三角形的显示及隐藏信息(具体介绍请参见图5)。曲面显示模块14用于确定显示设备40的显示范围,在显示范围内显示曲面中的 表面三角形(具体介绍请参见图6)。一个视口(viewport)为一个二维的矩形,是显示设备 40的实际显示区域。曲面显示模块14还用于根据视口的变化显示曲面上不同区域以及不同细分程度 的三角形。由于视口的显示范围是有限的,不可能一次显示曲面的所有部分,曲面显示模块 14根据用户对视口上旋转菜单的操作调整视口显示的曲面区域。当用户利用视口上的缩放 菜单对视口上显示的曲面区域进行缩小、放大操作时,曲面显示模块14相应显示曲面上不 同细分级别的三角形。如图2所示,是本发明曲面渲染方法较佳实施例的总流程图。步骤S201,曲面网格化模块11从存储设备20读取曲面控制点及曲面边界点,根据 曲面控制点及曲面边界点对曲面进行三角网格化(具体介绍请参见图3)
步骤S203,曲面细分模块12根据网格化后的曲面中相邻三角形法向量的夹角大 小对曲面中的三角形进行多级细分(具体介绍请参见图4)。步骤S205,显示状态标示模块13确定多级细分后的曲面中的表面三角形及内部 三角形,得到曲面中所有三角形的显示及隐藏信息(具体介绍请参见图5)。步骤S207,曲面显示模块14确定显示设备40的显示范围,在显示范围内显示曲面 中的表面三角形(具体介绍请参见图6)。步骤S209,曲面显示模块14根据视口的变化显示曲面上不同区域以及不同细分 程度的三角形。例如,曲面显示模块14根据用户对视口上的旋转菜单的操作调整视口显示 的曲面区域。当用户对视口上的缩放菜单对视口上显示的曲面区域进行缩小、放大操作时, 曲面显示模块14相应显示曲面上不同细分级别的三角形。如图3所示,是图2中步骤S201的细化流程图。步骤S301,曲面网格化模块11从存储设备20读取曲面控制点及曲面边界点组成 的三维(three-dimensional, 3D)队列 S。步骤S303,曲面网格化模块11将所述3D队列S转换为参数平面中的二维 (two-dimensional, 2D)队列 Q。转换公式为:x = j(u,v),y = V (u,v),z = c (u,v),其中 u、v为参数,其值在0 1范围内。曲面上的点可以用三维坐标表示,也可以用二维参数表
7J\ o步骤S305,曲面网格化模块11获取3D队列S中Z值最大的点N,在对2D队列Q 中查找与点N对应的点PI。Z值最大的点N为曲面上最外层的点。步骤S307,曲面网格化模块11在2D队列Q中查找与点P1最近的点P2,点P1、P2 构成三角形A的一条边。步骤S309,曲面网格化模块11在2D队列Q中查找第三点P3,查找原则是点P1、 P2、P3构成的三角形A的外接圆内没有2D队列Q中的其它点,使得点PI、P2、P3构成的三 角形A接近于等边三角形。步骤S311,曲面网格化模块11根据上述查找原则依次在2D队列Q中查找构成其 它三角形的顶点,得到三角网格化后的曲面。步骤S313,曲面网格化模块11根据查找顺序将曲面上的各三角形信息依次加入 三角形标示数组T。该三角形标示数组T存储曲面上每个三角形三个顶点的坐标信息及每 个三角形在该三角形标示数组T中的标记信息。如图4所示,是图2中步骤S203的细化流程图。步骤S401,曲面细分模块12将用户设定的角度范围划分为若干个细分级别。例 如,曲面细分模块12将0 90度的范围划分为9个细分级别,分别为0 10度为第1级, 10 20度为第2级,20 30度为第3级,30 40度为第4级,40 50度为第5级,50 60度为第6级,60 70度为第7级,70 80度为第8级,及80 90度为第9级。其中, 第1级为最精确的细分级别。步骤S403,曲面细分模块12根据3D队列S、2D队列Q计算3D队列S中每个顶点 的向量,每个顶点的向量等于该顶点所在所有三角形的法向量的平均值。步骤S405,曲面细分模块12读取2D队列Q中Z值最大的顶点P1。步骤S407,曲面细分模块12读取顶点P1相邻区域的三角形。例如,曲面细分模块12读取顶点P1周围3层的三角形。步骤S409,曲面细分模块12计算该相邻区域内(例如顶点P1周围3层三角形) 每个三角形顶点的向量与所有其它三角形顶点的向量的夹角,得到最大夹角,例如最大夹 角 MaxAo步骤S411,曲面细分模块12确定最大夹角MaxA所在的细分级别。例如,若MaxA =8度,则属于细分级别中的第1级;若MaxA = 35度,则属于细分级别中的第4级。步骤S413,曲面细分模块12获取所述相邻区域内相邻三角形的法向量夹角在该 细分级别内的三角形队列G。步骤S415,曲面细分模块12判断该最大夹角(例如MaxA)是否在最精确的细分级 别,也就是上述细分级别中的第1级。如果曲面细分模块12判断该最大夹角在最精确的细分级别,例如MaxA = 8度,也 就是说所述相邻区域内相邻三角形的法向量夹角都落入最精确的细分级别(即第1级),则 表明该相邻区域内的三角形平滑程度较好,不需要进一步细分,则流程转入步骤S421。如果 曲面细分模块12判断该最大夹角不在最精确的细分级别,例如MaxA = 35度,则流程进入 步骤S417。步骤S417,曲面细分模块12得到三角形队列G中各三角形任意两边中线的交点, 根据各三角形顶点及所述交点将各三角形分为三个小三角形。需要指出的是,曲面上的三 角形是曲面的切平面,一个三角形两边中线的交点可能不在曲面上。若一个三角形两边中 线的交点不在曲面上,则需要先将该交点调整到曲面上,再对该三角形进行细分。步骤S419,曲面细分模块12计算各相邻小三角形法向量夹角的最大值Maxa,确定 最大值Maxa所在的级别。之后,针对三角形队列G中每个三角形细分后的小三角形子区域, 流程返回步骤S415,直到各小三角形子区域的细分程度满足所述最精确的细分级别。步骤S421,曲面细分模块12依据对顶点P1相邻区域细分的方法继续对曲面上的 其它区域进行细分。步骤S423,曲面细分模块12输出细分后的3D队列S、2D队列Q及三角形标示数组T。如图5所示,是图2中步骤S205的细化流程图。步骤S501,显示状态标示模块13建立3D队列S的空间包围盒,使得曲面上所有三 角形的每个顶点落入一个小包围盒。步骤S503,显示状态标示模块13读取3D队列S中一点,沿该点所在三角形的正反 法线方向分别作两条射线。例如,显示状态标示模块13读取3D队列S中的第一点P1,沿点 P1所在三角形的正反法线方向分别作两条射线U1、U2。步骤S505,显示状态标示模块13将该点所在小包围盒向周围扩展若干层(例如在 3D空间中扩展3*3*3层),得到该若干层包围盒内所有顶点周围的若干个三角形。步骤S507,显示状态标示模块13求取该两条射线中任意一条射线与所述若干个 三角形的交点。例如,显示状态标示模块13求取射线Ul、U2与点P1周围3*3*3层包围盒 内所有顶点周围的三角形的交点。步骤S509,显示状态标示模块13标示所述若干个三角形中与该两条射线无交点 的三角形为表面三角形,标示所述若干个三角形中与该两条射线有交点的三角形为内部三
7角形。例如,显示状态标示模块13设置点Pl周围3*3*3层包围盒内所有顶点周围的三角 形中与射线Ul及U2无交点的三角形的标志为“flag = 1”,设置点Pl周围3*3*3层包围盒 内所有顶点周围的三角形中与射线Ul或U2有交点的三角形的标志为“flag = O”。则若一 个三角形的标志为“flag = 1”,表示该三角形为曲面的表面三角形;若标志为“flag = 0”, 表示该三角形为曲面的内部三角形。步骤S511,显示状态标示模块13对3D队列S中其它点重复步骤S503至步骤 S509,直到曲面上的所有三角形都标示完毕(例如曲面上的所有三角形都有标志“flag = 1”或“flag = 0”),得到3D队列S对应的显示及隐藏队列I。若图6所示,是图 2中步骤S207的细化流程图。步骤S601,曲面显示模块14读取用户输入的视口的最小顶点及最大顶点的坐标 确定显示设备40上视口的显示范围。步骤S603,曲面显示模块14读取3D队列S的显示及隐藏队列I。步骤S605,曲面显示模块14在视口的显示范围内显示曲面的表面三角形。由于曲 面的内部三角形及超出视口显示范围的表面三角形都不显示,所以可以实现曲面的快速显
7J\ ο最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照 较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的 技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。例如,将此方法应 用于在清晰的边界线上寻找边界点。
权利要求
一种曲面渲染方法,应用于数据处理装置,其特征在于,该方法包括曲面网格化步骤从与数据处理装置相连接的存储设备读取曲面控制点及曲面边界点,根据曲面控制点及曲面边界点对曲面进行三角网格化;曲面细分步骤根据网格化后的曲面中相邻三角形法向量的夹角大小对曲面中的三角形进行多级细分;曲面显示及隐藏信息确定步骤确定多级细分后的曲面中的表面三角形及内部三角形,得到曲面中所有三角形的显示及隐藏信息;及曲面显示步骤确定与数据处理装置相连接的显示设备的视口显示范围,在所述视口显示范围内显示曲面中的表面三角形。
2.如权利要求1所述的曲面渲染方法,其特征在于,该方法还包括曲面显示变化步骤 根据视口的变化显示曲面上不同区域以及不同细分程度的三角形。
3.如权利要求1所述的曲面渲染方法,其特征在于,所述曲面网格化步骤包括 从所述存储设备读取曲面控制点及曲面边界点组成的三维队列;将所述三维队列转换为参数平面中的二维队列;获取所述三维队列中表示曲面上最外层的点,在所述二维队列中查找该最外层的点的 对应点,视该对应点为二维队列中的第一点;在所述二维队列中查找与第一点最近的第二点,该第一点、第二点构成三角形的一条边;在所述二维队列中查找第三点,查找原则是第一点、第二点、第三点构成的三角形的外 接圆内没有所述二维队列中的其它点,使得第一点、第二点、第三点构成的三角形接近于等 边三角形;根据上述原则依次在所述二维队列中查找构成其它三角形的顶点,得到三角网格化后 的曲面;及根据查找顺序将曲面上的各三角形信息依次加入三角形标示数组。
4.如权利要求3所述的曲面渲染方法,其特征在于,所述三角形标示数组存储曲面上 每个三角形三个顶点的坐标信息及每个三角形在该三角形标示数组中的标记信息。
5.如权利要求1所述的曲面渲染方法,其特征在于,所述曲面细分步骤包括 将用户设定的角度范围划分为若干个细分级别;根据所述三维队列、二维队列计算所述三维队列中每个顶点的向量,每个顶点的向量 等于该顶点所在所有三角形的法向量的平均值; 读取二维队列中的第一点; 读取该第一点相邻区域的三角形;计算该相邻区域内每个顶点的向量与所有其它顶点的向量的夹角,得到最大夹角; 确定该最大夹角所在的细分级别;读取所述相邻区域内相邻三角形的法向量夹角在该细分级别内的三角形队列; 判断所述最大夹角是否在最精确的细分级别;当该最大夹角不在最精确的细分级别时,得到所述三角形队列中各三角形任意两边中 线的交点,根据各三角形顶点及所述交点将各三角形分为三个小三角形;计算各相邻小三角形法向量夹角的最大值,确定该最大值所在的级别,针对三角形队列中每个三角形细分后的小三角形子区域,流程自所述判断步骤开始重复,直到各小三角 形子区域的细分程度满足所述最精确的细分级别;及依据对二维队列中第一点相邻区域细分的方法对曲面上的其它区域进行多级细分。
6.如权利要求5所述的曲面渲染方法,其特征在于,若一个三角形两边中线的交点不 在曲面上,先将该交点调整到曲面上,再对该三角形进行细分。
7.如权利要求1所述的曲面渲染方法,其特征在于,所述曲面显示及隐藏信息确定步 骤包括建立所述三维队列的空间包围盒,使得曲面上三角形的每个顶点落入一个小包围盒; 读取所述三维队列中表示曲面最外层的点,沿该点所在三角形的正反法线方向分别作 两条射线;将该点所在小包围盒向周围扩展若干层,得到该若干层包围盒内所有顶点周围的若干 个三角形;求取该两条射线与所述若干个三角形的交点;标示所述若干个三角形中与该两条射线均无交点的三角形为曲面的表面三角形,标示 所述若干个三角形中与该两条射线中任意一条射线有交点的三角形为曲面的内部三角形; 及对所述三维队列中的其它点自所述读取步骤开始重复,直到曲面上的所有三角形都标 示为曲面的表面三角形或内部三角形,得到所述三维队列的显示及隐藏队列。
8.如权利要求1所述的曲面渲染方法,其特征在于,所述曲面显示步骤包括 读取用户输入的视口的最小顶点及最大顶点的坐标确定与所述数据处理设备相连接的显示设备的视口显示范围;读取所述三维队列的显示及隐藏队列;及 在所述视口显示范围内显示曲面的表面三角形。
9.一种曲面渲染系统,应用于数据处理装置,其特征在于,该系统包括曲面网格化模块,用于从与数据处理装置相连接的存储设备读取曲面控制点及曲面边 界点,根据曲面控制点及曲面边界点对曲面进行三角网格化;曲面细分模块,用于根据网格化后的曲面中相邻三角形法向量的夹角大小对曲面中的 三角形进行多级细分;显示状态标示模块,用于确定多级细分后的曲面中的表面三角形及内部三角形,得到 曲面中所有三角形的显示及隐藏信息;及曲面显示模块,用于确定与数据处理装置相连接的显示设备的视口显示范围,在所述 视口显示范围内显示曲面中的表面三角形。
10.如权利要求9所述的曲面渲染系统,其特征在于,所述曲面显示模块还用于根据视 口的变化显示曲面上不同区域以及不同细分程度的三角形。
全文摘要
本发明提供一种曲面渲染方法,应用于数据处理装置。该方法包括从与数据处理装置相连接的存储设备读取曲面控制点及曲面边界点,根据曲面控制点及曲面边界点对曲面进行三角网格化;根据网格化后的曲面中相邻三角形法向量的夹角大小对曲面中的三角形进行多级细分;确定多级细分后的曲面中的表面三角形及内部三角形,得到曲面中所有三角形的显示及隐藏信息;及确定与数据处理装置相连接的显示设备的显示范围,在所述显示范围内显示曲面中的表面三角形。本发明还提供一种曲面渲染系统。
文档编号G06T15/00GK101872488SQ20091030188
公开日2010年10月27日 申请日期2009年4月27日 优先权日2009年4月27日
发明者吴新元, 孙小超, 张旨光 申请人:鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1