当前位置:首页 期刊杂志

基于CAD的虚拟现实技术在水电站仿真系统的应用*

时间:2024-05-04

陈 涛 丘恩华 孔吉宏 吕毅松 孙廷昌 吴 超 陈世坤

(1.南方电网调峰调频发电有限公司 广州 510630)(2.中冶集团武汉勘察研究院有限公司 武汉 430080)

1 引言

现有的虚拟现实技术通常采用建模软件Autodesk公司的3dsMAX软件,该软件制作流程十分简洁高效,可以很快的上手,广泛应用于广告、影视、工业设计、建筑设计、三维动画、多媒体制作、游戏、辅助教学以及工程可视化等领域;然后将模型通过导出成通用的fbx格式文件,再导入至虚拟现实中进做贴图、灯光、特效、烘培等工作。

在此过程中存在三维模型批量格式转换及轻量化的问题,现有相关技术方法主要是以下两种:1)用CATIA软件对三维实体模型文件进行stp格式的批量转换;使用3DVIA Composer中的程序3DVIA Sync对所得stp格式模型进行批量格式转换及轻量化处理,得到3ds格式模型;用Unity3D导入轻量化后的三维实体模型。2)基于CATIA、三维引擎Virtools以及3DMAX三种软件,利用CATIA对相关CAD模型进行特定格式的存储,然后将相关实体模型导入到Virtools中,利用Virtools对实体模型进行优化运算,再利用Virtools对模型进行存储,最后将实体模型导入3DMAX中以完成模型的材质处理、贴图、烘焙等渲染[1]工作。

2 现状分析

水电站的模型全部由CAD软件[2]制作而成,属于精细模型,一个抽水蓄能电站一个机组的零件数高达10万多个,需要人工将模型导入到3dsMAX[3]软件中,再进行优化、减面等工作,最终导入至虚拟现实平台。该技术路线的缺点是不能较好地应用在基于CAD超大模型的水电站,首先,使用此技术路线会需要大量专业的模型制作人员,将CAD模型导入到3dsMAX软件中,然后进行处理,其次,由于虚拟现实系统对于面片数的要求,通常一个CAD模型的机组直接导入到3dsMAX软件中面片数最少超上亿个,市面上通用的虚拟现实平台几乎承载不了,经过减面优化处理的模型失去了水电站对于建立精确模型库的意义。

传统的三维建模技术[4]首先对真实物体进行抽象,用多边形构造物体的三维模型,随着产品结构越来越复杂、三维模型越来越大,仅仅依赖硬件的升级远远不够。大模型的显示、浏览和使用越来越困难。为保证三维建模以及模型展现的效率,三维模型的轻量化技术必不可少。

在现有的方法中存在以下问题:1)基于水电站的需求,要求模型的属性、特征、材质、机构联动等信息通过轻量化过程能够继续保留,而这一点通过当前传统的技术手段不可能完成。2)在计算机仿真时,能够在保证模型显示效果的前提下,减小模型转换时间,但是其轻量化过程不能继承原有模型的特征、属性、材质和结构信息等,轻量化过程损害了模型库的精准度。3)有的方法模型格式转换较为复杂,不利于模型轻量化的快捷高效处理。

3 解决方案

针对以上存在的问题,提出了基于CAD超大模型的虚拟现实技术在水电站仿真系统的应用[5],具体步骤如图1所示。

图1 实施步骤

在以上步骤2中,水电站精确模型的轻量化包括:1)基于三角形面片的几何数据,使用多线程分别应用重新划分的三角形网格轻量化算法、近平面合并算法和基于小波分析的轻量化算法进行三角形面片的轻量化,得到每一轻量化算法处理后的总三角形数目和三角形所占像素总面积,然后根据总三角形数目和三角形所占像素总面积的加权总值来确定针对具体的三角形面片采用哪一种轻量化算法的处理结果进行后续计算;2)进行数据精细程度分级,根据工程模型的特征特点与虚拟现实的应用特点对模型数据进行特征和细节分级;3)生成LOD[6]数据,包括:对于较大的场景中的可区分模型生成LOD模型,在大场景中,若场景大小大于设定的值,则对可区分模型生成LOD模型,并在距离较远的时候启用LOD模型;4)对上述处理后的模型进行三角形条带化处理,用N+2个顶点表示N个三角形。详细如图2所示。

图2 示意图

在步骤3中,对SFX格式开发时,约定SFX格式的信息格式,提取SolidWorks中的水电站精确模型数据信息,所述精确模型数据信息包括点、线、面、装配关系、特征、属性,根据解析和解释规则将提取的水电站精确模型数据信息进行SFX格式化,以上信息读取后保存为SFX格式的模型文件,该文件保留了水电站精确模型的特征、属性、材质、机构联动信息。

将SFX插件在SolidWorks软件中进行扩展安装,安装后在SolidWorks的软件菜单中出现SFX转换器。

在步骤4中,包含虚拟现实平台MakeReal3D对UE4进行二次开发,增加SFX格式的数据导入方式,并为相关属性、特征、装配关系进行解释,当SFX格式的水电站模型文件导入虚拟现实平台MakeReal3D后,得到的对应水电站模型继承了水电站精确模型的特征、属性、材质、机构联动信息。

4 实施方案

基于水电站的需求,要求模型的属性、特征、材质、机构联动等信息通过轻量化过程能够继续保留,而这一点通过当前传统的技术手段不可能完成。一方面因为模型的属性、特征、材质、机构联动即便是同样的其它CAD软件经过转化也只能保存部分信息,而虚拟现实软件只接受可视化模型[7],其它信息在虚拟现实软件没有对应的解析、解释。如果要保留相关信息,则需要虚拟现实软件中增加对应的属性、特征、材质、机构联动等信息,增加这些信息,是需要通过对虚拟现实软件进行开发来实现。传统的工业虚拟现实软件由于其应用和开放性主要提供的是二次开发,主要应用的层面在应用层面,像给虚拟现实软件增加只有SolidWorks这类CAD软件精确模型才有的特征、属性,必须对底层进行开发,那么这样的虚拟软件是必须支持底层开发的,同时还需要满足大型水电站的性能要求。经过对比,MakeReal3D是最佳选择,MakeReal3D不仅支持传统的工业虚拟现实功能,同时兼容了开源的UE4图形引擎,UE4目前在性能、扩展性都是虚拟现实软件中最为优秀的底层开源图形引擎,恰好满足底层开发和性能。在此基础上,从MakeReal3D图形引擎的底层(即UE4引擎)开发对应的信息支撑接口。在虚拟现实软件中开发对应的信息支撑接口,还需要有选择性的支撑要求的模型属性、特征、材质、机构联动等信息,另一方面需要对图形进行优化。直接将SolidWorks格式模型导入到Make-Real3D虚拟现实软件中是不可能实现的,一是SolidWorks格式的模型信息太多,另外中间格式也只能保存三角信息,都是既定的格式信息,再者需要对模型进行轻量化,轻量化也要满足水电站大型精细使用便捷性要求,同时需要支持自动轻量化。鉴于以上要求,那么模型格式一定是特定的定制化模式格式。经过测试和开发,目前只有SFX格式是一种混合式的数据格式,并且支持扩展开发,且支持对水电站精细模型软件SolidWorks的API进行开发[8]。在对SFX格式开发时,需将SFX的基础API在SolidWorks进行扩展安装,安装后在Solid-Works的软件菜单中则会多出SFX转换器。SFX转换器并不能保证要抽取的信息和轻量化程度。首先轻量化是一种复杂的过程,其中要涉及到的轻量化算法和方法包括:实体模型网格化、三角形面片的轻量化、重新划分的三角形网格轻量化算法、以及数据精细程度分级、生成LOD数据。将这些算法按照一定的方法在SFX中进行对SolidWorks开发,经过层层的精细模型轻量化后,模型的性能得以在虚拟现实软件中应用。其次,由于模型轻量化后,可被虚拟现实拾取的即是网格模型[9],如果需要抽取和继承SolidWorks中精细模型的属性、特征、材质、机构联动等信息,则根据一定的解析和解释规则将相关几何进行SFX格式化,即生成了新的特定的SFX格式,这样就可以基于水电站需求,使得模型的属性、特征、材质、机构联动等信息通过轻量化的方式继续保留。

为了保证水电站SolidWorks模型[10]在进行轻量化过程中顺利进行,在具体实施中需要选择SolidWorks还原模式打开模型文件。SolidWorks普通模式下为了方便预览和快速加载,打开时Solid-Works会根据软件自身能力对模型预览自动性能优化,例如SolidWorks打开大型装配体时,部分模型的显示通常不正常,这就是SolidWorks轻化。

所谓轻化是在打开装配体的时候不读取零件特征,只读取实体信息、当前颜色和配合关系。当装配体很大时,在轻化状态下打开装配体可以明显提高打开文件的速度同时节约系统资源,让零件的显示更加流畅。然而轻化模式下,无法对模型进行修改颜色、修改材质等操作,甚至对于某些操作及附加应用程序,轻化零部件可能不能正常运作,这样的模型数据在可视化的应用[11]中是不允许的。

还原模式下模型的几何细节、各类属性、特征可以被分层完整的加载。基于还原模式,计算机对模型的数据相关特征、属性才可以被完整、准确的识别,接下来可以对模型数据的信息、特征、属性等进行解析、解释。对数据的解析采用了逐层、划分、关联、特征法进行。

如图3所示。在还原模式下,以SolidWorks模型为例,将SolidWorks模型数据以还原的模式打开后,针对水电站级别的大装配体,基于SolidWorks API对模型数据首先逐层解析。由于数据的加载尤其大装配体如果一次性加载,在特定的软硬件环境中是无法完成的,这个时候需要从数据结构树、装配关系、特征关系、图形显示等方面进行逐层加载,数据结构树是还原模式下完整还原的,结构树即意味着数据的实体数量、名称相关的索引,以此为建立第一次逐层解析记录,当数据过大时,可对结构树索引优先解析存储。但光有结构树是远远不够的,大装配体中很多模型显示或者加载是随着软件本身渲染能力层层加载的,也就是普通模式下很多被轻化即相关的特征和图形显示是不能被按照后期应用关注点规定的方法和算法进行运算的,即涉及后期仿真数据的抽取规则和过程。在此基础上,我们接着提取装配关系,特征以及图形,装配关系实际是结构树的完善,而且还原模式下,也加载与模型本身的特征、图形显示关系更完整的信息,那么我们可利用的信息就可以选择,抽取有利的信息。例如SolidWorks草图阵列,如果按照传统的数据导出转化给虚拟现实软件使用,就是采用将草图阵列中的所有实体转化为Actor对象,造成过多的转化时间和虚拟现实软件中过多的存储和资源浪费,通过解析结构树,装配关系,特征等各个层次的信息即可将重复的阵列内容换成单一的Actor,在后期划分时以其几何、参数属性进行划分,并建立关联因素,以其参数、属性、位置等特征进行抽取和制定精确的关联规律和匹配,不仅缩减导出的转化时间,也确保了虚拟现实内容的准确性和渲染速度。如果是普通模式,很多地方被轻化,在图形、特征与装配关系等无法进行精确的匹配,数据的解析则会存在失真、重复Actor对象数据过多,场景过大,参数无法提取等问题,也造成了虚拟现实应用问题。因此,相对于普通模式而言,选择还原模式能够很好地保证水电站SolidWorks模型轻量化过程中的顺利进行。

图3 对模型数据进行逐层解析的示意图

将经过处理的模型生成特定的SFX格式文件,该SFX格式的水电站模型可导入至虚拟现实平台[12]MakeReal3D中进行后期的应用。SFX格式是基于CAD软件API开发的轻量化的精确模型导出的虚拟现实可视化三维文档格式,基础的SFX格式采用了CAD软件的精确模型特征:包括精确描述模型的几何信息和拓扑信息,如点、线、面、特征、建模信息,另外SFX格式是可以根据接口进行自行扩展的,例如扩展各类属性等,而非传统的既定数据格式。UE4底层同样是允许扩展和开发的,非传统固化属性的虚拟现实软件,但另一方面UE4毕竟是虚拟现实软件,提供的用途、用法与CAD软件根本不一致。

在将CAD数据导入MakeReal3D平台进行场景构建[13]时,需要考虑CAD数据与MakeReal3D平台的衔接,虚拟现实平台MakeReal3D是基于UE4源码进行开发的,即在数据导入时,需要考虑CAD数据与UE4底层的衔接。CAD数据与UE4底层的衔接通过以下方式和方法进行。

首先数据是从CAD软件导入虚拟现实软件UE4中,数据信息则存在不对等,CAD中是精确模型,UE4中只需要三角化的可视化模型,传统的导入方式就将CAD转成中间格式如FBX格式,导入到UE4中,UE4对中间数据解析为三角面片数据,失去参数化特征、属性、装配关系等。使用传统的方法就行不通了,那么只能在UE4的可视化模型上做加法。第一步就是把CAD精确模型转化或者存储为可被UE4解释、解析的数据格式,即一种特定的格式,与UE4可视化模型数据对接的数据格式。该部分数据参照UE4底层对数据解析、解释的现有接口,与UE4常规格式FBX解析基础可视化模型。

接下来在以上可视化模型的数据上进行属性、特征、装配关系等数据信息的追加。目前看来只能是以SFX这种可扩展的数据格式作为特定的格式,然后在UE4底层把要接入精确模型的数据信息转化开发成属性、特征、界面,当然这里是从UE4底层进行二次开发完成的。整体的开发过程是约定SFX格式的信息格式,将SolidWorks中的点、线、面,装配关系、特征属性这些我们需要的精确模型数据信息进行提取,然后通过SFX格式读取后保存为SFX格式,这样下来SFX这种特定的集精确模型和可视化模型的数据格式就产生了。接下来在UE4中解析、解释转化SFX数据格式,首先需要对UE4增加数据导入的格式,即SFX格式,并为相关属性、特征、装配关系进行解释,当导入后,对应的模型则就多出相应的属性、特征、装配关系等。

在水电站仿真[14]应用中,SFX模型可被拾取,主要在于与虚拟现实软件平台对接的过程中,对模型的属性进行了更改,普通三维建模技术的模型格式即FBX不可被拾取拆装是不具备SFX对应增加的属性特征,模型可被拾取是一种赋予模型的几何碰撞特性,该类模型可以在应用中与操作者进行交互感知[15],默认的FBX格式模型是传统的图形格式,并未被加工过属性,在模型被平台解析过程中也只是被解析为基础的几何模型,所以FBX模型在虚拟现实运行过程中是无法被拆装拾取的,其主要是由于平台底层的图形引擎[16]与原生格式接口的规定格式和属性造成的。如果要解决FBX格式和SFX模型在平台应用时的拆装统一问题,一是改变FBX格式,对FBX格式改造开发,但是FBX格式是一种固定的传统格式,修改后可能不可识别,一方面要改变生成FBX格式的软件,另一方面要修改平台图形识别的功能,相当于为更改该属性从而生成了一种新的模型格式,生成的新的FBX肯定不会被其它任何保存FBX格式能解析或者解释,解释过程可能会产生各类兼容性问题。另外一种方法,就是在导入的过程中,在对FBX格式解析后对数据添加对应的属性特征,导入的Actor对象则具备了可被拾取的能力。

导入过程中对模型的对象和属性进行更改一定是批量化的更改或修改,而批量化的更改过程还需要确保数据的准确性。导入的过程中首先是对格式进行格式化解析和解释,解释后需要对要导入的软件进行Actor图形绘制和属性、特征、特点生成,此生成过程中即是对固定格式FBX数据添加属性或者修改模型对象的最佳时机和方式。如何准确的批量修改,则一定是Actor对象的唯一标识,首先确保生成的Actor对象不能为空,另外对FBX格式的模型的材质进行识别分类,确保修改的属性在赋予过程中不影响其他关联材质,关联材质不是唯一材质,则会影响其他的Actor对象,造成属性的碰撞混乱与重叠,如发生关联属性问题,可对Actor对象添加新的唯一mesh,确保各个Actor对象的修改不互相影响。

5 应用实例

以SolidWorks2017为例,展示基于CAD超大数据量模型的虚拟现实技术在水电站仿真系统应用的具体操作流程,如图4及图5所示,包括:1)打开SolidWorks2017,选择零件或者装配体文件,并且在模式选项下选择“还原”模式;2)选择工具菜单,SFX转换器选项,此工具就是上文提到的轻量化插件;3)选择导出设置,做好基本配置后,点击确定按钮,再在菜单上选择SFX转换器-轻量化模型;4)选择保存路径,自动生成轻量化模型文件;5)转换成功后的SFX文件可导入至MakeReal3D平台中;6)通过平台的导入按钮,选择生成的轻量化模型文件,经过简单配置后即可导入,SolidWorks模型导入时,选择单位m;7)模型导入成功。

图4 实施过程1

图5 实施过程2

6 结语

本文主要从根本上解决了水电站超大CAD模型在虚拟现实仿真系统中的应用问题,避免了重复建立三角面片模型,采取模型格式转换及自动轻量化的方式,使模型处理工作变得更加快捷、高效,研发人员可将主要精力放到后期仿真应用的内容制作上;本文对超大型水电站精确模型进行轻量化处理之后,在虚拟现实软件中存在的面片数平均减少70%,运行速度提升了50%以上,缩减了模型导出的转化时间,提高了虚拟现实软件的处理效率和渲染速度。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!