朱昕宇 侯玨 盛士能
摘要:為了解決傳統虛擬仿真平臺部署成本高、教學適配性差和可擴展性弱等問題,提出了一種基于微服務和前端渲染技術的新型虛擬仿真平臺架構——微仿真架構。該架構通過采用前端渲染引擎,將圖像渲染和物理模擬任務轉移到客戶端完成,降低了服務器負擔和部署成本。通過微服務架構設計后臺系統,提高了系統的可擴展性。提出針對教學重難點設計微仿真場景的方法,解決虛擬仿真場景與教學適配性不高的問題。基于上述架構和方法設計的新型虛擬仿真平臺,有望顯著降低部署成本、提升教學適配性和可擴展性。
關鍵詞:虛擬仿真平臺;架構設計;前端渲染;教學模式;微服務
中圖分類號:TP311.5 文獻標識碼:A文章編號:1009-3044(2023)29-0067-04
0 引言
虛擬仿真技術在教育領域中的應用日益受到關注,極大地提升了師生在教學和實驗上的體驗。但是目前大量虛擬仿真軟件存在著“部署價格高”“運行配置要求高”“教學適配性差”和“可擴展性弱”等問題,導致虛擬仿真系統在教學中的作用無法得到充分發揮。從技術角度考慮,如何借助微服務、云存儲等新架構、新技術,改進傳統虛擬仿真平臺的架構體系,從而減小系統的部署和開發成本,提高虛擬仿真平臺與教學的適配度,進一步發揮虛擬仿真系統的作用,已成為當前亟須解決的問題。
1 傳統虛擬仿真平臺的主要實現方式
目前的虛擬仿真軟件按照實現方式可分為兩類,基于成熟工業軟件二次開發的虛擬仿真產品和基于成熟3D引擎和物理引擎開發的虛擬仿真產品。
1.1 基于成熟工業軟件二次開發的虛擬仿真平臺
這類虛擬仿真平臺的特點是基于成熟的工業軟件進行二次而來。例如李祺基于Simulink開發了一系列的控制算法實驗平臺[1];馬合木提基于Proteus和Keil5,使用Python進行二次開發,設計并開發了用于單片機教學的虛擬仿真實驗平臺[2];王龍庭等基于LabVIEW的二次開發設計了液壓控制系統的虛擬仿真實驗平臺[3]。江蘇大學基于ABAQUS、CAD、Hyper- V等軟件,開發了車輛工程虛擬仿真實驗教學中心[4]。
基于成熟工業軟件開發虛擬仿真平臺的優勢在于其穩定性和可靠性。這些工業軟件經過多年的實踐應用和全面測試,已被廣泛驗證和認可。但是,這類虛擬仿真平臺目前存在如下一些問題:
1) 部署價格較高。這些平臺的私有化部署通常涉及購買工業軟件的授權和高性能的服務器,這對于大部分學校來說都是一筆不小的投資。而且隨著中美貿易戰的加劇,部分工業軟件還存在著禁用風險[5]。
2) 教學適配性較差。工業軟件的功能和架構是基于廣泛的工業應用而設計的,教師難以根據自身的學情和教學目標進行定制,軟件公司幾乎不可能為了滿足個別教育機構或教師的特定需求來修改軟件的功能。
3) 并發訪問能力弱。為了實現較好的課堂效果,虛擬仿真平臺必須具有支持多人并發訪問的能力[6]。但是上述工業軟件的設計初衷通常是為單用戶提供服務,依賴于服務端算力進行仿真計算,并不適合多人并發訪問。
由此可見,基于成熟工業軟件開發的虛擬仿真平臺具有高穩定性和可靠性的優勢,但存在部署價格高、教學適配性差和并發訪問能力弱等問題。其中部署價格高和教學適配性差是由工業軟件的產品特點導致的,基本難以解決。并發訪問能力弱的問題可以通過配備高性能的服務器、部署多個實例、在客戶端上安裝配套的應用程序等方式解決,但均會不同程度地增加平臺的部署成本和維護難度。
1.2 基于成熟3D 引擎開發的虛擬仿真平臺
基于成熟的3D引擎開發虛擬仿真平臺是目前另一種常見的技術路線。這類平臺通常利用已經成熟和廣泛應用的3D引擎(如Unity或Unreal) 來構建虛擬仿真環境[7]。例如中北大學的于本知基于Unity3D和3DMax開發了類流體光聲檢測虛擬實驗系統[8]。湖北工業大學的黃濤基于Unity3D和3DMax開發了多個材料力學相關的虛擬仿真實驗,取得了較好的效果[9]。
相較于基于工業軟件開發的虛擬仿真平臺,基于引擎直接開發的虛擬仿真平臺其優勢在于具有強大的視覺效果和逼真的物理模擬能力,賦予開發人員極大的自由度[10]。但由于這些3D引擎的設計初衷是為了服務于游戲和影視動畫,這就導致基于它們開發的虛擬仿真平臺也存在一些問題:
1) 開發難度大。使用3D引擎和物理引擎進行開發需要一定的技術儲備和學習成本。開發人員需要掌握相關的編程語言和工具,并了解引擎的特性和功能。這增加了開發周期和人力成本。
2) 部署價格較高。盡管不需要購買工業軟件的授權,但是基于3D引擎開發的虛擬仿真平臺通常需要較強的圖形處理能力,帶有圖形處理器的服務器通常價格不菲。由于依賴高性能的圖像處理器,使得基于3D引擎開發的應用程序基本無法在移動端和網頁端等低性能設備上使用。
3) 配置要求高。當虛擬仿真應用部署在服務器端時,客戶端通常采用視頻流的方式進行交互,這對網絡帶寬提出了較高的要求。這種模式的本質是服務端渲染,客戶端顯示,因此在多人并發訪問時,服務器負載會急劇增加。
4) 應用程序體積較大。基于游戲引擎開發的虛擬仿真平臺可能存在應用程序臃腫的問題。這是因為游戲引擎通常包含了大量冗余功能和工具,這些功能對于虛擬仿真應用來說并不一定需要。這些冗余功能會增加應用程序的體積和復雜性,導致資源使用效率下降。
基于成熟的3D引擎和物理引擎開發的虛擬仿真平臺在視覺效果、物理模擬能力和并發訪問方面具備優勢,但也需要考慮開發難度大、部署價格較高以及對客戶端配置的要求較高等問題。在設計和部署虛擬仿真平臺時,需要綜合考慮這些因素,以平衡性能需求和可行性。
2 新型虛擬仿真平臺架構
無論是基于成熟工業軟件二次開發還是基于成熟3D引擎和物理引擎開發目前都存在著“部署價格高”“教學設配性差”“可擴展性弱”等問題。針對上述問題,本文提出一個全新的解決方案:以微服務架構為基礎,利用前端渲染技術構建一種全新的虛擬仿真平臺架構——微仿真架構。微仿真架構的特性主要體現在三個關鍵方面:
1) 采用了前端渲染引擎和物理引擎;
2) 基于微服務架構設計的后臺系統;
3) 針對教學重難點設計的微仿真場景。
通過上述三大設計原則,能夠有效地解決現存虛擬仿真平臺“部署成本高昂”“教學適應性不強”以及“可擴展性不足”的問題。
2.1 基于前端渲染模式的客戶端架構設計
之前兩類虛擬仿真平臺普遍具有“部署成本高”和“并發訪問能力弱”的問題,除了昂貴的工業軟件版權費外,另一個主要原因是兩者的服務端承擔了大量的渲染和計算任務,如圖1(a) 所示。如果能將渲染和仿真計算任務轉移到前端完成,如圖1(b) 所示,服務端只負責數據存儲和模型管理,就能極大程度地降低服務端壓力,從而降低部署成本。
目前較成熟的前端渲染引擎有Three.js、Matter.js 和Babylon等,這些引擎的本質是一類基于JavaScript 的庫,利用WebGL技術和CANVAS技術能夠在瀏覽器環境下快速生成并展示2D 和3D 圖形。與Unity3D、Unreal等專業級別的游戲渲染引擎相比,前端渲染引擎在渲染效果上稍有遜色,但是對于以教學為主要目標的虛擬仿真平臺來說,更看重的應該是平臺的教學演示和仿真能力,渲染的視覺效果并不應該成為技術選型上的主要考慮因素。且目前的前端渲染引擎已經具備了非常強大的功能,包括但不限于力學模擬、碰撞檢測、貼圖等。表1對比了常見前端渲染引擎與Unity3D和Unreal4在各方面的能力。
如表1所示,目前的前端渲染引擎足以滿足大部分的虛擬仿真需求。即使是其中綜合能力較差的Matter.js也能輕松地實現一些簡單機械結構的仿真。基于上述情況,以專注于機械結構的虛擬仿真平臺為例,設計微仿真架構的前端架構如圖2所示。用戶從電腦端或移動端向服務端發送請求,服務端返回模型數據和配置參數等信息。前端由路由管理、請求處理、狀態管理三大基礎模塊構成。標準組件庫包含導航欄、按鈕、表單等常用頁面組件。前端物理引擎根據后端返回的模型和參數動態生成仿真結果,并依托于CANVAS容器渲染在瀏覽器上。
2.2 基于微服務架構的服務端架構設計
虛擬仿真平臺的主要功能是服務于教學,仿真演示和仿真實驗項目是虛擬仿真平臺的主要功能,但是目前虛擬仿真平臺存在著實驗項目和仿真演示內容固化的問題。教師無法結合自身的教學特點和學情特點來構建適合自己課堂的虛擬仿真實驗內容。除了教師的個人意愿外,技術層面的主要問題是傳統的基于工業軟件和基于成熟3D引擎開發的虛擬仿真系統通常是單體架構或者分層架構,這類架構在設計上難以做到足夠的靈活性和可擴展性。針對傳統虛擬仿真平臺在可擴展性和靈活性方面的瓶頸,基于微服務架構的設計方法來打造微仿真架構的后端,可有效解決該問題。
目前常見的軟件架構的主要特征如表2所示。通過對不同架構進行比較分析,微服務架構在如下兩個特征上能較好地滿足微仿真架構的設計需求:
1) 具有較好的靈活性。基于微服務架構,可以將平臺功能劃分為多個獨立的小型服務,每個服務專注于特定的功能或業務領域。這些服務可以獨立地開發、測試和部署。例如當需要添加一個新的物理引擎時(如電學模擬、力學模擬等),由于微服務架構下每個服務都是獨立的,可以相對容易地擴展或替換相應的服務,而無須對整個平臺進行大規模改動。這種靈活性和可插拔性使得微服務架構非常適合構建具有不同物理引擎的仿真平臺。
2) 支持多語言開發。在微服務架構中,每個服務可以使用適合自身需求和目標的編程語言進行開發。這意味著開發者可以根據需要選擇并集成不同語言版本的仿真計算庫,從而充分利用各種成熟的仿真計算庫和工具。也更利于其他老師和學生根據自身的條件和需求參與到平臺的共建中,貢獻新的功能模塊或服務,從而有效解決平臺內容與教學環節契合度不高、持續發展動力不足的問題。
基于上述情況,以專注于機械結構的虛擬仿真平臺為例,設計微仿真架構的后端架構如圖3所示。在該架構中,API網關服務充當統一接收前端請求并完成請求轉發的角色。整個后端由多個服務組成,其中日志服務、用戶管理服務和消息隊列作為基礎服務提供支持。自定義腳本管理服務、標準機械結構仿真服務和自定義機械結構仿真服務則為核心功能服務。自定義腳本管理服務負責管理用戶提交的自定義仿真腳本;標準機械結構仿真服務是針對常見的機械結構進行仿真分析的服務;自定義機械結構仿真服務允許用戶上傳和定義自己的機械結構模型。
2.3 微場景的設計方法
為了增強虛擬仿真平臺與教學的連接,引入“微場景”的概念。“微場景”是指那些功能小而精的虛擬仿真場景,旨在輔助解決教學中的重難點問題。
以“平面連桿機構的設計”為例,針對這一重難點設計如圖4所示的微場景。該微場景通過前端渲染技術Matter.Js實現,具有簡潔而有效的功能。在該場景中,學生可以調整桿件的長度并生成仿真動畫,通過互動操作獲得直觀的結果和反饋,驗證自己的設計是否滿足任務工單給出的設計需求,掌握如何確定合適的連桿長度這一知識點,從而有效解決“平面連桿機構的設計”這一教學重難點。
微場景的優勢在于它的功能靈活性和易于修改部署。由于采用前端渲染,場景功能可以直接使用腳本編寫,使得修改和定制化調整功能非常方便,教師可以根據學情進行個性化調整。且微場景通常圍繞一個教學重難點展開,每個場景的內容有限,因此所需的計算量相對較小,從而實驗所需的硬件配置大幅度降低。
3 總結
1) 利用前端渲染引擎完成虛擬仿真平臺的渲染和計算任務是可行的。采用該方案可以顯著降低系統的部署成本,并提升并發能力。
2) 基于微服務架構設計虛擬仿真平臺的后臺系統,可以顯著提升虛擬仿真平臺的可擴展性和靈活性。
3) 針對教學重難點來設計微場景,可以提升虛擬仿真平臺與教學的適配性。
4) 未來的研究可以進一步完善微仿真架構的功能,并針對特定課程建設基于微仿真架構的虛擬仿真平臺。
參考文獻:
[1] 李祺,聶為之,房朝暉,等.基于虛擬仿真技術的線上項目式
教學探索[J].實驗技術與管理,2022,39(1):199-203.
[2] 帕孜來·馬合木提.虛擬仿真平臺在單片機教學改革中的應
用[J].中國現代教育裝備,2023(13):25-27.
[3] 王龍庭,張彥廷,石永軍,等.液壓機械控制虛擬仿真實驗教
學系統設計[J].液壓氣動與密封,2023,43(6):34-38,45.
[4] 侯慧,朱韶華,張清勇,等.國內外高等學校虛擬仿真實驗發
展綜述[J].電氣電子教學學報,2022,44(5):143-147.
[5] 代小龍.中國工業軟件發展現狀與趨勢分析[J].軟件導刊,
2022,21(10):31-35.
[6] 亞春林.高校虛擬仿真實驗教學的思考[J].現代職業教育,
2022(25):40-42.
[7] 曾琎.基于虛擬仿真系統的產品創新設計研究[D].武漢:武
漢理工大學,2009.
[8] 于本知,韓建寧,趙欣灑,等.基于Unity3D引擎的類流體光聲
檢測虛擬實驗系統的設計與開發[J].中北大學學報(自然科
學版),2022,43(2):186-192.
[9] 黃濤,胡佳恒,付佩.虛擬仿真實驗在材料力學課程教學改革
中的應用研究[J].實驗科學與技術,2022,20(1):34-38,44.
[10] 曾思鈺.基于Unity3D的物聯網實驗仿真系統的設計與實
現[D].杭州:浙江大學,2021.
【通聯編輯:謝媛媛】