王剛
(中交第二航務工程勘察設計院有限公司,武漢430070)
基于Unity3d的碼頭三維可視化安卓應用
王剛
(中交第二航務工程勘察設計院有限公司,武漢430070)
三維可視化是在三維設計中常用的設計技術,移動通信是工作生活中最方便快捷的技術。將三維可視化和移動通訊應用結合起來,在方案展示,協同設計,施工模擬等方面具有創新的意義。文章基于Unity3d開發平臺,采用Revit作為三維模型設計工具,C#作為開發語言,完成了碼頭三維可視化系統在安卓上的開發研究。在實際研究過程中提出了基于移動平臺的三維可視化流程與方法。
碼頭;三維設計;Android;Unity3d
目前市場上的主要工程設計工具都具有內置或在線的可視化功能,以便在設計流程中快速實現三維可視化及信息交流。也可以使用專業可視化工具(如3dMax軟件)來制作高度逼真的效果及特殊動畫效果,來實現三維可視化,以滿足設計與展示的需要。
隨著移動端應用在工作生活中的廣泛應用,如手機導航,手機銀行,掌上辦公等各行各業的應用迅速發展,成為未來發展潮流。移動設備性能不斷提升,三維可視化移動應用成為可能,已率先應用在房地產等發展較快的領域,取得較好的經濟效益,具有深遠影響。因此港口碼頭移動可視化研究非常必要。
本文基于Unity3d開發了一個碼頭的三維可視化系統,并運行在移動設備上,實現了設計方案及設計成果的交互式漫游。本方法不僅能夠展現虛擬場景,滿足移動便攜需求,而且可以實時互動,使三維可視化更加靈活,為港口碼頭三維可視化探索了新的技術路線,開辟了新的應用領域。
1.1 平臺選擇
實現三維可視化在移動設備上的應用,選擇合適的平臺及開發技術是快速實現本項目的前提。
目前市場上的能夠滿足三維可視化需求的軟件設計平臺主要有,Unity3d,UnrealEngine4,CryEngine3, Quest3d等。對這些三維可視化工具的功能進行研究比較,結合本項目特點,選擇Unity3d作為開發平臺。主要原因有以下幾點:(1)跨平臺:支持Windows,Mac,IOS,Android等系統平臺;(2)模型支持:支持FBX直接導入,自動分割網格面;(3)開發語言:支持JS,C#語言開發,周期短,效率高;(4)程序發布:軟件自帶打包工具,可以直接打包成PC、IOS、Android應用程序。
除此之外Unity3d平臺采用面向對象的開發技術,模型和代碼相對獨立,程序移植擴展方便,可以縮短開發周期,另外學習資源豐富,新開發人員也能快速掌握,方便技術推廣。
1.2 需求及框架設計
本系統目標是在移動平臺上展示三維碼頭,并實現三維交互式漫游。主要需求包括三維展示,交互漫游,支持安卓三個方面。這三方面是系統功能需求,必須滿足和實現。除此之外還有非功能需求,其主要包括模型精度和美觀程度,場景設計,系統界面,擴展性等,這些功能不作詳細要求,開發者自由發揮。
針對需求進行分析歸納,系統構架設計如圖1所示。
每個模塊負責的角色有:(1)數據支撐:系統的最基本底層支持,展現給用戶的最終要素,本項目中是油碼頭模型及周圍環境因素;(2)技術支持∶系統數據的集成管理,以及實現系統要求,是系統運行的核心,本項目主要實現三維場景展示,交互漫游等功能;(3)硬件支撐:系統運行的硬件平臺,本項目采用手機作為硬件設備;(4)應用層:項目的終端運行,最終成果,本項目為安卓系統上的應用程序。
1.3 開發流程
三維可視化實現過程是本項目的主要研究內容,針對項目的整體構架,程序實現流如圖2所示。
項目流程主要包括,模型準備、場景制作、程序編寫、調試發布四個階段:(1)模型制作,通過專業設計建模工具,建立碼頭模型;(2)場景設計,模型導入Unity3d進行場景制作,添加環境,景觀因素;(3)程序編寫,根據需求編寫實現交互以及移動程序,實現系統功能;(4)調試發布,制作最終成果,形成安卓應用程序。

圖1 系統構架Fig.1System architecture

圖2 系統流程圖Fig.2System flow chart

圖3 模型組成Fig.3Model of the project
2.1 模型準備
本項目是油碼頭,主要內容包括碼頭部分和管廊部分。碼頭部分主要包括沉箱、墩臺、橋臺、鋼橋和操作平臺。模型的模型結構組成如圖3所示。
模型是通過專業設計軟件的設計的三維模型,文章主要介紹模型后期三維可視化流程,模型設計制作不做詳細論述。根據三維可視化制作流程,將項目各專業的設計三維模型進行整合,從Revit里將整個模型導出,格式為FBX。
將模型導入3DMAX,主要對材質進行檢查修改,要讓項目的可視化效果更好,材質更真實準確,本項目對所有模型的材質進行重新賦值,按照建模標準,賦予標準材質,并進行渲染測試,直至渲染效果滿意為止。本環節是可視化的主要環節,材質的處理情況直接影響可視化最終效果。
2.2 場景搭建
將3DMAX處理好的模型導出,導入Unity3d進行場景搭建。主要需添加海洋和天氣系統等環境要素,并對碼頭模型進行檢查,對模型有誤或材質不當的模型進行修改編輯或者替換。
添加海水。在Unity3d中系統自帶海水模型,但效果較差,為了讓整個項目展示效果得到提高,本項目采用插件Tasharen Water。將插件包導入到項目中,調整位置和大小比例,調整到碼頭適合水位高程,調節海水材質顏色,反射折射等。
添加天空盒。調整太陽高度和角度,設置光線顏色以及亮度等參數。反復調試直至場景內的各個構件結構清晰,材質逼真,光線角度美觀合理,并接近真實。系統整合如圖4所示。
2.3 第三人
實現交互漫游,主要有第一人視角,第三人視角,以及上帝視角。在本項目中采用第三人視角。主要原因有兩點:
(1)應用廣,效果好,常見的三維游戲以及虛擬現實中經常采用。
(2)視角靈活,方便控制,模型相對位置清晰,適合小場景。
第三人是本系統的核心部分,漫游與鏡頭都圍繞第三人實現。Unity3d自帶第三人的模塊,在軟件項目瀏覽器目錄STAND ASSETS里面,將第三人拖到碼頭平臺,放在合適的位置,調整比例及方向,運行測試查看是否正常。在測試運行時會發現人物往下墜落,原因是默認人物有重力,而平臺沒有支撐。需要給平臺添加碰撞。Unity3d內置動力學系統,可以模擬靜態動態等受力以及碰撞,可以做出接近實際的運動效果。
給平臺添加網格碰撞,這樣人物在重力和支撐力的作用下平衡,可以平臺上行走,而不會掉到海里。在Unity3d中,有很多碰撞形式,盒子碰撞,地形碰撞,網格碰撞等,網格碰撞可以直接使用所選的網格作為碰撞,適用于導入的模型。這里就分別選中平臺欄桿等可能碰撞的物體添加網格碰撞,然后進行測試,給碼頭上所有可能涉及到的模型都添加碰撞,在此模型準備已經基本完成。

圖4 Unity場景Fig.4Scene in Unity3d
2.4 界面設計
界面是設計系統的布局。主要遵循簡潔、實用、滿足系統要求。界面包括程序主界面布置,程序LOGO,加載畫面,以及移動和鏡頭控制按鈕,本項目通過Photoshop分別制作移動控制和鏡頭控制按鈕,然后添加到Unity3d中。
Unity3d界面設計和傳統軟件設計不同,Unity3d界面就是鏡頭所看到的范圍的投影。將移動按鈕和鏡頭按鈕放置在鏡頭范圍的左下和右下。設置坐標參數,運行測試,反復調整參數,直到測試位置滿意為止。
2.5 程序編碼
程序編碼是本系統的核心,實現如何控制碼頭的漫游。在PC上實現交互漫游比較簡單。但在移動客戶端通過觸屏來控制,不僅需要在Unity3d中編寫代碼實現漫游交互,還需要調用安卓系統API,通過觸屏事件來對模型進行操作。為了快速實現,本項目采用觸摸功能插件easyTouch。
(1)移動控制。采用第三人的形式對模型進行漫游瀏覽。將插件載入到項目環境中,將移動虛擬手柄拖進項目瀏覽器,調整屬性和參數。然后將插件的移動觸摸按鈕添加關聯到場景中的第三人。設置屏幕中的位置,然后設置移動控制插件的移動速度,旋轉速度,以及鏡頭角度和高度變換的速度,設置完成后進行調試,反復修正參數,然后對編輯代碼,并根據調試的槍口進行修改,直至滿足要求。
(2)鏡頭控制。鏡頭的角度,距離實現對模型的環視,放大,縮小等查看。移動相機虛擬手柄拖到項目中,設置參數關聯目標當前場景中的主鏡頭,調整對齊方式和位置參數,調節鏡頭轉動的參數,進行測試,反復進行調試,調整參數到合適的數值,也可以編輯代碼,做相應修改,以達到滿意的視覺效果和使用功能。
下面是程序的部分控制代碼:
控制移動的部分代碼。代碼主要實現手指觸摸屏幕來改變鏡頭的方向和角度,控制第三人移動的視角,展示視角內的三維模型。
控制觸摸的部分代碼。通過獲取屏幕觸摸的方向和快慢來控制鏡頭的高低和遠近,包括環視,放大縮小等功能。
3.1 系統調試
首先在Unity3d里對整個項目進行運行測試,主要包括對場景第三人的控制,鏡頭的拖拉移動旋轉,然后在安卓模擬器上測試程序是否能在安卓正確運行,并且功能符合需求,如有錯誤或功能不符,應進行修改。
對項目在Unity3d進行運行測試,包括代碼以及場景,場景主要是模型,環境。編碼主要是第三人的控制,包括移動和旋轉,鏡頭的拖拉、移動、旋轉。運行程序測試鏡頭和移動的運行效果,反復調試直至滿意為止。
安卓模擬器能在電腦上模擬安卓手機系統,模擬安裝、使用、卸載等所有安卓系統功能,在電腦上就可以實現操作安卓系統的全過程。因此通過它來調試程序,能夠節省時間,加快效率,方便修改。調試完成后再打包安裝到真機上。
3.2 程序發布
在可視化系統的準備工作及主要編碼工作都已經完成的基礎上,對系統進行發布,形成最終的安卓應用程序。
保證程序調試完整,模擬器上運行正確無誤。然后通過Unity3d的打包工具制作安裝包。在制作安裝包的過程中要注意有以下幾點:(1)安卓運行環境配置正確,Unity3d需要通過安卓環境,生成安卓應用程序;(2)在發布需要注意設置安卓運行參數,包括程序名稱、橫豎屏、版本等;(3)設置程序歡迎界面,LOGO等。最后就可通過Unity3d一鍵打包生成APK格式的安卓應用程序安裝包,可以拷貝到任何安卓系統的設備上安裝運行。
本次研究主要目的是探索Unity3d在三維設計可視化中的可行性和應用領域。通過本課題的研究,通過研究總結得出移動可視化是三維設計可視化新的應用方案,在方案設計,施工管理,運營維護等領域有指導意義。還可以基于Unity3d進行擴展,如通過交互動畫實現工藝流程,結合二維碼進行施工運維,結合GPS定位進行船隊調度等。運用Unity3d進行移動應用的開發將給工程設計行業帶來巨大變化,提高企業技術競爭力,促進行業信息化進程。
[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]楊凱,索利利,牛桂芝,等.水深測量數據的組織管理與三維可視化[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的三維地形可視化技術與實現[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].中國煤炭地質,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漫游系統[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]李希龍,李水生,王正清,等.水電工程設計系統仿真探討[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]聶洪平,周啟榮,李兵.船載交流伺服系統檢測平臺可視化設計與實現[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果樹交互虛擬修剪技術及其實現[J].農機化研究,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.