APP下载

基于分类的CAD数据到VR模型转换方法

2011-09-07顾宏斌

关键词:边界线面片曲面

于 倩,顾宏斌,汤 勇

(南京航空航天大学民航学院,江苏 南京 210016)

机械产品开发过程一般是先在CAD系统中完成零件的设计建模,然后在虚拟现实(VR)环境中进行产品的各种分析,如虚拟装配、运行过程仿真和人机工程等。这类VR系统的模型信息主要来源于CAD系统输出的多边形面片模型。CAD模型采用精确的数学形式表达模型的几何信息,因此该模型转换为多边形面片模型格式后,几何外形精确但面片数量庞大,一般无法直接满足VR系统实时渲染要求,必须通过一定的简化算法精简模型。虽然目前存在很多网格简化算法[1-2],并已经运用到了实际系统中,实现了CAD模型到VR面片模型的转换和应用,但复杂的CAD模型难以满足实时要求仍是该类系统有待解决的一个难题。由于这些系统中采用的简化算法主要针对的是通用模型(无规则外形),如通过扫描设备得到的点云模型,因此并不能有效地简化CAD模型。应用这些算法可能会破坏CAD模型上的边界特征(即几何设计特性),使得模型变得不可识别,易产生狭长的病态三角形(影响光照计算,降低视觉效果)。

针对CAD模型数据转换存在的上述问题,提出并实现了一种新的基于分类的自适应CAD模型简化和转换方法,试图将各类复杂CAD模型根据需要转换为多分辨率(LOD)的VR模型,并在保证模型几何外形和视觉效果的前提下满足VR系统中实时渲染的需求。

1 原理分析

一般的CAD模型转换为虚拟现实模型是通过内嵌于CAD系统的数据导出接口将模型数据转换为中性文件或其他几何模型。分析发现CAD系统数据接口是按照一定规则导出几何数据的。比如CATIA导出中性文件模型时,参数化的实体模型面片化后,三角面的排列顺序有规律,即满足同一参数方程的面片按线性顺序排列,且其三角化的三角形分布和数量都一定。比如对一球面,其直径和球心的变化不会影响三角形的分布和数量。根据这个特点,对网格数据进行分类,根据不同的类型对其采用不同的多分辨率简化,简化完成后将几何数据写成VR模型标准格式。CAD模型简化与转换原理图如图1所示。

图1 CAD模型简化与转换原理图

2 实施过程

2.1 CAD模型网格信息的提取

商用 CAD软件,如 CATIA,Pro/ENGINEER等,都能通过内置的数据导出接口将其导成stl,wrl等通用的中性文件。VRML是一个文本文件,是描述虚拟环境场景的一种标准。它的格式非常简单易于解析,包含了所有完整的几何运动信息及纹理映射等。一个典型的CAD模型是用点、线、面来描述的,其中每个面集由一组相邻的三角面组成。按照文献[3]中的方法解析wrl文件可得到网格数据。

2.2 网格分类

为了精确地找到CAD系统导出的网格数据分类规则,首先针对CATIA软件中的基本设计工具进行实验和汇总分析,实验结果如图2所示。

图2 常用的设计工具方法汇总表(其中边界线由黑色注明)

通过实验分析汇总,根据点和边界线的关系,可将面分为两大类:①面上的点都是边界线上的点;②面上的点不全是边界线上的点。

第1类的面,读取到的点集恰好都落在其相对应的边界线上,三角面片的点取的都是边界线上的点。这类型的面,比较简单、平缓,在进行下一步简化时,只需简化边界线上的点即可[4-5];

第2类的面,读取到的点集并不全落在其相对应的边界线上,三角面片的点一部分取的是边界线上的点,一部分却是面内部区域中的点。这类型的面比较复杂,三角面片的数量也比较多,相对应的简化算法比第1类的面要复杂[6-7]。

第1类的面又分为有孔面和无孔面,这是由于在设计CAD模型时,用凹槽、孔等设计工具所产生的,简化时应进行针对性的简化。

第2类的面主要是一些复杂的曲面,如球面、样条曲面和自由曲面等,根据设计工具以及网格数据的特点,又把第2类的面分为旋转面和自由曲面,在CAD系统中有大量的旋转设计工具,如旋转体,旋转槽等,同时样条曲线也应用较多。在此基础上,根据各种面的特点,设计一定的算法准则进一步细分网格模型,在读取到中性文件的几何信息后,根据分类法则,对模型的各个面进行分类,如表1 所示[8]。

2.3 不同类别的网格简化算法

一个典型的CAD模型是由大量的参数曲面组成的,而这些参数曲面是由几何设计特性决定的,当用户看CAD模型时,一般感兴趣的是其几何设计特性。因此这些几何设计特性应该在可视化后被保存,目前存在的简化算法在进行简化时,并没有考虑到CAD模型的几何设计特性,因而当这些算法删除几何元素如边、点、面时,很可能删掉了一些对设计特性来说很重要的几何元素。

2.3.1 第1类网格简化

第1类的面比较平坦,如平面、柱面等。在原始模型中,其面上的点全部都是其对应的边界线上的点,因此只需要对边界线上的点进行简化即可。算法实现如下:

(1)首先初始化简化因子N。为了避免生成过于狭长的三角形,影响光照效果,N满足:N=i,min{};di为第i点与第一个点的距离,do为与其相对应的边界线l2的距离。i=1,2,…,n-2(n为边界线点的个数,点的索引从0开始);

(2)If i mod N=0,i=1,2,…,n-2,则 i作为合并点;

表1 网格分类表

(3)循环,直到线上所有点遍历结束。把起始点、合并点及结束点存入到新模型中;

(4)边界线通过新模型的点相互连接。

有孔面和无孔面的区别在于边界线连接方式,前者内部边界线与外部边界线相连接;后者外部边界线相互连接[9],如图3所示。

图3 两种连接方式

2.3.2 第2类网格简化

对于第2类的面,面中的三角形构成较复杂,除了边界线上的点外,面的内部仍存在大量的点和三角形。因而仅简化边界线上的点,并不能达到好的简化效果。

自由曲面的简化算法。当用三角形网格描述物体的表面时,根据曲率可以较好地区分表面的一些特征,进行简化时,在高曲率处应保留尽量多的点。根据这个规律,从边界线开始,对原始网格模型进行由右向左,自下至上的逐层简化,并通过自适应细分把细节信息增加到简化模型中,从而得到较细的LOD表示。自由曲面的简化算法流程图如图4所示。

图4 自由曲面的简化算法流程图

具体的简化步骤如下:

(1)设定简化因子N,确定曲面的边界线l2、l3和l4。

(2)在边界线l2、l3上,分别取第一个点,最后一个点,及第[n/N]×i个点,i=1,2,…,N-1,把l2、l3分为N段。其中[n/N]为边界线点的个数与简化因子N商的整数。

(3)在每段分段区间内,依次取相邻的3个点 Ni(xi,yi,zi)、Ni+1(xi+1,yi+1,zi+1)、Ni+2(xi+2,yi+2,zi+2),如果 θ=max{arc cos(NiNi+1·Ni+1Ni+2/|NiNi+1|·|Ni+1Ni+2|)},则把第 Ni+1点作为新的分段点。

(4)从线l2的点r2开始,找到距离r2最近的点 Nbegin,Nbegin∈Ni{Node},Ni{Node}为曲面内部点的集合。

由于点都是线性存储的,且纵横线上的点都是按照一致的顺序排列,因此从Nbegin开始,设定相邻3个点的两两间距为d、d',如果 d'>>d,则认定第2个点为该线的最后一个点 Nend。在[Nbegin,Nend]中找到离b2最近的点 new。

(5)依次找到第 b3,b4,…,bn-1列对应的点new及在边界线上离Nend最近的l2上的点。

(6)循环,直到线l2上所有的点遍历结束。

(7)把点new及三角形存入到新模型中,结束。

旋转曲面的简化。旋转体与轴线相垂直的平面相交,得到的横截面是一个半径随轴线位置改变的圆,同时旋转曲面的两条边界线是关于轴线对称的,由边界线上的两个对称点可以得到该横截圆的半径和圆心坐标,从而得到该横截圆的表达式[10]。根据这个规律,旋转曲面的简化算法可以表述为:

(1)根据自由曲面简化算法对两条边界线l1、l2进行分段。

(2)如果l1、l2的第一个分段点不相等,则从第一个分段点开始,否则从第2个分段点开始,得到每层横截圆的表达式,在该层均匀取N个点。

(3)循环,直到处理完最后一个分段点。

(4)把点new及三角形存入到新模型中,结束。

2.4 利用OpenFlight API生成工业标准模型

虽然已将网格数据进行了简化,而要将这些数据运用到虚拟现实系统中,必须将其转换成虚拟现实格式。笔者将其转换成OpenFlight格式。OpenFlight格式是美国MultiGen Paradigm公司开发的一种场景描述数据库规范,是逻辑化的有层次的视景描述数据库,其开放的连接及简易交互式的操作与细节等级等先进的实时功能极大地提高了实时系统的性能,已经成为虚拟现实领域的工业标准格式。

一个基本的完整OpenFlight文件创建读写算法流程如图5所示,主要包括程序初始化、创建数据库头节点、创建组节点和其他特殊节点、绘制几何节点、建立节点间的层级关系、写入并关闭数据库和程序退出等步骤。

图5 OpenFlight模型数据库处理流程

3 应用实例

在Pentium4、2.93 GHz、1 G内存的PC机上,采用CAD软件(CATIA)、Visual C++和.NET编写了CAD模型的解析与简化程序,图6和图7是一个简单的自由曲面与综合体的简化实例。

图6 简化前后的自由曲面

图7 简化前后的综合体

图8(a)为一个含有11956个三角形的大齿轮模型,图8(b)为基于二次误差方法的简化结果。图8(c)为笔者算法的简化结果。

图8 三角形大齿轮原始和简化后的模型

从上述CAD模型经过笔者的算法简化和转换后的试验结果可以看出:①模型几何外形和视觉效果基本无变化,在保证外形轮廓基本无损失的条件下,复杂CAD模型面片数均可简化90%左右,三角形的数量大大减少。②基于二次误差的简化方法虽然也较好地保持了几何外形,但是简化后的三角形仍然很密集,狭长;笔者的方法无病态、狭长三角形,分布基本是规则的三角形。③根据设定的简化因子,可以进行不同简化率下的模型简化,且在曲率大的区域可以进行自适应细分。④对于大型模型,简化后的模型实时渲染帧率也能大幅提高。

4 结论

针对虚拟现实系统中CAD模型需求,提出并实现了一种面向虚拟现实的CAD模型的分类简化和转换方法。实验结果表明该方法切实可行,简化后的模型在外形上较好地保持了原始模型的几何特征,并生成了多层次细节模型,也同时满足了视景系统的实时渲染要求,可运用于实际系统中。

[1]JEZEMIK A G H.A solution to integrate computeraided design(CAD)and virtual reality(VR)databases in design and manufacturing processes[J].International Journal of Advanced Manufacturing Technology,2003(22):768-774.

[2]万毕乐,刘检华,宁汝新,等.面向虚拟装配的CAD模型转换接口的研究与实现[J].系统仿真学报,2006,18(2):391-394.

[3]彭云云.利用CAD数据的视景仿真三维建模及其模型简化技术研究[D].南京:南京航空航天大学图书馆,2009.

[4]GRAF H,BRUNETTI G,STORK A,et al.A methodology supporting the preparation of 3D-CAD data for design reviews in VR[C]//Design2002.Dubrovnik:[s.n.],2002:489-495.

[5]陶志良,潘志庚,石教英.基于能量评估的网格简化算法及其应用[J].软件学报,1997,8(12):881-888.

[6]高鹏东,刘晓利,刘则毅.基于尖特征度的边折叠简化算法[J].软件学报,2005,16(5):669-675.

[7]RICHARD S,WRITE J.OpenGL超级宝典[M].2版.张琪,付飞,译.北京:人民邮电出版社,2001:54-88.

[8]GROSS H,GATTI R,STAADT O.Fast multire solution surface meshing[C]//Proceedings of the IEEE VIsualization'95.Atlanta GA:[s.n.],1995:135-142.

[9]王俊东,罗学科,刘玉明.虚拟现实技术在科技奥运中的应用[J].北方工业大学学报,2005,17(3):15-18.

[10]DEROSE T,LOUNSBERY M,WARREN J.Multiresolution analysis for surfaces of arbitrary topological type[J].ACM Transactions on Graphics,1997,16(1):34-73.

猜你喜欢

边界线面片曲面
简单拓扑图及几乎交错链环补中的闭曲面
弟弟尿床了
三维模型有向三角面片链码压缩方法
初次来压期间不同顶板对工作面片帮影响研究
相交移动超曲面的亚纯映射的唯一性
“边界线”风波
“边界线”风波
神奇的边界线:一不留神就出国
关于第二类曲面积分的几个阐述
基于曲面展开的自由曲面网格划分