论文部分内容阅读
摘 要:核电厂信息化模型建设的关键在于采用3D图形引擎可视化展示和发布核电厂信息化模型,提供三维浏览、虚拟操作等功能。三维图形引擎是核电厂信息化模型建设灵魂和基础。本文通过基于OpenGL规范自主研发核电三维图形引擎,并通过图元合并与简化、LOD等技术实现三维模型轻量化,用于支撑核电厂信息化模型建设,为数字化核电厂建设打下良好的基础。
关键词:三维图形引擎 轻量化 OpenGL 网络化
中图分类号:TM62 文献标识码:A 文章編号:1674-098X(2021)04(c)-0101-06
Research on Autonomous Technology of 3D Graphics Engine for Nuclear Power Plant Information Model Based on OpenGL Specification
CAI Zhenghao ZHAO Yujuan
(China Nuclear Power Engineering Co.,Ltd., Beijing, 100840 China)
Abstract: The key to the construction of nuclear power plant informatization model is to use 3D graphics engine to visually display and release nuclear power plant informatization model, and provide functions such as three-dimensional browsing and virtual operation. The three-dimensional graphics engine is the soul and foundation of nuclear power plant information model construction. In this paper, we independently develop a nuclear power 3D graphics engine based on OpenGL specifications, and realize the lightweight of 3D models through graphics merging and simplification, LOD and other technologies, which are used to support the construction of nuclear power plant informatization models and lay a good foundation for the construction of digital nuclear power plants.
Key Words: 3D graphics engine; Lightweight; OpenGL; Networking
工厂信息化模型是数字工厂建设基础和关键,已经在全球工程建设领域获得广泛认可。工厂信息化模型,其核心是在工程建造前,预先在计算机中模拟建立1∶1包含各类信息数据的工厂信息模型;工程项目设计单位、建造单位、后期运营单位可以基于统一的工厂信息模型进行沟通协作,实现工厂设计建造和运营过程三维可视化、数字化、智能化,大幅度提高协同效率、节省资源投入、降低工程成本、提升工程质量、提高工厂运营和管理水平。
与其他工厂 一样,核电厂信息化模型建设的关键在于采用三维图形引擎可视化展示和发布核电厂信息化模型,提供三维浏览、虚拟操作等功能,并将三维模型与设计图纸、文件、属性参数等结构化工厂建设过程和成果数据进行关联,构建三维数字化孪生电厂。其中,三维图形引擎起到了核心作用,可以说是工厂信息化模型软件开发的“芯”。
三维图形引擎聚合了图形绘制能力的功能组件和“支持应用的底层函数库”,可提供场景构造、对象处理、场景渲染、事件处理、碰撞检测等功能,实现工厂物理对象在计算机模拟过程。目前,国内三维图形引擎发展起步晚、积累薄弱,研究相对落后,与国外先进水平存在差距。国内大部分电厂信息化模型核心三维引擎几乎都选用国外三维图形引擎,如Cesium、Unity、Parasolid、ACIS等引擎或基于这些引擎开发的商业三维建模软件,并在其基础上开发基于信息化模型的综合管理平台。此模式存在三大问题:一是数据安全得不到保障,国外引擎不受管控,存在非法收集数据可能,电厂核心数据安全受到威胁;二是引擎通用性和性能无法满足核电厂要求,核电厂模型存在跨专业种类多、模型复杂度高、模型体量大等特点,传统引擎难以支持,但现有引擎基于文件组织和管理三维模型,不能根据三维模型对象实际需要传输和加载模型,过多无用数据传递交换,严重影响引擎运行效率,不能满足大型核电厂信息化模型的应用;三是存在断供的风险,三维图形引擎非自主开发,无自主知识产权,受政策和国际形势的影响大,存在较大的断供风险。所以,解决当前国内核电厂信息化模型建设中遇到的这种“缺芯少魂”的困境迫在眉睫。
核电厂全寿期参与单位众多、涉及业务流程或业务系统众多,各方对核电厂信息模型和数据有着强烈的应用需求,基于三维模型实现多方数据共享、利用的需求是核电三维图形引擎必须考虑的重点。本文描述了基于OpenGL技术,自主研发核电厂三维轻量化图形引擎研究过程和成果,并对引擎进行了测试和验证。 1 三维引擎技术研究
计算机图形处理包括多个步骤和过程,其中形成主要技术和标准包括以下方面。
1.1 面向图形设备的接口标准
(1)计算机图形元文件(CGM):显示器、鼠标等。
(2)计算机图形接口(CGI):设备驱动程序。
1.2 面向应用软件的接口标准
(1)程序员层次交互式图形系统(PHIGS),(图形程序包)GL。
(2)(三维)图形核心系统(GKS-三维)。
1.3 面向图形应用系统中工程和产品数据模型及其文件格式
面向图形设备的接口标准由硬件设备厂商进行开发,面向图形应用系统中的工程和产品数据模型及其文件格式,屬于模型数据组织格式描述,不属于三维图形引擎内容范畴。三维图形软件开发主要基于面向应用软件的接口标准实现,当前业界主流面向应用软件计算机图形技术规范主要是OpenGL、Direct三维等。其中Direct三维属于Microsoft公司图形标准,可移植性差,OpenGL独立于操作系统和硬件环境,是工 业标准,可移植性好。
OpenGL技术(Open Graphics Library,开放图形库或者“开放式图形库”)是用于渲染2D、三维矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象,广泛应用于建筑、工厂、机械领域三维图形引擎开发过程,被认为是高性能图形和交互式视景处理的标准,目前包括IBM、DEC、HP和Microsoft等大公司都采用了OpenGL图形标准[1]。综上,基于OpenGL开放图形库接口规范研发自主知识产权三维图形引擎,不仅有以上优点,还无需依赖国外技术,具有自主知识产权,信息数据安全可控,不受政策和外交局势影响,避免了断供的风险,可以更好地促进国内三维图形引擎的发展。
2 三维引擎研发方案
考虑核电厂信息化模型跨专业种类多、模型复杂度高、模型体量大等特点,以及三维模型数据便捷访问、传输、利用等需求,核电三维图形引擎选择在Web端渲染三维模型,实现在线可视化浏览和操作三维模型功能;用户无需安装任何软件或者插件,通过浏览器即可调用三维模型,提高模型数据获取便捷性[2]。
自主研发三维图形引擎的研发方案的摒弃了基于文件对象的三维模型管理方式,采用对象化的方式管理三维模型,三维数据对象为普通的数据对象,重新定义和组织三维模型数据。三维模型处理过程中,可以根据实际需要加载和传输三维模型数据,减少不必要的数据传递和模型渲染过程,提升引擎的性能;同时减少数据冗余,降低引擎渲染负荷,结合算法的优化过程,使大场景三维模型能够在主流配置计算机上渲染,满足核电大模型加载要求,满足核电厂信息化模型建设要求。
3 三维引擎研发
核电三维图形引擎的研发具有以下特点。
(1)完全自主化:完全自主开发,不受限制。
(2)兼容性好:引擎底层自主研发,兼容工厂 、机械等多专业模型。
(3)性能强:采用独有架构设计和算法优化,满足大场景模型渲染需求。
(4)可扩展性好:采用对象化方式管理三维模型,在Web端渲染,可利于嵌入业务系统。
3.1 引擎系统架构设计
核电三维轻量化图形引擎基于分布式架构,包含10个模块及子系统,各模块或子系统相对独立,并配合运转,其系统架构如图1所示。
(1)声音子系统:实现引擎的声音、音效处理,支持三维中声音处理。
(2)图形子系统:实现引擎的图形绘制功能,包括2D和三维图形。
(3)渲染模块:该模块利用OpenGL图形库实现模型渲染。
(4)控制模块:控制整个引擎各项功能的运行。
(5)配置子系统:实现引擎各项性能参数配置管理。
(6)输入子系统:负责引擎的数据输入。
(7)数据存储模块:实现引擎的数据存储和读取。
(8)计时器:实现引擎的计时服务,为控制模块提供基础。
(9)轻量化模块:对三维模型进行轻量化数据处理。
(10)网络化模块:进行数据网络传输,并保证数据在网络上的安全性。
由于在Web端渲染核电大场景三维模型,硬件资源使用受到限制,引擎系统中模型渲染、模型轻量化和引擎网络化技术显的尤为重要。本文着重对该模块设计开发过程进行描述和论证。
3.2 引擎模型渲染
模型渲染是决定引擎性能核心模块之一,是三维模型可视化展示的关键。系统模型渲染分为3个主要阶段:应用程序阶段、几何阶段、光栅阶段,如图2所示。应用程序阶段涉及中央处理单元和内存,主要负责执行场景图建立、碰撞检测、层次视锥裁剪、LOD选取等加速算法。经过应用程序阶段后,将通过数据总线把需要渲染图形的相关数据(顶点坐标、法向量、顶点颜色、纹理坐标、纹理等)传送到GPU,以供渲染的下一阶段使用[3]。
几何阶段将完成顶点和多边形操作,在可编程图形管线中,该阶段工作基本都在顶点着色器中执行。几何阶段输出经过变换和投影之后的顶点坐标、颜色以及纹理坐标。在此需要强调,几何阶段的工作量很大,消耗的时间较长。
光栅阶段的目的是为每个像素生成正确的配色,以完成三维模型到图像的绘制过程。光栅阶段包括图元装配、光栅化、片元着色器、逐片元操作(Per-Fragment Operations)、帧缓存(Frame buffer)等过程,最终得到存储在帧缓存中的像素信息。
3.3 引擎三维模型轻量化
大型复杂数字核电厂包含超过百万级零部件的三维数据信息,使得数字化核电厂三维模型信息量庞大、信息冗余,而同时对这些信息进行三维可视化展示,需要占用大量的计算机内存、CPU、显卡等资源,且渲染显示速度慢,影响计算机正常工作[4]。因此,为满足数字化核电厂三维模型要求,需要研究引擎轻量化技术,对三维模型进行轻量化处理,提高渲染显示,减少计算机资源占用。 引擎轻量化要求在不影响模型展示效果的同时,隐藏三维模型冗余信息,提高渲染显示速度,降低对计算机的要求。为达到模型轻量化的要求,对三维模型简化过程设计包含以下几个步骤。
(1)隐藏造型历史和特征参数等信息。三维零件模型信息包括几何信息和非几何信息。几何信息包括点、线、面等几何元素和各几何元素的坐标系、基准、特征定义/参数和造型历史信息。非几何信息主要指产品加工工艺信息,包括粗糙度、形位公筹、尺寸公差 、注释文本及技术要求等信息。过滤掉造型过程信息和特征参数信息等,并不影响产品模型浏览与批注,但三维模型数据大大降低。
(2)三角面片合并与简化。三角化简化了三维模型参数,使之为离散的三维模型网格,将精确的三维模型利用三维近似的表示有利于三维模型轻量化。通过调节三角化参数,让三维模型轻量化程度得到控制,从而降低计算机内存。参考模型表面特征通过模型零件的连接处和配合处特征进行合并,降低模型表面复杂度等手段来增加模型轻量化程度。
(3)三维贴图。三维贴图是一种功能定制的模型设计方法,在装配仿真场景中将高逼真度的图片素材附加到三维环境中,同时能随着三维场景进行收缩和平移。三维图片极大地提高了模型的真实度,简化了建模步骤和模型体积,有效提高了模型轻量化程度。
(4)网格模型简化和压缩。经过前几步的处理,相比原始的CAD模型三角化网格模型数据量已经大大减小。为了尝试更高的压缩比,研究采用现今很成熟的压缩算法对模型进行压缩,模型拓扑重构得到了更小的轻量化模型。
(5)细节层次轻量化渲染。在上述几步的基础上,采用细节层次轻量化(Level of Details, LOD)技术进行模型轻量化渲染。LOD模型在不影响画面视觉效果的条件下,对同一物体建立几个不同逼近精度几何模型。根据物体与视点的距离来选择显示不同细节层次的模型,从而加快系统图形处理和渲染的速度。保证在视点靠近物体时对物体进行精细绘制,在远离物体时对物体进行粗略绘制,以此达到快速交互模型目的,并保证在不降低用户观察效果的情况下,大大减少渲染负载[5-6]。
模型三维轻量化流程如图3所示。引擎轻量化技术不仅适用于大型复杂电厂三维模型展示,还可以广泛应用于数字化工厂建设其他各个领域,包括虚拟漫游、虚拟装配和虚拟拆卸等。
3.4 引擎网络化
OpenGL是按照客户机—服务器模式设计的。设计将整个系统分为两部分,一部分是客户端,它负责发送OpenGL命令。一部分是服务端,它负责接收OpenGL命令并执行相应的操作。比如编写的OpenGL命令程序就是一个客户端,而计算机图形硬件制造商提供的OpenGL的实现就是服务器。
对于单个计算机的运行环境来说,可以将CPU、内存等硬件,以及OpenGL程序看做客户端,而将OpenGL驱动程序、显示卡等看做服务端,如图4所示。
对于网络化的环境来说,服务端和客户端并不在一台计算机上,如图5所示。OpenGL驱动程序、显示卡等服务端要素安装在独立的图形服务器上。用户通过客户端程序(也可以是web浏览器、移动设备)、网络来访问图形服务器获取相关的模型渲染数据。
网络化技术要求解决以下问题。(1)客户端的渲染数据,服务端通过OpenGL每一帧渲染都有帧缓冲区,每一帧渲染结果都会存入帧缓冲区中(比如像素深度、颜色等)。服务端通过网络把需要的数据发送给客户端显示。(2)渲染数据的实时高效的传输,保持渲染帧率是一个重要指标。这需要最优化的数据网络传输方式减少不必要的过渡,同时通过设计压缩算法数据降低带宽的需求量。(3)处理高并发的问题,传统的OpenGl的程序的客户端和服务端在一台机器上,是一对一的关系,而网络化以后服务器和客户端是多对一的关系。当客户端并发访问的数量增加的时候,要正对图形服务器做好负载均衡,保证每个客户端有足够的服务资源可以调用。
3 引擎测试和应用
在三维模型展示基础上,开发了一系列三维模型浏览和操作功能,对引擎性能进行了测试。测试中采用华龙一号项目核电厂三维模型,文件容量10G,含百万个零部件,亿级面片,在主流电脑(I7 6800CPU+8G内存+2G显存显卡电脑)上进行显示,见下图6和图7所示。经测试,整个模型加载时间2min,在线浏览和虚拟漫游均十分流畅,满足数字化核电厂信息化模型建设要求。此外,系统具有很好的兼容性,可以兼容“dgn、rvm、stp”和“igs”等多种通用格式的三维模型数据。
5 结语
本文所述自主研发的数字化核电厂三维轻量化图形引擎,包括多个模块及子系统,满足核电厂信息化模型可视化展示和应用。根据核电厂信息化模型特点,着重对模型渲染技术、引擎轻量化技术和引擎网络化技术进行了深入的研究和探索。引擎经过了华龙一号核電厂全厂级三维模型加载测试验证,测试结果证明,本文所述自主研发的三维轻量化引擎,能够满足大型复杂核电厂百万级零部件模型展示和操作等处理需求。可通过浏览器在线流畅浏览三维模型,支持虚拟漫游、剖切等三维操作,无需安装任何浏览器插件和控件或本地程序;此外,引擎具备较强的兼容性,支持“dgn、rvm、stp”和“igs”等多种主流三维模型格式,满足数字化核电厂建设要求。不过,随着核电厂信息化模型建设不断推进及其深入应用,仍需根据业务要求持续推进引擎功能完善和性能优化,继续提升引擎的实用性,支持更高精度、更加复杂、大型的模型高清晰、高效的三维可视化应用。
参考文献
[1] 葛磊.虚拟现实场景交互系统的设计与实现[D].北京:北京邮电大学,2018.
[2] 仝牧.服务设计理念下的复杂信息系统界面设计方法探究[D].南京:东南大学,2019.
[3] 王晓庆.基于VC++的约束TIN算法设计与实现[J].矿山测量,2017,45(1):29-31.
[4] 郑海龙.基于并行工程理论的HY核电项目设计质量改进研究[D].济南:山东大学,2020.
[5] 寇小勇.基于WRF模式的大规模云数据三维模拟算法研究[D].南京:南京信息工程大学,2020.
[6] 温蕊.三维工程模型检索及智能设计技术研究[D].南京:南京理工大学,2018.
关键词:三维图形引擎 轻量化 OpenGL 网络化
中图分类号:TM62 文献标识码:A 文章編号:1674-098X(2021)04(c)-0101-06
Research on Autonomous Technology of 3D Graphics Engine for Nuclear Power Plant Information Model Based on OpenGL Specification
CAI Zhenghao ZHAO Yujuan
(China Nuclear Power Engineering Co.,Ltd., Beijing, 100840 China)
Abstract: The key to the construction of nuclear power plant informatization model is to use 3D graphics engine to visually display and release nuclear power plant informatization model, and provide functions such as three-dimensional browsing and virtual operation. The three-dimensional graphics engine is the soul and foundation of nuclear power plant information model construction. In this paper, we independently develop a nuclear power 3D graphics engine based on OpenGL specifications, and realize the lightweight of 3D models through graphics merging and simplification, LOD and other technologies, which are used to support the construction of nuclear power plant informatization models and lay a good foundation for the construction of digital nuclear power plants.
Key Words: 3D graphics engine; Lightweight; OpenGL; Networking
工厂信息化模型是数字工厂建设基础和关键,已经在全球工程建设领域获得广泛认可。工厂信息化模型,其核心是在工程建造前,预先在计算机中模拟建立1∶1包含各类信息数据的工厂信息模型;工程项目设计单位、建造单位、后期运营单位可以基于统一的工厂信息模型进行沟通协作,实现工厂设计建造和运营过程三维可视化、数字化、智能化,大幅度提高协同效率、节省资源投入、降低工程成本、提升工程质量、提高工厂运营和管理水平。
与其他工厂 一样,核电厂信息化模型建设的关键在于采用三维图形引擎可视化展示和发布核电厂信息化模型,提供三维浏览、虚拟操作等功能,并将三维模型与设计图纸、文件、属性参数等结构化工厂建设过程和成果数据进行关联,构建三维数字化孪生电厂。其中,三维图形引擎起到了核心作用,可以说是工厂信息化模型软件开发的“芯”。
三维图形引擎聚合了图形绘制能力的功能组件和“支持应用的底层函数库”,可提供场景构造、对象处理、场景渲染、事件处理、碰撞检测等功能,实现工厂物理对象在计算机模拟过程。目前,国内三维图形引擎发展起步晚、积累薄弱,研究相对落后,与国外先进水平存在差距。国内大部分电厂信息化模型核心三维引擎几乎都选用国外三维图形引擎,如Cesium、Unity、Parasolid、ACIS等引擎或基于这些引擎开发的商业三维建模软件,并在其基础上开发基于信息化模型的综合管理平台。此模式存在三大问题:一是数据安全得不到保障,国外引擎不受管控,存在非法收集数据可能,电厂核心数据安全受到威胁;二是引擎通用性和性能无法满足核电厂要求,核电厂模型存在跨专业种类多、模型复杂度高、模型体量大等特点,传统引擎难以支持,但现有引擎基于文件组织和管理三维模型,不能根据三维模型对象实际需要传输和加载模型,过多无用数据传递交换,严重影响引擎运行效率,不能满足大型核电厂信息化模型的应用;三是存在断供的风险,三维图形引擎非自主开发,无自主知识产权,受政策和国际形势的影响大,存在较大的断供风险。所以,解决当前国内核电厂信息化模型建设中遇到的这种“缺芯少魂”的困境迫在眉睫。
核电厂全寿期参与单位众多、涉及业务流程或业务系统众多,各方对核电厂信息模型和数据有着强烈的应用需求,基于三维模型实现多方数据共享、利用的需求是核电三维图形引擎必须考虑的重点。本文描述了基于OpenGL技术,自主研发核电厂三维轻量化图形引擎研究过程和成果,并对引擎进行了测试和验证。 1 三维引擎技术研究
计算机图形处理包括多个步骤和过程,其中形成主要技术和标准包括以下方面。
1.1 面向图形设备的接口标准
(1)计算机图形元文件(CGM):显示器、鼠标等。
(2)计算机图形接口(CGI):设备驱动程序。
1.2 面向应用软件的接口标准
(1)程序员层次交互式图形系统(PHIGS),(图形程序包)GL。
(2)(三维)图形核心系统(GKS-三维)。
1.3 面向图形应用系统中工程和产品数据模型及其文件格式
面向图形设备的接口标准由硬件设备厂商进行开发,面向图形应用系统中的工程和产品数据模型及其文件格式,屬于模型数据组织格式描述,不属于三维图形引擎内容范畴。三维图形软件开发主要基于面向应用软件的接口标准实现,当前业界主流面向应用软件计算机图形技术规范主要是OpenGL、Direct三维等。其中Direct三维属于Microsoft公司图形标准,可移植性差,OpenGL独立于操作系统和硬件环境,是工 业标准,可移植性好。
OpenGL技术(Open Graphics Library,开放图形库或者“开放式图形库”)是用于渲染2D、三维矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象,广泛应用于建筑、工厂、机械领域三维图形引擎开发过程,被认为是高性能图形和交互式视景处理的标准,目前包括IBM、DEC、HP和Microsoft等大公司都采用了OpenGL图形标准[1]。综上,基于OpenGL开放图形库接口规范研发自主知识产权三维图形引擎,不仅有以上优点,还无需依赖国外技术,具有自主知识产权,信息数据安全可控,不受政策和外交局势影响,避免了断供的风险,可以更好地促进国内三维图形引擎的发展。
2 三维引擎研发方案
考虑核电厂信息化模型跨专业种类多、模型复杂度高、模型体量大等特点,以及三维模型数据便捷访问、传输、利用等需求,核电三维图形引擎选择在Web端渲染三维模型,实现在线可视化浏览和操作三维模型功能;用户无需安装任何软件或者插件,通过浏览器即可调用三维模型,提高模型数据获取便捷性[2]。
自主研发三维图形引擎的研发方案的摒弃了基于文件对象的三维模型管理方式,采用对象化的方式管理三维模型,三维数据对象为普通的数据对象,重新定义和组织三维模型数据。三维模型处理过程中,可以根据实际需要加载和传输三维模型数据,减少不必要的数据传递和模型渲染过程,提升引擎的性能;同时减少数据冗余,降低引擎渲染负荷,结合算法的优化过程,使大场景三维模型能够在主流配置计算机上渲染,满足核电大模型加载要求,满足核电厂信息化模型建设要求。
3 三维引擎研发
核电三维图形引擎的研发具有以下特点。
(1)完全自主化:完全自主开发,不受限制。
(2)兼容性好:引擎底层自主研发,兼容工厂 、机械等多专业模型。
(3)性能强:采用独有架构设计和算法优化,满足大场景模型渲染需求。
(4)可扩展性好:采用对象化方式管理三维模型,在Web端渲染,可利于嵌入业务系统。
3.1 引擎系统架构设计
核电三维轻量化图形引擎基于分布式架构,包含10个模块及子系统,各模块或子系统相对独立,并配合运转,其系统架构如图1所示。
(1)声音子系统:实现引擎的声音、音效处理,支持三维中声音处理。
(2)图形子系统:实现引擎的图形绘制功能,包括2D和三维图形。
(3)渲染模块:该模块利用OpenGL图形库实现模型渲染。
(4)控制模块:控制整个引擎各项功能的运行。
(5)配置子系统:实现引擎各项性能参数配置管理。
(6)输入子系统:负责引擎的数据输入。
(7)数据存储模块:实现引擎的数据存储和读取。
(8)计时器:实现引擎的计时服务,为控制模块提供基础。
(9)轻量化模块:对三维模型进行轻量化数据处理。
(10)网络化模块:进行数据网络传输,并保证数据在网络上的安全性。
由于在Web端渲染核电大场景三维模型,硬件资源使用受到限制,引擎系统中模型渲染、模型轻量化和引擎网络化技术显的尤为重要。本文着重对该模块设计开发过程进行描述和论证。
3.2 引擎模型渲染
模型渲染是决定引擎性能核心模块之一,是三维模型可视化展示的关键。系统模型渲染分为3个主要阶段:应用程序阶段、几何阶段、光栅阶段,如图2所示。应用程序阶段涉及中央处理单元和内存,主要负责执行场景图建立、碰撞检测、层次视锥裁剪、LOD选取等加速算法。经过应用程序阶段后,将通过数据总线把需要渲染图形的相关数据(顶点坐标、法向量、顶点颜色、纹理坐标、纹理等)传送到GPU,以供渲染的下一阶段使用[3]。
几何阶段将完成顶点和多边形操作,在可编程图形管线中,该阶段工作基本都在顶点着色器中执行。几何阶段输出经过变换和投影之后的顶点坐标、颜色以及纹理坐标。在此需要强调,几何阶段的工作量很大,消耗的时间较长。
光栅阶段的目的是为每个像素生成正确的配色,以完成三维模型到图像的绘制过程。光栅阶段包括图元装配、光栅化、片元着色器、逐片元操作(Per-Fragment Operations)、帧缓存(Frame buffer)等过程,最终得到存储在帧缓存中的像素信息。
3.3 引擎三维模型轻量化
大型复杂数字核电厂包含超过百万级零部件的三维数据信息,使得数字化核电厂三维模型信息量庞大、信息冗余,而同时对这些信息进行三维可视化展示,需要占用大量的计算机内存、CPU、显卡等资源,且渲染显示速度慢,影响计算机正常工作[4]。因此,为满足数字化核电厂三维模型要求,需要研究引擎轻量化技术,对三维模型进行轻量化处理,提高渲染显示,减少计算机资源占用。 引擎轻量化要求在不影响模型展示效果的同时,隐藏三维模型冗余信息,提高渲染显示速度,降低对计算机的要求。为达到模型轻量化的要求,对三维模型简化过程设计包含以下几个步骤。
(1)隐藏造型历史和特征参数等信息。三维零件模型信息包括几何信息和非几何信息。几何信息包括点、线、面等几何元素和各几何元素的坐标系、基准、特征定义/参数和造型历史信息。非几何信息主要指产品加工工艺信息,包括粗糙度、形位公筹、尺寸公差 、注释文本及技术要求等信息。过滤掉造型过程信息和特征参数信息等,并不影响产品模型浏览与批注,但三维模型数据大大降低。
(2)三角面片合并与简化。三角化简化了三维模型参数,使之为离散的三维模型网格,将精确的三维模型利用三维近似的表示有利于三维模型轻量化。通过调节三角化参数,让三维模型轻量化程度得到控制,从而降低计算机内存。参考模型表面特征通过模型零件的连接处和配合处特征进行合并,降低模型表面复杂度等手段来增加模型轻量化程度。
(3)三维贴图。三维贴图是一种功能定制的模型设计方法,在装配仿真场景中将高逼真度的图片素材附加到三维环境中,同时能随着三维场景进行收缩和平移。三维图片极大地提高了模型的真实度,简化了建模步骤和模型体积,有效提高了模型轻量化程度。
(4)网格模型简化和压缩。经过前几步的处理,相比原始的CAD模型三角化网格模型数据量已经大大减小。为了尝试更高的压缩比,研究采用现今很成熟的压缩算法对模型进行压缩,模型拓扑重构得到了更小的轻量化模型。
(5)细节层次轻量化渲染。在上述几步的基础上,采用细节层次轻量化(Level of Details, LOD)技术进行模型轻量化渲染。LOD模型在不影响画面视觉效果的条件下,对同一物体建立几个不同逼近精度几何模型。根据物体与视点的距离来选择显示不同细节层次的模型,从而加快系统图形处理和渲染的速度。保证在视点靠近物体时对物体进行精细绘制,在远离物体时对物体进行粗略绘制,以此达到快速交互模型目的,并保证在不降低用户观察效果的情况下,大大减少渲染负载[5-6]。
模型三维轻量化流程如图3所示。引擎轻量化技术不仅适用于大型复杂电厂三维模型展示,还可以广泛应用于数字化工厂建设其他各个领域,包括虚拟漫游、虚拟装配和虚拟拆卸等。
3.4 引擎网络化
OpenGL是按照客户机—服务器模式设计的。设计将整个系统分为两部分,一部分是客户端,它负责发送OpenGL命令。一部分是服务端,它负责接收OpenGL命令并执行相应的操作。比如编写的OpenGL命令程序就是一个客户端,而计算机图形硬件制造商提供的OpenGL的实现就是服务器。
对于单个计算机的运行环境来说,可以将CPU、内存等硬件,以及OpenGL程序看做客户端,而将OpenGL驱动程序、显示卡等看做服务端,如图4所示。
对于网络化的环境来说,服务端和客户端并不在一台计算机上,如图5所示。OpenGL驱动程序、显示卡等服务端要素安装在独立的图形服务器上。用户通过客户端程序(也可以是web浏览器、移动设备)、网络来访问图形服务器获取相关的模型渲染数据。
网络化技术要求解决以下问题。(1)客户端的渲染数据,服务端通过OpenGL每一帧渲染都有帧缓冲区,每一帧渲染结果都会存入帧缓冲区中(比如像素深度、颜色等)。服务端通过网络把需要的数据发送给客户端显示。(2)渲染数据的实时高效的传输,保持渲染帧率是一个重要指标。这需要最优化的数据网络传输方式减少不必要的过渡,同时通过设计压缩算法数据降低带宽的需求量。(3)处理高并发的问题,传统的OpenGl的程序的客户端和服务端在一台机器上,是一对一的关系,而网络化以后服务器和客户端是多对一的关系。当客户端并发访问的数量增加的时候,要正对图形服务器做好负载均衡,保证每个客户端有足够的服务资源可以调用。
3 引擎测试和应用
在三维模型展示基础上,开发了一系列三维模型浏览和操作功能,对引擎性能进行了测试。测试中采用华龙一号项目核电厂三维模型,文件容量10G,含百万个零部件,亿级面片,在主流电脑(I7 6800CPU+8G内存+2G显存显卡电脑)上进行显示,见下图6和图7所示。经测试,整个模型加载时间2min,在线浏览和虚拟漫游均十分流畅,满足数字化核电厂信息化模型建设要求。此外,系统具有很好的兼容性,可以兼容“dgn、rvm、stp”和“igs”等多种通用格式的三维模型数据。
5 结语
本文所述自主研发的数字化核电厂三维轻量化图形引擎,包括多个模块及子系统,满足核电厂信息化模型可视化展示和应用。根据核电厂信息化模型特点,着重对模型渲染技术、引擎轻量化技术和引擎网络化技术进行了深入的研究和探索。引擎经过了华龙一号核電厂全厂级三维模型加载测试验证,测试结果证明,本文所述自主研发的三维轻量化引擎,能够满足大型复杂核电厂百万级零部件模型展示和操作等处理需求。可通过浏览器在线流畅浏览三维模型,支持虚拟漫游、剖切等三维操作,无需安装任何浏览器插件和控件或本地程序;此外,引擎具备较强的兼容性,支持“dgn、rvm、stp”和“igs”等多种主流三维模型格式,满足数字化核电厂建设要求。不过,随着核电厂信息化模型建设不断推进及其深入应用,仍需根据业务要求持续推进引擎功能完善和性能优化,继续提升引擎的实用性,支持更高精度、更加复杂、大型的模型高清晰、高效的三维可视化应用。
参考文献
[1] 葛磊.虚拟现实场景交互系统的设计与实现[D].北京:北京邮电大学,2018.
[2] 仝牧.服务设计理念下的复杂信息系统界面设计方法探究[D].南京:东南大学,2019.
[3] 王晓庆.基于VC++的约束TIN算法设计与实现[J].矿山测量,2017,45(1):29-31.
[4] 郑海龙.基于并行工程理论的HY核电项目设计质量改进研究[D].济南:山东大学,2020.
[5] 寇小勇.基于WRF模式的大规模云数据三维模拟算法研究[D].南京:南京信息工程大学,2020.
[6] 温蕊.三维工程模型检索及智能设计技术研究[D].南京:南京理工大学,2018.