王 真
(中船第九設(shè)計研究院工程有限公司, 上海 200063)
船舶內(nèi)裝設(shè)計是船舶設(shè)計的重要組成部分,傳統(tǒng)的內(nèi)裝設(shè)計大多數(shù)通過圖紙和效果圖的形式來表達(dá),不夠直觀真實,無法實時動態(tài)地變更設(shè)計風(fēng)格以及設(shè)計屬性信息,如果建立實體樣板艙,則存在更新迭代快且成本高等缺點;另一方面,隨著內(nèi)裝項目的不斷積累,項目重要設(shè)計數(shù)據(jù)等寶貴資源往往以零散的碎片化形式保存,缺少一個滿足個性化需求的內(nèi)裝項目知識庫管理平臺。
本文以國內(nèi)極地科學(xué)考察破冰船內(nèi)裝工程項目為實例,基于虛擬現(xiàn)實(Virtual Reality, VR)技術(shù),開發(fā)船舶虛擬樣艙可視化體驗平臺,將艙室設(shè)計信息在3D虛擬環(huán)境中真實地表達(dá)出來,讓用戶真正融入到內(nèi)裝設(shè)計中,實時獲得不同的設(shè)計風(fēng)格。不僅如此,該平臺還可以不斷擴(kuò)展新的設(shè)計項目,作為項目知識庫管理工具供設(shè)計人員使用,提高設(shè)計效率。
虛擬樣艙可視化體驗平臺將VR技術(shù)應(yīng)用于船舶內(nèi)裝設(shè)計過程和方案表達(dá)中,探索“VR+船舶內(nèi)裝”新模式,平臺整體開發(fā)設(shè)計需要在場景、美工、特效、主程序等各個方面做到統(tǒng)籌把控,包括三維數(shù)字模型樣艙程序開發(fā)和艙室360°VR全景程序開發(fā),如圖1所示為平臺主界面。
圖1 虛擬樣艙主界面
(1) 三維數(shù)字樣艙程序開發(fā)?;谌S數(shù)字模型的虛擬樣艙開發(fā),將設(shè)計過程信息化、三維化、交互化,讓用戶在虛擬艙室中,自主漫游,多視角體驗艙室布局,完成對內(nèi)裝設(shè)計方案實時互動可編輯的功能需求,大幅提升設(shè)計的參與感和趣味性。
(2) 艙室360°VR全景程序開發(fā)。使用360°VR全景進(jìn)行內(nèi)裝設(shè)計方案可視化應(yīng)用,具有制作成本低、周期短、效果滿意度高等優(yōu)點。制定標(biāo)準(zhǔn)開發(fā)流程,將艙室三維數(shù)字模型導(dǎo)入3D圖形渲染工具,生成全景程序所需的六面基礎(chǔ)圖像素材[1],在此基礎(chǔ)上,結(jié)合艙室涉及的分析內(nèi)容(空調(diào)通風(fēng)、光照模擬、環(huán)境材料等),完成艙室全景程序開發(fā)工作,圖2為科考船登船大廳360°VR全景效果。
圖2 科考船登船大廳360°VR全景
本平臺基于Unity3D開發(fā),適配HTC VIVE虛擬現(xiàn)實硬件系統(tǒng),集成SteamVR SDK,Unity3D是一款基于開源.net即Mono.net的組件化三維引擎,它對編輯器、跨平臺發(fā)布、地形編輯、著色器、腳本、網(wǎng)絡(luò)和物理等特性進(jìn)行全面整合,具有開發(fā)效率高、運行穩(wěn)定等特點,開發(fā)者可將工程文件發(fā)布為.exe執(zhí)行文件提供給用戶[2],表1為平臺系統(tǒng)主要開發(fā)環(huán)境。
表1 平臺系統(tǒng)開發(fā)環(huán)境
(1) VR軟硬件環(huán)境搭建。虛擬樣艙可視化體驗平臺適配HTC VIVE虛擬現(xiàn)實設(shè)備,首先需要搭建VR軟件和硬件環(huán)境,在Unity3D的Asset Store上下載SteamVR SDK,導(dǎo)入Unity3D工程項目中。
(2) VR模型和貼圖制作。將極地科考船相關(guān)艙室的CAD圖紙、參考設(shè)計效果圖等資料, 結(jié)合VR模型制作、材質(zhì)貼圖制作規(guī)范相結(jié)合,建立三維數(shù)字模型以及紋理貼圖,導(dǎo)入Unity3D中,完成VR項目音效、圖形界面、燈光設(shè)置渲染等藝術(shù)效果制作工作。
(3) VR內(nèi)容開發(fā)與優(yōu)化。結(jié)合平臺開發(fā)需求,使用Unity3D開發(fā)引擎,集成HTC VIVE硬件設(shè)備的SteamVR SDK,進(jìn)行VR內(nèi)容方面的開發(fā)工作,并依據(jù)程序測試分析,進(jìn)行內(nèi)容優(yōu)化。
(4) VR程序打包和發(fā)布。在上述工作流程基礎(chǔ)上,對VR項目進(jìn)行打包發(fā)布工作,選擇Build Setting中的Platform,在目標(biāo)平臺上進(jìn)行發(fā)布[3]。
傳統(tǒng)的文件信息管理存在數(shù)據(jù)冗余且數(shù)據(jù)結(jié)構(gòu)不一致等缺點,本文采用SQLite數(shù)據(jù)庫搭建平臺數(shù)據(jù)庫框架,進(jìn)行數(shù)字樣艙屬性參數(shù)和實體信息的管理工作,實現(xiàn)對艙室內(nèi)裝設(shè)計涉及的材料、家具、家電等數(shù)據(jù)信息進(jìn)行妥善保存和有效結(jié)構(gòu)化管理,用戶在數(shù)據(jù)庫系統(tǒng)中可以便捷地實現(xiàn)數(shù)據(jù)信息的檢索、查詢、數(shù)據(jù)處理、統(tǒng)計分析、編輯等功能。
SQLite是一款輕型的關(guān)系型數(shù)據(jù)庫系統(tǒng),具備數(shù)據(jù)處理速度快、開源性好、支持多平臺等優(yōu)點,SQL是一種結(jié)構(gòu)化查詢語言,通過SQL可實現(xiàn)表數(shù)據(jù)查詢、修改、更新,以及對數(shù)據(jù)庫復(fù)雜的訪問等控制[4]。Unity3D實現(xiàn)對SQLite數(shù)據(jù)庫的訪問,首先需要將Mono目錄下的Mono.Data.Sqlite.dll 、System.Data.dll、sqlite3.dll編譯到Unity3D->Assets->Plugins文件目錄中,并在C#程序中添加Mono.Data.Sqlite.dll引用文件[5]。
UI界面開發(fā)是系統(tǒng)中不可缺少的一個環(huán)節(jié),Unity3D 4.6版本以后,Unity3D推出了新的UGUI系統(tǒng),該系統(tǒng)為開發(fā)者提供了非常完善且高效的圖形化交互界面,運行效率遠(yuǎn)遠(yuǎn)高于低級界面(手動實現(xiàn))。UGUI高級界面的種類很多,包含Label(標(biāo)簽)、Button(按鈕)、TextField(輸入框)、ToolBar(工具欄)等,開發(fā)者可以使用C#和Javascript對UI進(jìn)行交互功能的開發(fā),實現(xiàn)預(yù)期效果[5]。
船舶內(nèi)裝設(shè)計要求艙室空間、色彩、照明、家具等具有鮮明的性格和藝術(shù)風(fēng)格,是工程技術(shù)與室內(nèi)藝術(shù)的有機(jī)結(jié)合,所以在VR環(huán)境中,對于內(nèi)裝設(shè)計方案的藝術(shù)效果表達(dá)也是十分重要的環(huán)節(jié)。在Unity3D里,所有的圖形繪制都必須通過著色器(Shader),一般用到的都是Unity自帶的Shader,開發(fā)者也可以通過ShaderLab創(chuàng)建個性化著色器,得到用戶想要的特殊效果,進(jìn)而增強(qiáng)虛擬樣艙的畫面表現(xiàn)。圖3為會議室材質(zhì)著色器效果。
圖3 會議室著色器效果
艙室交互體驗功能的開發(fā),適配HTC VIVE 虛擬現(xiàn)實設(shè)備(見圖4),集成SteamVR SDK,這部分內(nèi)容實現(xiàn)主要由以下功能組成:
圖4 HTC VIVE設(shè)備
(1) 艙室墻紙及地面材質(zhì)動態(tài)編輯。艙室墻紙及地面材質(zhì)動態(tài)編輯,可以讓用戶在虛擬環(huán)境中實時更改設(shè)計方案,體驗不同的設(shè)計風(fēng)格,激發(fā)用戶按照自己的喜好裝飾虛擬樣艙,相比于傳統(tǒng)效果圖的表現(xiàn)形式,更能提升用戶滿意度,也為設(shè)計人員提供有效設(shè)計依據(jù)。圖5為相關(guān)代碼。
圖5 更換材質(zhì)代碼
(2) 艙室家具實例化與互動。艙室家具實例化與互動不僅豐富了虛擬樣艙樣式,更提高了用戶的體驗感。與家具的互動可以讓用戶對艙室內(nèi)部空間有更好的掌控權(quán),不僅如此,對于艙室內(nèi)部實體加入了重力感應(yīng),使它們可以像真實物理世界一樣,具備物理屬性。用戶可以通過VR手柄控制器,對內(nèi)部家具進(jìn)行抓取、拾起、移動以及旋轉(zhuǎn),個性化配置家具家電(見圖6),提前感受真實艙室的日常生活狀態(tài)。
圖6 艙室家具實例化交互界面
(3) 燈光模式切換。在虛擬樣艙中,模擬真實世界的燈光模式變換以及燈光強(qiáng)度,讓體驗者實時感覺到不同的模式所帶來的不同視覺效果變化。
(4) 艙室家具實體屬性信息查詢。通過“射線觸發(fā)碰撞”方法,進(jìn)行設(shè)計信息的可視化表達(dá),通過手柄控制器點擊艙室內(nèi)部家具實體,獲取該實體相關(guān)屬性信息(如施工工藝、材料報價、空調(diào)通風(fēng)、光照模擬等),達(dá)到設(shè)計信息“所見即所得”的目的,如圖7和圖8所示。
圖7 艙室家具實例化工程
圖8 分析屬性信息查詢
使用360°VR全景方式進(jìn)行設(shè)計方案的可視化應(yīng)用,具有制作成本較低,項目周期短等優(yōu)點,在項目投標(biāo)或樣板艙建設(shè)階段,應(yīng)用艙室360°VR全景,不僅為艙室設(shè)計提供有效依據(jù),也提高了項目投標(biāo)的市場競爭力。艙室360°VR全景程序包括全景圖基礎(chǔ)素材制作、全景圖片拼接以及全景程序開發(fā)等3個主要步驟組成。
(1) 將艙室三維數(shù)字模型導(dǎo)入3DMax軟件,使用該軟件進(jìn)行全景圖基礎(chǔ)素材的制作工作,以固定視角,分別渲染艙室上、下、左、右、前、后共6張圖片,導(dǎo)入Unity3D引擎中。
(2) 在Unity3D中,創(chuàng)建一個mat,使用天空盒進(jìn)行六面圖的拼接工作,修改shader為skybox/6 sided;在Inspector中,設(shè)置TextureType為Texture,并將紋理圖片Wrap Mode設(shè)置為Clamp,保證拼接縫隙顯示最優(yōu)。
(3) 在MonoDevelop開發(fā)環(huán)境中,使用C#對全景素材進(jìn)行功能開發(fā),包括播放模式自由變換、不同艙室選擇、功能看板提示、背景音樂設(shè)置等。
虛擬樣艙可視化體驗平臺成果發(fā)布后,用戶可以對項目相關(guān)資源文件(如模型文件、材質(zhì)、紋理和場景資源等)進(jìn)行動態(tài)更新升級,同時,艙室設(shè)計相關(guān)屬性信息(如材料報價、空調(diào)通風(fēng)、光照模擬、家具設(shè)施等)進(jìn)行外部資源的編輯配置,這樣可以讓平臺更加靈活,可擴(kuò)展性更強(qiáng)。本文采用AssetBuddle項目管理機(jī)制進(jìn)行該功能實現(xiàn)。
AssetBundle是一種特殊格式的文件組織形式,可以在項目中按需加載,它支持所有Unity3D支持的文件類型,Unity3D在導(dǎo)入時將此類文件當(dāng)作一個TextAsset。首先創(chuàng)建工作流:相同的模型盡量打包在一起,公用一套資源文件,不相同的模型盡量分開打包;相同模型如具有不同的腳本、組件,則需要把他們放在不同的Prefab中。最后把這些Prefab一起打包在一個AssetBundle中,并將其傳至服務(wù)器,客戶端從服務(wù)器下載AssetBundle,并按需操作每個AssetBundle中的資源。圖9為使用Unity3D AssetBundle動態(tài)加載地板材質(zhì)資源。
圖9 AssetBundle動態(tài)加載地板材質(zhì)資源
(1) 完成工程項目的開發(fā)工作后,可以將虛擬樣艙可視化體驗平臺發(fā)布成為獨立的.exe執(zhí)行程序(見圖10),用戶點擊“虛擬樣艙可視化體驗平臺V1.0Beta.exe”軟件圖標(biāo),即可啟動程序。
圖10 Unity3D成果打包發(fā)布
(2) 可將艙室360°VR全景程序發(fā)布在免費云平臺上,通過手機(jī)移動端進(jìn)行線下和線上的使用體驗。
本文以國內(nèi)極地科考船內(nèi)裝工程項目為實例,針對傳統(tǒng)船舶內(nèi)裝設(shè)計手段和表達(dá)方式存在的不足,開發(fā)船舶虛擬樣艙可視化體驗平臺,將船舶艙室的設(shè)計信息在3D虛擬環(huán)境中真實地表達(dá)出來,同時闡述了該平臺開發(fā)過程中涉及的關(guān)鍵技術(shù),探索“VR+船舶內(nèi)裝”創(chuàng)新模式。不僅如此,通過內(nèi)裝設(shè)計項目的不斷積累,將寶貴的設(shè)計資料有效地集成在該平臺中,為設(shè)計人員提供有效的設(shè)計依據(jù)。
該平臺可擴(kuò)展性強(qiáng),研發(fā)團(tuán)隊在后續(xù)的研究中將進(jìn)一步結(jié)合物聯(lián)網(wǎng)技術(shù),與智能艙室控制網(wǎng)關(guān)系統(tǒng)對接,實現(xiàn)艙室的互聯(lián)互通,為智能艙室產(chǎn)品開發(fā)奠定技術(shù)基礎(chǔ)。
[1] 常濤,王子煊.360°全景圖像拼接技術(shù)分析[J].江蘇科技信息,2017(4):67-68.
[2] 吳亞峰, 于復(fù)興. Unity3D 游戲開發(fā)技術(shù)詳解與典型案例[M].北京:人民郵電出版社,2012.
[3] DENG F P,HONG G,ZHANG S. Research on motion sensing interaction technology based on HTC Vive [C]//International Conference on Machinery, 2017.
[4] 梁效寧,黃旭,朱星海. SQLite數(shù)據(jù)庫文件恢復(fù)提取技術(shù)研究[J].計算機(jī)科學(xué),2016,43(B12):16-19.
[5] 張利利,李仁義,李曉京,等.Unity3D與數(shù)據(jù)庫通信方法的研究[J].計算機(jī)技術(shù)與發(fā)展,2014(3):229-232.