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