蔡正皓 趙玉娟



摘? 要:核電廠信息化模型建設的關鍵在于采用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.