汪鄧涵 黃秋野
(南京航空航天大學(xué) 江蘇省南京市 211100)
目前在相關(guān)的虛擬裝配教育模擬仿真虛擬現(xiàn)實應(yīng)用上,從制作流程的角度上來說,一類是立足于視覺層面,過于表現(xiàn)的畫面使得整體系統(tǒng)偏向了娛樂化,這樣做的優(yōu)勢在于視覺觀賞的提高,能夠有助于提高用戶對應(yīng)用的粘性程度,其缺陷在于裝配模擬的嚴(yán)肅性內(nèi)容無意義。另一類則是立足物理仿真層面,在仿真的要素上著重于物理模型上的考究,精于嚴(yán)肅性內(nèi)容,這使得視覺效果上的用戶觀感體驗被忽視。本文將會從關(guān)鍵技術(shù)流程的角度去平衡嚴(yán)肅性內(nèi)容與用戶體驗,強(qiáng)調(diào)采用工業(yè)設(shè)計模型的標(biāo)準(zhǔn)去應(yīng)用至虛擬現(xiàn)實裝配平臺中,在保證以工業(yè)模型的標(biāo)準(zhǔn)提升仿真性的同時,提升虛擬現(xiàn)實用戶體驗的舒適性。
針對上述兩類的制作類別,本文會將采取相應(yīng)的關(guān)鍵技術(shù)策略,提供合理的工作流程去優(yōu)化并實現(xiàn)基于VR的無人機(jī)虛擬裝配平臺。
無人機(jī)虛擬裝配平臺需要由視覺與功能兩部分的設(shè)計構(gòu)成。
關(guān)于視覺方面包括設(shè)計并制作無人機(jī)部件模型和室內(nèi)場景模型,在功能方面實現(xiàn)無人機(jī)部件組合與解構(gòu)交互、場景移動交互。根據(jù)工作機(jī)制的分析,Unity3D引擎主要實現(xiàn)仿真平臺中渲染與交互的部分,模型與材質(zhì)的部分則需要3Dmax、Quixel Mixer進(jìn)行構(gòu)建并且根據(jù)引擎機(jī)制對其進(jìn)行初模的構(gòu)建與優(yōu)化、貼圖的繪制與儲備。關(guān)于視覺流程優(yōu)化的設(shè)計上,面對如何在有效管理視效資源的情況下提升材質(zhì)以及模型真實度是主要問題之一,本文需要在CAD建模軟件里設(shè)定好參考物,衡量出模型的真實比例,為虛擬環(huán)境提供真實尺寸參考。制作低精度模型與高精度模型,將高精度模型的細(xì)節(jié)映射至低精度模型,減少面數(shù)的渲染級別。最后拓展UV坐標(biāo)使得貼圖與材質(zhì)能夠?qū)φ掌ヅ洌瑸檎鎸嵅馁|(zhì)提供位置基礎(chǔ)。
關(guān)于功能方面,在虛擬裝配中模型作為功能映射的主要載體,基于此提升有效的交互體驗是主要目的。在常規(guī)流程中設(shè)立好交互碰撞方面的重要程序,直至生成可以在各類虛擬現(xiàn)實頭顯下運(yùn)行的應(yīng)用程序。在優(yōu)化流程設(shè)計上,模型對象對系統(tǒng)內(nèi)存占據(jù)一定的比重。那么基于多平臺虛擬現(xiàn)實的環(huán)境,是避免不了的內(nèi)存限制,在無人機(jī)裝配中,零件模型數(shù)量多且可用性強(qiáng),所帶來的交互與面數(shù)會帶來大量的內(nèi)存占取,那么會出現(xiàn)卡頓、數(shù)據(jù)丟失等問題。在實例觀察中,所有的模型對象進(jìn)行了加載,實際進(jìn)行交互的模型對象占比較少,這樣導(dǎo)致其它無交互模型對象是無效且占據(jù)一定的內(nèi)存,這造成了硬件渲染上的浪費。基于此,需要對可用性與無用性物體之間做出類別分析,在用戶的可操作范圍內(nèi)去加載與卸載模型對象,構(gòu)建出合理的緩存池框架(圖1)。最終以適當(dāng)優(yōu)化流程完成整套裝配平臺的構(gòu)建。

圖1:基于緩存池的優(yōu)化
以上便是基于VR的無人機(jī)模擬裝配平臺的優(yōu)化流程總概。
以工業(yè)模型標(biāo)準(zhǔn)作為虛擬裝配模型的參考核心,其特色就是視覺仿真的一致性,能夠使得裝配部件、裝配拼裝過程以及使用的工具與實際相似。模型的建立是Unity3D引擎交互的首要工作,模型的質(zhì)量影響到用戶在虛擬現(xiàn)實里的視覺體驗,但會對硬件的內(nèi)存消耗帶來負(fù)面影響[5-6]。因此,在模型制作中要重點探究模型間的視覺比重與面數(shù)優(yōu)化。
工業(yè)模型是屬于原型設(shè)備的物理模型,可以呈現(xiàn)低成本且合理的方案。應(yīng)用在虛擬裝配中的工業(yè)模型標(biāo)準(zhǔn)需要擁有以下三點:
(1)工業(yè)模型是根據(jù)工業(yè)產(chǎn)品的原型進(jìn)行縮小或者放大,在外觀以及尺寸上與最終的產(chǎn)品原型保持相同比例。
(2)工業(yè)模型要滿足現(xiàn)實原型的技術(shù)指標(biāo),從而達(dá)成功能性。
(3)擁有美學(xué)指標(biāo)與文化指標(biāo),可以對產(chǎn)品原型本體的設(shè)計實踐產(chǎn)生思維導(dǎo)向,發(fā)揮起象征性作用。
在無人機(jī)模型構(gòu)建中,需要體現(xiàn)裝配部件的多樣性與機(jī)殼框架的統(tǒng)一性,使得能夠與原型進(jìn)行參照,工業(yè)模型構(gòu)建方式是其關(guān)鍵技術(shù)的基礎(chǔ)。與傳統(tǒng)布線構(gòu)成不同,技術(shù)重心更多偏向于輔助修改器與面片的聯(lián)立關(guān)系。
首先運(yùn)用sketch up劃分無人機(jī)外殼、無人機(jī)部件兩個主要拼裝部件的部分,然后采用3Dsmax在細(xì)節(jié)上進(jìn)行添加,并取其高模的細(xì)節(jié)法線貼圖[7],而對平整且不需要細(xì)節(jié)的模型面進(jìn)行減面處理,以最大限度優(yōu)化來避免模型加載時暫用系統(tǒng)內(nèi)存,最后運(yùn)用骨骼動畫將各部件進(jìn)行約束連接,使其產(chǎn)生關(guān)聯(lián),提高模型在系統(tǒng)里的真實性。
針對無人機(jī)模型制作所對應(yīng)工業(yè)類型的建模方式,屬于硬表面的模型范疇,以方體與圓柱為基礎(chǔ)模型,再以多邊形建模為制作手法,對基礎(chǔ)模型進(jìn)行細(xì)分、束邊和渦輪平滑等功能的建模,從而得到與真實部件對應(yīng)的細(xì)節(jié),并獲得高精度模型(High Polygon),然后對非主要部件模型在面數(shù)上做簡化等優(yōu)化處理,避免占用過多的運(yùn)行空間,最后獲得Unity3D中所需要的FBX格式三維模型文件。該模型滿足尺寸、外觀和交互等方面的需求。
3.1.1 基于NURBS樣條線的無人機(jī)外殼以及機(jī)槳工業(yè)建模
無人機(jī)的外殼現(xiàn)實作用在于保護(hù)組裝部件與減少空氣阻力為目的,機(jī)槳則是作為無人機(jī)的動力輔助部件,其模型設(shè)計都為符合流體力學(xué)的流體型曲面形態(tài),適合采用NURBS樣條線進(jìn)行平滑處理建模。這種方法是基于樣條線之間,在初期通過NURBS樣條線對縫合,在組合處將面片依據(jù)無人機(jī)的外觀尺寸和部件參考尺寸構(gòu)成大致的曲面效果(圖2),而后增加平滑組提升面之間的過渡感,曲面之間的轉(zhuǎn)折關(guān)系則劃分為不同的平滑層級。

圖2:無人機(jī)外殼的曲面效果
3.1.2 無人機(jī)裝配部件工業(yè)建模
無人機(jī)裝配部件則分為骨架、電子元件、電纜線、掛載云臺、電池以及雷達(dá)(圖3),建模方式多在基礎(chǔ)多邊形上進(jìn)行邊角上的調(diào)整,因為其中骨架、電子元件、掛載云臺、電池的切角面程度較高,所以基礎(chǔ)模型多采用切角長方體、立方體等標(biāo)準(zhǔn)幾何體組件而成,利用渦輪平滑修改器進(jìn)行細(xì)節(jié)處理,利用邊緣去控制細(xì)節(jié)的平滑程度,這種方式的優(yōu)勢在于有利把控面的增減,為后期導(dǎo)入引擎增加更多優(yōu)化的可能性;電纜線則采用樣條線為基礎(chǔ)[11],樣條線的編輯特性能夠適配電纜線本身的多復(fù)雜彎曲結(jié)構(gòu),通過平移的方式對樣條線頂點形成的線路形態(tài),而后增加實例化修改器完成線纜模型形態(tài)。這種方式建立的電纜線模型其流暢性、受力性更為真實;雷達(dá)在六軸無人機(jī)中多為圓盤樣式,只需通過擠壓、拉伸完成對基礎(chǔ)模型的形變。

圖3:無人機(jī)外殼、機(jī)槳及其部件
三維場景是根據(jù)無人機(jī)課程中的訓(xùn)練需求所設(shè)計,目前針對無人機(jī)仿真的需求有拆裝模擬、故障診斷模擬以及飛行模擬這三種訓(xùn)練類型[3-4],為此遵循需求將關(guān)卡劃分為拼裝訓(xùn)練關(guān)卡與飛行訓(xùn)練關(guān)卡,根據(jù)關(guān)卡特性需要設(shè)計與構(gòu)建出相關(guān)的三維場景。
3.2.1 人景比例的判定
在虛擬現(xiàn)實環(huán)境中,因為仿真物體與現(xiàn)實物體的尺寸成正比[10],所以在制作場景初模時應(yīng)注意模型基礎(chǔ)單位的調(diào)校與參考物的設(shè)定。已知Unity3D引擎的基礎(chǔ)單位為米,在3DMax的單位自定義應(yīng)設(shè)定與其相同,為了保證場景在尺寸上的合理性,已知虛擬頭顯是根據(jù)世界坐標(biāo)為基準(zhǔn),需在放置參考物時考慮用戶對象為成年男性與女性18-44年齡階段[16],采取其平均身高(圖4),以用戶為中心進(jìn)行測試場景在用戶體驗中移動、觸發(fā)等交互方面的合理性。

圖4:男女平均身高的人體參考物
3.2.2 場景建模與優(yōu)化
以裝配關(guān)卡場景為例,根據(jù)上述比例判定所設(shè)計得出的場景尺寸數(shù)據(jù)為320cm(長)*260cm(寬)*200cm(高),結(jié)合基礎(chǔ)多邊形對三維場景進(jìn)行方位上的搭建,于是針對多邊形上的點、線、面進(jìn)行位移上的編輯,通過對模型線段的增減為門等占有進(jìn)出口增加編輯空間,在對模型造型線段的編輯中要遵守布線范式,面片布置上統(tǒng)一為四邊面,便利于后期對模型拉伸、擠出、倒角等多功能操作。模型的在主要進(jìn)出口路徑上增加線段與面并配合渦輪平滑修改器產(chǎn)生更多的模型細(xì)節(jié),反之次要路徑區(qū)域則直接采用簡易的基礎(chǔ)多邊形,從而減少不必要的渲染[8]。
由于引擎可以識別MAX模型的多維子材質(zhì),可以減少繪制貼圖的工作環(huán)節(jié),在建模流程中需要對面片進(jìn)行材質(zhì)ID的區(qū)分。根據(jù)案例,無人機(jī)部件模型可以附加成同一個多邊形模型組,根據(jù)固有色之間的差異對不同部件材質(zhì)進(jìn)行附著材質(zhì)球(圖5)。針對紋理位置有精度要求的模型,例如電池、場景中的指示單位等,這就需要采用UV(Unwarp UVW)對精度位置需求的模型貼圖方位進(jìn)行拆分,并將其UV網(wǎng)格進(jìn)行平整化處理,保證紋理能夠?qū)R,避免出現(xiàn)紋理與模型表面產(chǎn)生拉長、錯位、擠壓與變形的現(xiàn)象。

圖5:多維子材質(zhì)
在無人機(jī)虛擬裝配的開發(fā)中,需要對光照材質(zhì)、面片優(yōu)化和動畫互動等關(guān)鍵點進(jìn)行技術(shù)整合,然后統(tǒng)一導(dǎo)入到引擎進(jìn)行整合輸出,這對引擎中材質(zhì)、光照與物理控制腳本的運(yùn)行機(jī)制有著解構(gòu)的需求。以此作為參考,在引擎中合理利用工作機(jī)制得到關(guān)鍵技術(shù)在流程中的應(yīng)用。
引擎中的可視化著色器(Shadergraph)不僅包含了物理實時渲染的系統(tǒng),還可以對渲染進(jìn)行可視化編程的操作,在創(chuàng)立多樣化參數(shù)操作的基礎(chǔ)上,有利于精細(xì)化材質(zhì)效果,從而對材質(zhì)上的細(xì)節(jié)進(jìn)行有效的把控。當(dāng)前引擎所配置的基礎(chǔ)材質(zhì)球(StandardShader)對物體視覺表現(xiàn)有所限制,只能對四個重要參數(shù)進(jìn)行調(diào)節(jié),無法滿足復(fù)雜且多樣的場景視覺需求,可見可視化著色器在關(guān)鍵技術(shù)中的重要性。
引擎的光照系統(tǒng)采用的是全局光照(Global Illumination),可以模擬光的反彈和互動行為的算法。但在工作流程中精細(xì)的光照仿真模擬需要消耗大量的硬件內(nèi)存[1],所以需要采用烘焙技術(shù)對光照系統(tǒng)內(nèi)的反射球、光照探針、局域光以及光源全局技術(shù)共同構(gòu)成為光照貼圖。在無人機(jī)裝配環(huán)境下多物體的光照會帶來多余的系統(tǒng)負(fù)荷,為了保證用戶在視覺體驗與交互上幀率的高舒適度,盡量避免硬件資源對動態(tài)結(jié)算所帶來的負(fù)載,于是需要對光源信息進(jìn)行整合并且生成到靜態(tài)貼圖中是關(guān)鍵技術(shù)步驟之一(圖6)。

圖6:場景光照信息優(yōu)化前后幀數(shù)對比
在仿真平臺中體驗的要素不僅是在視覺交互上,還應(yīng)在基礎(chǔ)的物理計算上,例如重力、碰撞等物質(zhì)在物理世界中產(chǎn)生的作用。因此,引擎通過剛體(Rigidbody)為基礎(chǔ)并對物體進(jìn)行物理仿真的碰撞計算,根據(jù)碰撞范圍從而判定是否進(jìn)行做出合理的交互指令,這樣保證了用戶的代入感,還增加了平臺應(yīng)用在仿真方面的可靠性。
為了將視覺資源更好的過渡到引擎的功能交互制作中,應(yīng)將模型的坐標(biāo)軸重置于中心點,有位移需求的無人機(jī)模型則需要將坐標(biāo)軸重置到物體坐標(biāo)的最底端,同時坐標(biāo)軸的垂直方向為Y軸向上;檢查面片之間的法線向量是否正確,且以合理的命名導(dǎo)出模型與貼圖;核查平滑組開啟狀態(tài),修改導(dǎo)出單位的基本設(shè)置,最后結(jié)合到引擎內(nèi)部進(jìn)行深入。
場景中良好的光照渲染不僅能夠提升整體畫面的可視布局,而且從視覺工效學(xué)的角度上可以對用戶給予良好的體驗[15]。由于整體場景偏暗、封閉且空曠,容易導(dǎo)致用戶心理上的緊張等情緒,所以要利用平行光、反射光、點光和聚光的機(jī)制,合理對場景增加多方面的光照細(xì)節(jié),為此可以通過三個步驟去構(gòu)建燈光的布局:
(1)在場景內(nèi)放置平行光,平行光的z軸角度呈30°,能夠投射出場景中陰影的最大面積,作為整體光照的主光源,色調(diào)則呈為暖色,因為考慮到場景構(gòu)造多為封閉且光照入口空間少,所以光照強(qiáng)度為60cd。
(2)在地面指示燈上放置包含冷色域的點光源,其光照強(qiáng)度為8cd,在大門入口與外界交界處放置暖色域的聚光源,其光照強(qiáng)度為5cd。通過色調(diào)的對比,不僅完善了光照空間中的色彩配比,而且使得空間具有視覺導(dǎo)向性。
(3)放置反射球,將反射球的反射范圍包裹住場景,使得反射球獲取場景光照與材質(zhì)信息,然后開啟實時渲染(Realtime)使得周圍環(huán)境能夠接受到反射球所獲取的信息(圖7),確保場景擁有真實的環(huán)境光照細(xì)節(jié)。

圖7:無反射球(前)反射球渲染(后)
模型在引擎中表現(xiàn)各類質(zhì)感,需要在之前的紋理貼圖基礎(chǔ)上與引擎內(nèi)著色機(jī)制結(jié)合反射、金屬度、平滑值、法線強(qiáng)度等材質(zhì)屬性去構(gòu)成完整的材質(zhì)表現(xiàn),如圖10。根據(jù)案例場景,對場景主要材質(zhì)的表現(xiàn)進(jìn)行解析,為此總結(jié)出兩種配置方法:
(1)混凝土地膠材質(zhì)作為場景中重要的組成部分,設(shè)定平滑度值為0.7f(1.0f為鏡面光滑效果),金屬度為0.1f(1.0f為鏡面反射效果),而后將調(diào)整法線的凹凸程度至6.0f,通過將遮擋貼圖范圍調(diào)整至0.8f(1.0f為同個材質(zhì)球的平滑度與金屬度之間界限分明),地面引導(dǎo)的自發(fā)光屬性為1.0f。
(2)金屬材質(zhì)應(yīng)用于場景內(nèi)物件的常用材質(zhì),例如:門、桌子、扶手。由于場景室內(nèi)的環(huán)境光照較暗,所以要使得材質(zhì)表面反射程度降低,于是將金屬度調(diào)整為0.3f~0.5f,平滑度保持為0.2f。
經(jīng)在區(qū)間內(nèi)的調(diào)試,場景中不同材質(zhì)都保持著鮮明的特征。這使得場景保持良好的視覺比例,為后期視覺體驗提供保障(見表1)。

表1:各類材質(zhì)的參數(shù)設(shè)置
在無人機(jī)裝配環(huán)境中,由于無人機(jī)組件作為模型對象占據(jù)著一定程度的系統(tǒng)內(nèi)存。系統(tǒng)內(nèi)存消耗需要面對不僅是模型對象面片以及紋理貼圖上的優(yōu)化,還需要在管理上進(jìn)行優(yōu)化,在用戶進(jìn)行交互行為時,模型對象在環(huán)境中會產(chǎn)生加載且無法進(jìn)行回調(diào),在用戶進(jìn)行多次交互行為后系統(tǒng)內(nèi)存空間里的模型對象會產(chǎn)生疊加。在面對批量模型對象進(jìn)行多次交互行為的情況下,其中產(chǎn)生的系統(tǒng)內(nèi)存消耗成為了功能設(shè)計流程優(yōu)化的主要問題之一。模型對象作為主要解決對象,需要考慮三點問題:
(1)模型對象是做為無人機(jī)零部件裝配的重要交互模型,在用戶體驗中占據(jù)主要交互的對象;
(2)模型對象會被進(jìn)行頻繁的交互,多次對模型對象的加載會使得系統(tǒng)內(nèi)存產(chǎn)生消耗;
(3)模型對象的生成過程與銷毀過程,會產(chǎn)生大量的內(nèi)存碎片,這為內(nèi)存空間帶來一定的負(fù)擔(dān)。針對以上三點問題,采用緩存池算法[17]對模型對象的管理進(jìn)行優(yōu)化。
在無人機(jī)虛擬裝配平臺中,擁有大量的機(jī)械動畫,由于機(jī)械類動畫強(qiáng)調(diào)關(guān)節(jié)中的鏈動,支點的存在對整體模型的動向起到導(dǎo)向作用[12],整體具有簡易性、重復(fù)性的特點。結(jié)合本項目優(yōu)化的基本需求,與傳統(tǒng)的Animation編輯器中添加Frame不同的是通過C#腳本直接對模型本身進(jìn)行動畫設(shè)定,以無人機(jī)的旋翼動畫為例,首先提取出無人機(jī)在引擎內(nèi)的坐標(biāo)軸心,以垂直Y軸為基準(zhǔn),設(shè)定軸旋轉(zhuǎn)每秒運(yùn)行的角度,并創(chuàng)建一個可以進(jìn)行變量的平均速度,這使得在開發(fā)流程中可以隨時調(diào)控旋翼的旋轉(zhuǎn)速度,保證與現(xiàn)實的協(xié)同性,從而在動效上達(dá)到仿真的效果。隨著動畫優(yōu)化的推進(jìn),引擎內(nèi)部的資源管理得到了拓展,進(jìn)一步提高了流程化工作線的迭代成效。
無人機(jī)虛擬裝配平臺是個對關(guān)鍵技術(shù)要求較高的裝配工程,以全面高效的工作流為前提,把控好對模型、材質(zhì)和交互等制作層級,并時刻穿插優(yōu)化的重要性,全面做好視覺與物理仿真體驗的同時,為未來系統(tǒng)的迭代提供充足的空間。
這種構(gòu)架提出的虛擬現(xiàn)實制作流程,在體驗中具備以下四種優(yōu)勢:
(1)能夠?qū)o人機(jī)部件模型進(jìn)行拼裝交互,且可交互拼裝的模式自由度高,為未來提供更多的教學(xué)組裝方案。
(2)在虛擬場景模型中還原真實的紋理映射與材質(zhì)屬性的配比,從視覺上提升沉浸感。
(3)遵循合理的物理交互規(guī)律,符合用戶的現(xiàn)實習(xí)慣,維持了對場景物件的交互興趣。
(4)程序化動畫的建立,節(jié)省了模型的數(shù)據(jù)大小,為此提供了一套動畫批量化的程序方法,為平臺預(yù)留了數(shù)據(jù)空間,降低對硬件的適配門檻。
無人機(jī)虛擬裝配平臺關(guān)鍵技術(shù)流程能夠使在虛擬實景操作中獲得相關(guān)的實踐與理論知識,有效調(diào)動了用戶的積極性與參與性。