王剛
(中交第二航務工程勘察設計院有限公司,武漢430070)
基于Unity3d的碼頭三維可視化安卓應用
王剛
(中交第二航務工程勘察設計院有限公司,武漢430070)
三維可視化是在三維設計中常用的設計技術,移動通信是工作生活中最方便快捷的技術。將三維可視化和移動通訊應用結合起來,在方案展示,協(xié)同設計,施工模擬等方面具有創(chuàng)新的意義。文章基于Unity3d開發(fā)平臺,采用Revit作為三維模型設計工具,C#作為開發(fā)語言,完成了碼頭三維可視化系統(tǒng)在安卓上的開發(fā)研究。在實際研究過程中提出了基于移動平臺的三維可視化流程與方法。
碼頭;三維設計;Android;Unity3d
目前市場上的主要工程設計工具都具有內(nèi)置或在線的可視化功能,以便在設計流程中快速實現(xiàn)三維可視化及信息交流。也可以使用專業(yè)可視化工具(如3dMax軟件)來制作高度逼真的效果及特殊動畫效果,來實現(xiàn)三維可視化,以滿足設計與展示的需要。
隨著移動端應用在工作生活中的廣泛應用,如手機導航,手機銀行,掌上辦公等各行各業(yè)的應用迅速發(fā)展,成為未來發(fā)展潮流。移動設備性能不斷提升,三維可視化移動應用成為可能,已率先應用在房地產(chǎn)等發(fā)展較快的領域,取得較好的經(jīng)濟效益,具有深遠影響。因此港口碼頭移動可視化研究非常必要。
本文基于Unity3d開發(fā)了一個碼頭的三維可視化系統(tǒng),并運行在移動設備上,實現(xiàn)了設計方案及設計成果的交互式漫游。本方法不僅能夠展現(xiàn)虛擬場景,滿足移動便攜需求,而且可以實時互動,使三維可視化更加靈活,為港口碼頭三維可視化探索了新的技術路線,開辟了新的應用領域。
1.1 平臺選擇
實現(xiàn)三維可視化在移動設備上的應用,選擇合適的平臺及開發(fā)技術是快速實現(xiàn)本項目的前提。
目前市場上的能夠滿足三維可視化需求的軟件設計平臺主要有,Unity3d,UnrealEngine4,CryEngine3, Quest3d等。對這些三維可視化工具的功能進行研究比較,結合本項目特點,選擇Unity3d作為開發(fā)平臺。主要原因有以下幾點:(1)跨平臺:支持Windows,Mac,IOS,Android等系統(tǒng)平臺;(2)模型支持:支持FBX直接導入,自動分割網(wǎng)格面;(3)開發(fā)語言:支持JS,C#語言開發(fā),周期短,效率高;(4)程序發(fā)布:軟件自帶打包工具,可以直接打包成PC、IOS、Android應用程序。
除此之外Unity3d平臺采用面向?qū)ο蟮拈_發(fā)技術,模型和代碼相對獨立,程序移植擴展方便,可以縮短開發(fā)周期,另外學習資源豐富,新開發(fā)人員也能快速掌握,方便技術推廣。
1.2 需求及框架設計
本系統(tǒng)目標是在移動平臺上展示三維碼頭,并實現(xiàn)三維交互式漫游。主要需求包括三維展示,交互漫游,支持安卓三個方面。這三方面是系統(tǒng)功能需求,必須滿足和實現(xiàn)。除此之外還有非功能需求,其主要包括模型精度和美觀程度,場景設計,系統(tǒng)界面,擴展性等,這些功能不作詳細要求,開發(fā)者自由發(fā)揮。
針對需求進行分析歸納,系統(tǒng)構架設計如圖1所示。
每個模塊負責的角色有:(1)數(shù)據(jù)支撐:系統(tǒng)的最基本底層支持,展現(xiàn)給用戶的最終要素,本項目中是油碼頭模型及周圍環(huán)境因素;(2)技術支持∶系統(tǒng)數(shù)據(jù)的集成管理,以及實現(xiàn)系統(tǒng)要求,是系統(tǒng)運行的核心,本項目主要實現(xiàn)三維場景展示,交互漫游等功能;(3)硬件支撐:系統(tǒng)運行的硬件平臺,本項目采用手機作為硬件設備;(4)應用層:項目的終端運行,最終成果,本項目為安卓系統(tǒng)上的應用程序。
1.3 開發(fā)流程
三維可視化實現(xiàn)過程是本項目的主要研究內(nèi)容,針對項目的整體構架,程序?qū)崿F(xiàn)流如圖2所示。
項目流程主要包括,模型準備、場景制作、程序編寫、調(diào)試發(fā)布四個階段:(1)模型制作,通過專業(yè)設計建模工具,建立碼頭模型;(2)場景設計,模型導入Unity3d進行場景制作,添加環(huán)境,景觀因素;(3)程序編寫,根據(jù)需求編寫實現(xiàn)交互以及移動程序,實現(xiàn)系統(tǒng)功能;(4)調(diào)試發(fā)布,制作最終成果,形成安卓應用程序。
圖1 系統(tǒng)構架Fig.1System architecture
圖2 系統(tǒng)流程圖Fig.2System flow chart
圖3 模型組成Fig.3Model of the project
2.1 模型準備
本項目是油碼頭,主要內(nèi)容包括碼頭部分和管廊部分。碼頭部分主要包括沉箱、墩臺、橋臺、鋼橋和操作平臺。模型的模型結構組成如圖3所示。
模型是通過專業(yè)設計軟件的設計的三維模型,文章主要介紹模型后期三維可視化流程,模型設計制作不做詳細論述。根據(jù)三維可視化制作流程,將項目各專業(yè)的設計三維模型進行整合,從Revit里將整個模型導出,格式為FBX。
將模型導入3DMAX,主要對材質(zhì)進行檢查修改,要讓項目的可視化效果更好,材質(zhì)更真實準確,本項目對所有模型的材質(zhì)進行重新賦值,按照建模標準,賦予標準材質(zhì),并進行渲染測試,直至渲染效果滿意為止。本環(huán)節(jié)是可視化的主要環(huán)節(jié),材質(zhì)的處理情況直接影響可視化最終效果。
2.2 場景搭建
將3DMAX處理好的模型導出,導入Unity3d進行場景搭建。主要需添加海洋和天氣系統(tǒng)等環(huán)境要素,并對碼頭模型進行檢查,對模型有誤或材質(zhì)不當?shù)哪P瓦M行修改編輯或者替換。
添加海水。在Unity3d中系統(tǒng)自帶海水模型,但效果較差,為了讓整個項目展示效果得到提高,本項目采用插件Tasharen Water。將插件包導入到項目中,調(diào)整位置和大小比例,調(diào)整到碼頭適合水位高程,調(diào)節(jié)海水材質(zhì)顏色,反射折射等。
添加天空盒。調(diào)整太陽高度和角度,設置光線顏色以及亮度等參數(shù)。反復調(diào)試直至場景內(nèi)的各個構件結構清晰,材質(zhì)逼真,光線角度美觀合理,并接近真實。系統(tǒng)整合如圖4所示。
2.3 第三人
實現(xiàn)交互漫游,主要有第一人視角,第三人視角,以及上帝視角。在本項目中采用第三人視角。主要原因有兩點:
(1)應用廣,效果好,常見的三維游戲以及虛擬現(xiàn)實中經(jīng)常采用。
(2)視角靈活,方便控制,模型相對位置清晰,適合小場景。
第三人是本系統(tǒng)的核心部分,漫游與鏡頭都圍繞第三人實現(xiàn)。Unity3d自帶第三人的模塊,在軟件項目瀏覽器目錄STAND ASSETS里面,將第三人拖到碼頭平臺,放在合適的位置,調(diào)整比例及方向,運行測試查看是否正常。在測試運行時會發(fā)現(xiàn)人物往下墜落,原因是默認人物有重力,而平臺沒有支撐。需要給平臺添加碰撞。Unity3d內(nèi)置動力學系統(tǒng),可以模擬靜態(tài)動態(tài)等受力以及碰撞,可以做出接近實際的運動效果。
給平臺添加網(wǎng)格碰撞,這樣人物在重力和支撐力的作用下平衡,可以平臺上行走,而不會掉到海里。在Unity3d中,有很多碰撞形式,盒子碰撞,地形碰撞,網(wǎng)格碰撞等,網(wǎng)格碰撞可以直接使用所選的網(wǎng)格作為碰撞,適用于導入的模型。這里就分別選中平臺欄桿等可能碰撞的物體添加網(wǎng)格碰撞,然后進行測試,給碼頭上所有可能涉及到的模型都添加碰撞,在此模型準備已經(jīng)基本完成。
圖4 Unity場景Fig.4Scene in Unity3d
2.4 界面設計
界面是設計系統(tǒng)的布局。主要遵循簡潔、實用、滿足系統(tǒng)要求。界面包括程序主界面布置,程序LOGO,加載畫面,以及移動和鏡頭控制按鈕,本項目通過Photoshop分別制作移動控制和鏡頭控制按鈕,然后添加到Unity3d中。
Unity3d界面設計和傳統(tǒng)軟件設計不同,Unity3d界面就是鏡頭所看到的范圍的投影。將移動按鈕和鏡頭按鈕放置在鏡頭范圍的左下和右下。設置坐標參數(shù),運行測試,反復調(diào)整參數(shù),直到測試位置滿意為止。
2.5 程序編碼
程序編碼是本系統(tǒng)的核心,實現(xiàn)如何控制碼頭的漫游。在PC上實現(xiàn)交互漫游比較簡單。但在移動客戶端通過觸屏來控制,不僅需要在Unity3d中編寫代碼實現(xiàn)漫游交互,還需要調(diào)用安卓系統(tǒng)API,通過觸屏事件來對模型進行操作。為了快速實現(xiàn),本項目采用觸摸功能插件easyTouch。
(1)移動控制。采用第三人的形式對模型進行漫游瀏覽。將插件載入到項目環(huán)境中,將移動虛擬手柄拖進項目瀏覽器,調(diào)整屬性和參數(shù)。然后將插件的移動觸摸按鈕添加關聯(lián)到場景中的第三人。設置屏幕中的位置,然后設置移動控制插件的移動速度,旋轉(zhuǎn)速度,以及鏡頭角度和高度變換的速度,設置完成后進行調(diào)試,反復修正參數(shù),然后對編輯代碼,并根據(jù)調(diào)試的槍口進行修改,直至滿足要求。
(2)鏡頭控制。鏡頭的角度,距離實現(xiàn)對模型的環(huán)視,放大,縮小等查看。移動相機虛擬手柄拖到項目中,設置參數(shù)關聯(lián)目標當前場景中的主鏡頭,調(diào)整對齊方式和位置參數(shù),調(diào)節(jié)鏡頭轉(zhuǎn)動的參數(shù),進行測試,反復進行調(diào)試,調(diào)整參數(shù)到合適的數(shù)值,也可以編輯代碼,做相應修改,以達到滿意的視覺效果和使用功能。
下面是程序的部分控制代碼:
控制移動的部分代碼。代碼主要實現(xiàn)手指觸摸屏幕來改變鏡頭的方向和角度,控制第三人移動的視角,展示視角內(nèi)的三維模型。
控制觸摸的部分代碼。通過獲取屏幕觸摸的方向和快慢來控制鏡頭的高低和遠近,包括環(huán)視,放大縮小等功能。
3.1 系統(tǒng)調(diào)試
首先在Unity3d里對整個項目進行運行測試,主要包括對場景第三人的控制,鏡頭的拖拉移動旋轉(zhuǎn),然后在安卓模擬器上測試程序是否能在安卓正確運行,并且功能符合需求,如有錯誤或功能不符,應進行修改。
對項目在Unity3d進行運行測試,包括代碼以及場景,場景主要是模型,環(huán)境。編碼主要是第三人的控制,包括移動和旋轉(zhuǎn),鏡頭的拖拉、移動、旋轉(zhuǎn)。運行程序測試鏡頭和移動的運行效果,反復調(diào)試直至滿意為止。
安卓模擬器能在電腦上模擬安卓手機系統(tǒng),模擬安裝、使用、卸載等所有安卓系統(tǒng)功能,在電腦上就可以實現(xiàn)操作安卓系統(tǒng)的全過程。因此通過它來調(diào)試程序,能夠節(jié)省時間,加快效率,方便修改。調(diào)試完成后再打包安裝到真機上。
3.2 程序發(fā)布
在可視化系統(tǒng)的準備工作及主要編碼工作都已經(jīng)完成的基礎上,對系統(tǒng)進行發(fā)布,形成最終的安卓應用程序。
保證程序調(diào)試完整,模擬器上運行正確無誤。然后通過Unity3d的打包工具制作安裝包。在制作安裝包的過程中要注意有以下幾點:(1)安卓運行環(huán)境配置正確,Unity3d需要通過安卓環(huán)境,生成安卓應用程序;(2)在發(fā)布需要注意設置安卓運行參數(shù),包括程序名稱、橫豎屏、版本等;(3)設置程序歡迎界面,LOGO等。最后就可通過Unity3d一鍵打包生成APK格式的安卓應用程序安裝包,可以拷貝到任何安卓系統(tǒng)的設備上安裝運行。
本次研究主要目的是探索Unity3d在三維設計可視化中的可行性和應用領域。通過本課題的研究,通過研究總結得出移動可視化是三維設計可視化新的應用方案,在方案設計,施工管理,運營維護等領域有指導意義。還可以基于Unity3d進行擴展,如通過交互動畫實現(xiàn)工藝流程,結合二維碼進行施工運維,結合GPS定位進行船隊調(diào)度等。運用Unity3d進行移動應用的開發(fā)將給工程設計行業(yè)帶來巨大變化,提高企業(yè)技術競爭力,促進行業(yè)信息化進程。
[1]辛海霞,金玉盟,吳瑕.耙吸挖泥船疏浚施工三維動畫仿真[J]水道港口,2012(3):264-269. XIN H X,JIN Y M,WU X.3D animation simulation of dredging process of trailing suction hopper dredger[J].Journal of Waterway and Harbor,2012(3):264-269.
[2]楊凱,索利利,牛桂芝,等.水深測量數(shù)據(jù)的組織管理與三維可視化[J].水道港口,2008(4):296-300. YANG K,SUO L L,NIU G Z,et al.Organization and 3D visualization for conventional measuring data of water depth[J].Journal of Waterway and Harbor,2008(4):296-300.
[3]辛海霞,呂秋靈.基于OpenGL的三維地形可視化技術與實現(xiàn)[J].水道港口,2004,25(2):97-100. XIN H X,LV Q L.Visualization to 3D Terrain Based on OpenGL and Its Implementation[J].Journal of Waterway and Harbor,2004, 25(2)∶97-100.
[4]崔瀛瀟.基于Unity3D引擎的三維可視化技術在煤炭地震勘探中的應用[J].中國煤炭地質(zhì),2014(4):58-63. CUI Y X.Application of 3D Visualization Technology Based on Unity3D Engine in Coal Seismic Prospecting[J].Coal Geology of China,2014(4):58-63.
[5]程萍,宋春華.基于Unity3D引擎的3D漫游系統(tǒng)[J].成都紡織高等專科學校學報,2014,31(4):24-28. CHENG P,SONG C H.3D Roaming System Based on Unity3D Engine[J].Journal of Chengdu Textile College,2014,31(4):24-28.
[6]李希龍,李水生,王正清,等.水電工程設計系統(tǒng)仿真探討[J].水利水電技術,2013(8):63-66. LI X L,LI S S,WANG Z Q,et al.Discussion on system simulation of hydropower engineering design[J].Water Resources and Hydro?power Engineering,2013(8):63-66.
[7]聶洪平,周啟榮,李兵.船載交流伺服系統(tǒng)檢測平臺可視化設計與實現(xiàn)[J].無線電通信技術,2014,40(6):81-84. NIE H P,ZHOU Q R,LI B.Visualization Design and Implementation of Detection Platform for Shipborne AC Servo System[J].Ra?dio Communications Technology,2014,40(6):81-84.
[8]呂萌萌,郭新宇,陸聲鏈,等.基于Unity3D果樹交互虛擬修剪技術及其實現(xiàn)[J].農(nóng)機化研究,2015(4):7-11. LV M M,GUO X Y,LU S L,et al.Virtual Interactive Pruning Operation on Fruit Tree Based on Unity 3D[J].Journal of Agricultural Mechanization Research,2015(4)∶7-11.
Android application of 3D visualization based on Unity3d in dock
WANG Gang
(CCCC Second Harbor Consultants Co.,Ltd.,Wuhan 430070,China)
3D visualization,as a usual designing technology,together with the mobile communication technolo?gy as a convenient and efficient technology,enjoys a broad marketing share in scheme presentation,collaborative design,and construction simulation.Based on Unity3d development platform,a development research on terminal 3D visualization system in Android system was presented in this paper,with REVIT designing tool,C#as develop?ing language.After research,the 3D visualization presentation technology on mobile platform was proposed.
dock;3D design;Android;Unity3d
P 204
A
1005-8443(2015)05-0456-05
2015-02-10;
2015-03-24
王剛(1982-),男,陜西省人,工程師,主要從事三維技術、BIM設計技術方面工作。
Biography:WANG Gang(1982-),male,engineer.