背景技术
现有的虚拟现实技术通常采用建模软件Autodesk公司的3dsMAX软件,该软件制作流程十分简洁高效,可以很快的上手,广泛应用于广告、影视、工业设计、建筑设计、三维动画、多媒体制作、游戏、辅助教学以及工程可视化等领域;然后将模型通过导出成通用的fbx格式文件,再导入至虚拟现实中进做贴图、灯光、特效、烘培等渲染工作。
由于水电站的模型全部由CAD软件制作而成,属于精细模型,一个抽水蓄能电站一个机组的零件数高达10万多个,需要人工将模型导入到3dsMAX软件中,再进行优化、减面等工作,最终导入至虚拟现实平台。该技术路线的缺点是不能较好的应用在基于CAD超大模型的水电站,首先,使用此技术路线会需要大量专业的模型制作人员,将CAD模型导入到3dsMAX软件中,然后进行处理,其次,由于虚拟现实系统对于面片数的要求,通常一个CAD模型的机组直接导入到3dsMAX软件中面片数最少超上亿个,市面上的通用的虚拟现实平台几乎承载不了,经过减面优化处理的模型失去了水电站对于建立精确模型库的意义。
传统的三维建模技术首先对真实物体进行抽象,用多边形构造物体的三维模型,随着产品结构的越来越复杂、三维模型越来越大,仅仅依赖硬件的升级远远不够。大模型的显示、浏览和使用越来越困难。为保证三维建模以及模型展现的效率,三维模型的轻量化技术必不可少。
申请号201510358737.5的中国专利公开了一种三维模型批量格式转换及轻量化方法,该方法用CATIA软件对三维实体模型文件进行stp格式的批量转换;使用3DVIAComposer中的程序3DVIA Sync对所得stp格式模型进行批量格式转换及轻量化处理,得到3ds格式模型;用Unity3D导入轻量化后的三维实体模型。该方法在用于计算机仿真时,能够在保证模型显示效果的前提下,减小模型转换时间,但是缺点是其轻量化过程不能继承原有模型的特征、属性、材质和结构信息等,轻量化过程损害了模型库的精准度。
申请号201210018297.5的中国专利公开了一种三维实体模型轻量化优化方法,该方法基于CATIA、三维引擎Virtools以及3DMAX三种软件,利用CATIA对相关CAD模型进行特定格式的存储,然后将相关实体模型导入到Virtools中,利用Virtools对实体模型进行优化运算,再利用Virtools对模型进行存储,最后将实体模型导入3DMAX中以完成模型的材质处理、贴图、烘焙等工作。该方法的缺点是模型格式转换较为复杂,不利于模型轻量化的快捷高效处理。
发明内容
本发明的目的是针对现有技术存在的问题,提供一种基于CAD超大模型的虚拟现实技术在水电站仿真的应用方法。本发明解决了水电站超大CAD模型在虚拟现实仿真系统中的应用问题,避免了重复建立三角面片模型,采取模型格式转换及自动轻量化的方式,使模型处理工作变得更加快捷、高效,研发人员可将主要精力放到后期仿真应用的内容制作上。
为实现上述目的,本发明采用的技术方案是:
基于CAD超大模型的虚拟现实技术在水电站仿真的应用方法,包括以下步骤:
S1、在SolidWorks软件中以还原模式打开CAD水电站精确模型;
S2、对打开的CAD水电站精确模型进行轻量化处理,得到轻量化后的水电站模型,其中,轻量化处理包括对所述水电站精确模型的面片化和轻量化;
S3、将轻量化后的水电站模型存储为SFX格式的文件,进一步包括:约定SFX格式的信息格式,提取SolidWorks中的水电站精确模型数据信息,所述精确模型数据信息包括点、线、面、装配关系、特征、属性,根据解析和解释规则将提取的水电站精确模型数据信息进行SFX格式化,通过约定的SFX格式读取后保存为SFX格式的模型文件,保存的SFX格式的模型文件保留了水电站精确模型的特征、属性、材质、机构联动信息;
S4、将SFX格式的水电站模型文件导入至虚拟现实平台MakeReal3D中,进一步包括:虚拟现实平台MakeReal3D对UE4进行二次开发,增加SFX格式的数据导入格式,并为相关属性、特征、装配关系进行解释,当SFX格式的水电站模型文件导入虚拟现实平台MakeReal3D后,得到的对应水电站模型继承了水电站精确模型的特征、属性、材质、机构联动信息。
优选地,对所述水电站精确模型的面片化包括:将CAD水电站精确模型转换为三角形面片模型。
优选地,对所述水电站精确模型的轻量化包括:1)基于三角形面片的几何数据,使用多线程分别应用重新划分的三角形网格轻量化算法、近平面合并算法和基于小波分析的轻量化算法进行三角形面片的轻量化,得到每一轻量化算法处理后的总三角形数目和三角形所占像素总面积,然后根据总三角形数目和三角形所占像素总面积的加权总值来确定针对具体的三角形面片采用哪一种轻量化算法的处理结果进行后续计算;2)进行数据精细程度分级,根据工程模型的特征特点与虚拟现实的应用特点对模型数据进行特征和细节分级;3)生成LOD数据,包括:对于较大的场景中的可区分模型生成LOD模型,在大场景中,若场景大小大于设定的值,则对可区分模型生成LOD模型,并在距离较远的时候启用LOD模型;4)对上述处理后的模型进行三角形条带化处理,用N+2个顶点表示N个三角形。
优选地,在对SFX格式开发时,将SFX的基础API在Solidworks软件中进行扩展安装,安装后在Solidworks的软件菜单中出现SFX转换器。
优选地,将轻量化中涉及到的算法按照一定的方法在SFX中进行对Solidworks开发,经过层层的精细模型轻量化后,模型的性能得以在虚拟现实软件中应用,其中,轻量化中涉及到的算法包括:实体模型网格化;三角形面片的轻量化:重新划分的三角形网格轻量化算法、近平面合并算法、基于小波分析的轻量化算法;三角形条带化;数据精细程度分级、生成LOD数据。
优选地,在SolidWorks还原模式下,水电站精确模型的零件结构树是完整的,插件在对水电站模型解析过程中按照目录树层次结构进行处理,保证水电站精确模型在进行轻量化过程中顺利进行。
优选地,还原模式下,对水电站模型的解析采用逐层、划分、关联、特征法进行。
优选地,SFX格式集成了轻量化后的水电站模型和水电站精确模型之间的相关关系。
与现有技术相比,本发明的有益效果是:本发明主要从根本上解决了水电站超大CAD模型在虚拟现实仿真系统中的应用问题,避免了重复建立三角面片模型,采取模型格式转换及自动轻量化的方式,使模型处理工作变得更加快捷、高效,研发人员可将主要精力放到后期仿真应用的内容制作上;本发明对超大型水电站精确模型进行轻量化处理之后,在虚拟现实软件中存在的面片数平均减少70%,运行速度提升了50%以上,缩减了模型导出的转化时间,提高了虚拟现实软件的处理效率和渲染速度。
具体实施方式
下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动条件下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示为本发明的应用流程图。基于CAD超大模型的虚拟现实技术在水电站仿真的应用方法,包括以下步骤:
S1、在SolidWorks软件中以还原模式打开CAD水电站精确模型;
S2、对打开的CAD水电站精确模型进行轻量化处理,得到轻量化后的水电站模型,其中,轻量化处理包括对所述水电站精确模型的面片化和轻量化;
S3、将轻量化后的水电站模型存储为SFX格式的文件,进一步包括:约定SFX格式的信息格式,提取SolidWorks中的水电站精确模型数据信息,所述精确模型数据信息包括点、线、面、装配关系、特征、属性,根据解析和解释规则将提取的水电站精确模型数据信息进行SFX格式化,通过约定的SFX格式读取后保存为SFX格式的模型文件,保存的SFX格式的模型文件保留了水电站精确模型的特征、属性、材质、机构联动信息;
S4、将SFX格式的水电站模型文件导入至虚拟现实平台MakeReal3D中,进一步包括:虚拟现实平台MakeReal3D对UE4进行二次开发,增加SFX格式的数据导入格式,并为相关属性、特征、装配关系进行解释,当SFX格式的水电站模型文件导入虚拟现实平台MakeReal3D后,得到的对应水电站模型继承了水电站精确模型的特征、属性、材质、机构联动信息。
作为本发明的一种优选方案,在三角面片的轻量化处理中,我们可以使用多线程分别应用重新划分的三角形网格轻量化算法、近平面合并算法和基于小波分析的轻量化算法进行三角形面片的简化,最终根据总三角形数目和三角形所占像素总面积的加权总值来确定采用哪种三角形面片简化算法。其中,1)重新划分的三角形网格轻量化算法为:先将一定数量的点分布到原有网格上,然后使用新顶点和老顶点生成一个中间网格,最后删除中间网格中的老顶点,并对产生的多边形区域进行局部三角化,形成以新点为顶点的三角形网络。具体地,分布新点采用排斥力算法,即先随机分布新点,然后计算新点之间的排斥力,根据排斥力在网格上移动这些新点,使它们重新分布。排斥力的大小与新点之间的距离、新点所在的三角形的曲率和面积有关。2)近平面合并算法为:在初始网格上搜索共面或近似共面的面片将其合并为一个更大的多边形,然后重新三角化得到更少的面片。选择一个种子三角面,根据一定的准则将周围的三角形合并为一个更大的面,然后把边界拉直,再对其进行三角化。算法通过有线误差和更精确的局部三角化扩展了近平面合并算法,并且在遇到类似洞、岛的多边形时能够进行自动的区域分割,以产生不带洞、岛的三角化的三维模型。3)基于小波分析的轻量化算法为:利用小波分析的方法将一个三维模型分解成低分辨率部分和细节部分,低分辨率部分是原始模型的一个子集,它的顶点为原始模型中对应顶点的邻域的加权平均,通常用低通滤波来实现,因此表现为低频信号;细节部分通常包含抽象的小波系数,这些系数可以通过高通滤波来得到,表现为高频信号。重建的过程就是通过选择适量的高频信号与低频信号以合成相应精度的三维模型,通过略去其余的更高频分量来达到简化的效果。
如图2所示,在三角形面片的轻量化处理后,先进行数据精细程度分级,然后生成LOD数据,最后进行三角形条带化处理,完成模型特征、属性、材质、机构信息继承的过程。其中,在三角形面片的轻量化处理后,根据工程模型的特征特点与虚拟现实的应用特点对模型数据进行特征和细节分级,针对模型的应用和优化处理提供最佳的数据处理功能;然后对于较大的场景中的可区分模型可以生成LOD模型,这样对于较大的场景也能实现更好的渲染效率,在大场景中,若场景大小大于设定的值,将对可以区分的模型模块生成LOD模型,并在距离较远的时候启用LOD模型;对于上述得到的三维模型,在更进一步的操作之前要对其顶点数目进行压缩,即三角形条带化。上述算法得到的三维模型中,三角形面片大多是各个分开的,即三个顶点来表示一个三角形。然而其中很多三角形都是有公用边的,这样就为三角形的条带化提供了基础,表示N个三角形,使用每个三角形三个顶点的表示方法需要保存3N个顶点,而使用条带化的三角形进行保存的话仅需要N+2个顶点即可进行表示。
在具体实施中,基于水电站的需求,要求模型的属性、特征、材质、机构联动等信息通过轻量化过程能够继续保留,而这一点通过当前传统的技术手段不可能完成。一方面因为模型的属性、特征、材质、机构联通即便是同样的其它CAD软件经过转化也只能保存部分信息,而虚拟现实软件只接受可视化模型,其它信息在虚拟现实软件没有对应的解析、解释。如果要保留相关信息,则需要虚拟现实软件中增加对应的属性、特征、材质、机构联动等信息,增加这些信息,是需要通过对虚拟现实软件进行开发来实现。传统的工业虚拟现实软件由于其应用和开放性主要提供的是二次开发,主要应用的层面只在应用层面,像给虚拟现实软件增加只有Solidworks这类CAD软件精确模型才有的特征、属性,必须对底层进行开发,那么这样的虚拟软件是必须支持底层开发的,同时还需要满足大型水电站的性能要求。经过对比,MakeReal3D是最佳选择,MakeReal3D不仅支持传统的工业虚拟现实功能,同时兼容了开源的UE4图形引擎,UE4目前在从性能、扩展性都是虚拟现实软件中最为优秀的底层开源图形引擎,恰好满足底层开发和性能。在此基础上,从MakeReal3D图形引擎的底层(即UE4引擎)开发对应的信息支撑接口。解决在虚拟现实软件中开发对应的信息支撑接口,还需要有选择性的支撑要求的模型属性、特征、材质、机构联动等信息,另一方面需要对图形进行轻量化。直接将Solidworks格式模型导入到MakeReal3D虚拟现实软件中是不可能实现的,一是Solidworks格式的模型信息太多,另外中间格式也只能保存三角信息,都是既定的格式信息,再者需要对模型进行轻量化,轻量化也要满足水电站大型精细使用便捷性要求,需要自动轻量化。鉴于以上要求,那么模型格式一定是特定的定制化模式格式。经过测试和开发,目前只有SFX格式是一种混合式的数据格式,并且支持扩展开发,且支持对水电站精细模型软件Solidworks的API进行开发。
在对SFX格式开发时,需将SFX的基础API在Solidworks进行扩展安装,安装后在Solidworks的软件菜单中则会多出SFX转换器,这是第一步。SFX转换器并不能保证要抽取的信息和轻量化程度。首先轻量化是一种复杂的过程,其中要涉及到的轻量化算法和方法:实体模型网格化,三角形面片的轻量化:重新划分的三角形网格轻量化算法、近平面合并算法、基于小波分析的轻量化算法,三角形条带化,数据精细程度分级、生成LOD数据。将这些算法按照一定的方法在SFX中进行对Solidworks开发,经过层层的精细模型轻量化后,模型的性能得以在虚拟现实软件中应用。其次,由于模型轻量化后,可被虚拟现实拾取的即是网格模型,如果需要抽取和继承Solidwork中精细模型的属性、特征、材质、机构联动等信息,则根据一定的解析和解释规则将相关几何进行SFX格式化,即生成了新的特定的SFX格式,这样就可以基于水电站需求,要求模型的属性、特征、材质、机构联动等信息如何通过轻量化的方式继续保留。
在具体实施中,为了保证水电站Solidworks模型在进行轻量化过程中顺利进行,在具体实施中需要选择Solidworks还原模式打开模型文件。Solidworks普通模式下为了方便预览和快速加载,打开时solidworks会根据软件自身能力对模型预览自动性能优化,例如Solidworks打开大型装配体时,部分模型的显示通常不正常,这就是SolidWorks轻化。所谓轻化是在打开装配体的时候不读取零件特征,只读取实体信息、当前颜色和配合关系。当装配体很大时,在轻化状态下打开装配体可以明显提高打开文件的速度同时节约系统资源,让零件的显示更加流畅。然而轻化模式下,无法对模型进行修改颜色、修改材质等操作,甚至对于某些操作及附加应用程序,轻化零部件可能不能正常运作,这样的模型数据在可视化的仿真应用中是不允许的。可视化的虚拟现实仿真应用中需要确保两点:1.模型需表现的图形几何细节不可失真2.模型需尽可能的达到实时运行的渲染速度;另外本应用中水电站的相关的特征、材质、属性也不可以丢失。
还原模式下模型的几何细节、各类属性、特征可以被分层完整的加载。基于还原模式,计算机对模型的数据相关特征、属性才可以被完整、准确的识别,接下来可以对模型数据的信息、特征、属性等进行解析、解释。对数据的解析采用了逐层、划分、关联、特征法进行。如图3所示,在还原模式下,以solidworks模型为例,将Solidworks模型数据以还原的模式打开后,针对水电站级别的大装配体,基于Solidworks API对模型数据首先逐层解析。由于数据的加载尤其大装配体如果一次性加载,在特定的软硬件环境中是无法完成的,这个时候需要从数据结构树、装配关系、特征关系、图形显示等方面进行逐层加载:数据结构树是还原模式下完整还原的,结构树即意味着数据的实体数量、名称相关的索引,以此为建立第一次逐层解析记录,当数据过大时,可对结构树索引优先解析存储。但光有结构树是远远不够的,大装配体中很多模型显示或者加载是随着软件本身渲染能力层层加载的,也就是普通模式下很多被轻化即相关的特征和图形显示是不能被按照后期应用关注点规定的方法和算法进行运算的,即涉及后期仿真数据的抽取规则和过程。在此基础上,我们接着进行提取装配关系,特征以及图形,装配关系实际是结构树的完善,而且还原模式下,也加载与模型本身的特征、图形显示关系的更完整的信息,那么我们可利用的信息就可以选择,抽取有利的信息。例如solidworks草图阵列,如果按照传统的数据导出转化给虚拟现实软件使用,就是采用将草图阵列中的所有实体转化为Actor对象,造成过多的转化时间和虚拟现实软件中过多的存储和资源浪费,通过解析结构树,装配关系,特征等各个层次的信息即可将重复的阵列内容换成单一的Actor,在后期划分时以其几何、参数属性进行划分,并建立关联因素,以其参数、属性、位置等特征进行抽取和制定精确的关联规律和匹配,不仅缩减导出的转化时间,也确保了虚拟现实内容的准确性和渲染速度。如果是普通模式,很多地方被轻化,在图形、特征与装配关系等无法进行精确的匹配,数据的解析则会存在失真、重复Actor对象数据过多,场景过大,参数无法提取等问题,也造成了虚拟现实应用问题。因此,相对于普通模式而言,选择还原模式能够很好的保证水电站Solidworks模型在进行轻量化过程中的顺利进行。
在具体实施中,本发明将经过处理后的模型生成特定的SFX格式文件,该SFX格式的水电站模型可导入至虚拟现实平台MakeReal3D中进行后期的应用。SFX格式是基于CAD软件API开发的轻量化的精确模型导出的虚拟现实可视化三维文档格式,基础的SFX格式采用了CAD软件的精确模型特征:包括精确描述模型的几何信息和拓扑信息,如点、线、面、特征、建模信息,另外SFX格式是可以根据接口进行自行扩展的,例如扩展各类属性等,而非传统的既定数据格式。UE4底层同样是允许扩展和开发的,非传统固化属性的虚拟现实软件,但另一方面UE4毕竟是虚拟现实软件,提供的用途、用法与CAD软件根本不一致。
具体地,在将CAD数据导入MakeReal3D平台时,需要考虑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格式,并为相关属性、特征、装配关系进行解释,当导入后,对应的模型则就多出相应的属性、特征、装配关系等。
本发明中,SFX模型可被拾取,主要在于与虚拟现实软件平台对接的过程中,对模型的属性进行了更改,普通FBX格式不可被拾取拆装是不具备SFX对应增加的属性特征,模型可被拾取是一种赋予模型的几何碰撞特性,默认的FBX格式模型是传统的图形格式,并未被加工过属性,在模型被平台解析过程中也只是被解析为基础的几何模型,所以FBX模型在虚拟现实运行过程中是无法被拆装拾取的,其主要原因是由于平台底层的图形引擎与原生格式接口的规定格式和属性造成的。如果要解决FBX格式和SFX模型在平台应用时的拆装统一问题,一是改变FBX格式,对FBX格式改造开发,但是FBX格式是一种固定的传统格式,修改后可能不可识别,一方面要改变生成FBX格式的软件,另一方面要修改平台图形识别的功能,相当于为更改该属性从而生成了一种新的模型格式,生成的新的FBX肯定不会被其它任何保存FBX格式能解析或者解释,解释过程可能会产生各类兼容性问题。另外一种方法,就是在导入的过程中,在对FBX格式解析后对数据添加对应的属性特征,导入的Actor对象则具备了可被拾取的能力。
导入过程中对模型的对象和属性进行更改一定是批量化的更改或修改,而批量化的更改过程还需要确保数据的准确性。导入的过程中首先是对格式进行格式化解析和解释,解释后需要对要导入的软件进行Actor图形绘制和属性、特征、特点生成,此生成过程中即是对固定格式FBX数据添加属性或者修改模型对象的最佳时机和方式。如何准确的批量修改,则一定是Actor对象的唯一标识,首先确保生成的Actor对象不能为空,另外对FBX格式的模型的材质进行识别分类,确保修改的属性在赋予过程中不影响其他关联材质,关联材质不是唯一材质,则会影响其他的Actor对象,造成属性的碰撞混乱与重叠,如发生关联属性问题,可对Actor对象添加新的唯一mesh,确保各个Actor对象的修改不互相影响。
实施例
以SolidWorks2017为例,展示基于CAD超大数据量模型的虚拟现实技术在水电站仿真系统应用的具体操作流程,如图4至图13所示,包括:1)打开SolidWorks2017,选择零件或者装配体文件,并且在模式选项下选择“还原”模式;2)选择工具菜单,SFX转换器选项,此工具就是上文提到的轻量化插件;3)选择导出设置,做好基本配置后,点击确定按钮,再在菜单上选择SFX转换器-轻量化模型;4)选择保存路径,自动生成轻量化模型文件;5)转换成功后的SFX文件可导入至MakeReal3D平台中;6)通过平台的导入按钮,选择生成的轻量化模型文件,经过简单配置后即可导入,SolidWorks模型导入时,选择单位m;7)模型导入成功。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。