王瑜晨
摘 要:虛擬現(xiàn)實(shí)(Virtual Reality, VR)具有很好的沉浸感、交互性和自由性,該文以安徽省宣城市宛溪河大橋?yàn)槔?,提出一種基于Unity 3D并使用C#語(yǔ)言開(kāi)發(fā)的VR仿真設(shè)計(jì)模式,該模式基于三維建模、模型優(yōu)化、模型及場(chǎng)景加載、人機(jī)交互和運(yùn)動(dòng)等進(jìn)行仿真設(shè)計(jì),結(jié)果表明該方法可以有效提高工程前期施工方案決策效率,同時(shí)對(duì)橋梁施工過(guò)程中的遠(yuǎn)程監(jiān)控具有一定的輔助作用。
關(guān)鍵詞:橋梁工程;Unity 3D;虛擬漫游;實(shí)時(shí)渲染
中圖分類(lèi)號(hào):TP391.9? ? ? 文獻(xiàn)標(biāo)志碼:A
0 引言
虛擬現(xiàn)實(shí)(Virtual Reality, VR)在航空航天、機(jī)械制造、醫(yī)學(xué)、文化旅游等行業(yè)迅猛發(fā)展,其中虛擬漫游是VR的一個(gè)重要應(yīng)用方向,其實(shí)現(xiàn)了三維景觀(guān)的數(shù)字化和虛擬化,并將真實(shí)的場(chǎng)景顯示在屏幕上。與傳統(tǒng)的視頻動(dòng)畫(huà)不同,虛擬漫游更具有沉浸感、交互性和自由性。
該文以宣城市宛溪河矮塔斜拉橋?yàn)槔?,設(shè)計(jì)了包括橋梁主體以及周?chē)鞘小⑺蚓坝^(guān)一體化的三維VR仿真場(chǎng)景,將橋梁工程與虛擬現(xiàn)實(shí)技術(shù)結(jié)合起來(lái),打破了橋梁施工在方案比選方面的諸多限制,最終實(shí)現(xiàn)橋梁施工方案的高效比選。
1 橋梁主體及周?chē)坝^(guān)建模和優(yōu)化處理
該文研究的是基于Unity 3D平臺(tái)開(kāi)發(fā)的VR仿真系統(tǒng),Unity 3D在模型構(gòu)建方面僅具備基礎(chǔ)的建模功能,無(wú)法構(gòu)造橋梁等復(fù)雜模型,無(wú)法反映橋梁內(nèi)部真實(shí)構(gòu)造情況,因此運(yùn)用工業(yè)建模軟件Maya進(jìn)行模型制作,但由于其文件格式與Unity 3D引擎不兼容,因此須再使用工程級(jí)建模軟件3Ds Max對(duì)模型進(jìn)行材質(zhì)渲染,提高模型真實(shí)性,并將模型文件轉(zhuǎn)化為.FBX格式,以供Unity 3D環(huán)境使用,具體流程如圖1所示。
為實(shí)現(xiàn)虛擬現(xiàn)實(shí)仿真設(shè)計(jì)在Unity 3D環(huán)境下,能夠最真實(shí)地反映橋梁建成后的結(jié)構(gòu)狀態(tài)以及其與周?chē)鞘小⑺蚓坝^(guān)融合狀態(tài),該設(shè)計(jì)根據(jù)《宣城市宛溪河矮塔斜拉橋設(shè)計(jì)》里的斜拉橋真實(shí)施工尺寸及實(shí)際施工節(jié)段進(jìn)行三維建模,模型主要有宛溪河大橋主體結(jié)構(gòu)、周?chē)鞘兴蚓坝^(guān)2個(gè)部分,各部分模型結(jié)構(gòu)如圖2所示。
為了呈現(xiàn)最真實(shí)的場(chǎng)景效果、提高建模的精細(xì)度、減少模型材質(zhì)之間的干擾,要將橋梁主體結(jié)構(gòu)與周?chē)h(huán)境景觀(guān)分開(kāi)建模,同時(shí)為了保證橋梁各部分結(jié)構(gòu)尺寸的精確,采用Auto CAD構(gòu)建橋梁各部分的詳細(xì)結(jié)構(gòu)尺寸,輔助3Ds Max優(yōu)化模型。
2 模型及場(chǎng)景加載
將前期制作的大橋和景觀(guān)2個(gè)部分模型在3Ds Max中導(dǎo)出.FBX格式,并將該文件導(dǎo)入U(xiǎn)nity 3D中,將導(dǎo)入模型的坐標(biāo)與Unity 3D環(huán)境坐標(biāo)系進(jìn)行關(guān)聯(lián),完成模型加載。為了使場(chǎng)景更具有真實(shí)感,需要添加光源,使物體出現(xiàn)陰影、反射等真實(shí)現(xiàn)象。該虛擬現(xiàn)實(shí)系統(tǒng)使用平行光源,并對(duì)主攝像機(jī)添置天空盒子,宛溪河大橋場(chǎng)景效果如圖3所示。
3 人機(jī)交互設(shè)計(jì)開(kāi)發(fā)
人機(jī)交互設(shè)計(jì)以及虛擬漫游的實(shí)現(xiàn),需要對(duì)其進(jìn)行程序設(shè)計(jì)。Unity 3D支持使用C#、Java和Boo這3種語(yǔ)言的編程,均是基于.NET平臺(tái)開(kāi)發(fā)運(yùn)行。該文采用C#語(yǔ)言進(jìn)行程序設(shè)計(jì),并使用引擎自帶的MonoDevelop進(jìn)行程序設(shè)計(jì),人機(jī)交互界面采用Unity 3D自帶的插件NGUI開(kāi)發(fā)。為保證虛擬漫游的順利進(jìn)行,使用C#語(yǔ)言進(jìn)行漫游動(dòng)作程序編寫(xiě)。為更好地構(gòu)建漫游橋梁各部分結(jié)構(gòu),使用鼠標(biāo)確定攝像機(jī)位置。
start_qua = transform.rotation;start_pos= transform.position? //記錄攝像機(jī)初始位置
mousePos2 = Input.mousePosition //記錄鼠標(biāo)實(shí)時(shí)移動(dòng)的位置
if (Mathf.Abs(offset.x) > Mathf.Abs(offset.y)) //比較坐標(biāo)值,區(qū)分上下與左右位置
transform.RotateAround? //調(diào)節(jié)攝像機(jī)漫游角度
為保證第一視角漫游時(shí)的真實(shí)體驗(yàn)感,橋體結(jié)構(gòu)模型添加了碰撞檢測(cè)功能。加載過(guò)模型后將全部模型建立Mesh,并將單個(gè)模型單元賦予Mesh Collider,調(diào)節(jié)碰撞參數(shù)。當(dāng)依靠鼠標(biāo)移動(dòng)第一視角時(shí),攝像機(jī)達(dá)到橋體結(jié)構(gòu)表面時(shí)即會(huì)觸發(fā)碰撞機(jī)制,令其無(wú)法向模型內(nèi)部移動(dòng)。
4 運(yùn)動(dòng)仿真
為了實(shí)現(xiàn)虛擬景觀(guān)中水流的運(yùn)動(dòng)仿真,采用C#語(yǔ)言對(duì)河道模型進(jìn)行了材質(zhì)調(diào)節(jié),使河道具有真實(shí)的流動(dòng)以及反光效果。如圖4所示是宛溪河河道模型材質(zhì)處理參數(shù)。運(yùn)用C#編寫(xiě)4個(gè)部分程序代碼:水流材質(zhì)、水面光影、鏡像反光、水波變化。對(duì)上述四部分程序進(jìn)行參數(shù)適配,最終獲得最接近真實(shí)水面反應(yīng)的河道水流效果。
為真實(shí)仿真外界光線(xiàn)變化,對(duì)添加的平行光影編寫(xiě)運(yùn)動(dòng)程序,保證在適當(dāng)?shù)穆芜^(guò)程能較完整的體驗(yàn)光照變換的景觀(guān)效果,經(jīng)過(guò)反復(fù)測(cè)試最終確定設(shè)置3 min為一個(gè)光影換周期。
5 結(jié)語(yǔ)
該文主要對(duì)宣城市宛溪河大橋進(jìn)行了虛擬現(xiàn)實(shí)技術(shù)的研究設(shè)計(jì),在Maya中進(jìn)行三維建模,在3Ds Max中進(jìn)行模型優(yōu)化,實(shí)現(xiàn)了基于Unity 3D引擎、使用C#語(yǔ)言開(kāi)發(fā)的虛擬現(xiàn)實(shí)場(chǎng)景設(shè)計(jì),可以在不同畫(huà)面層次獲得很好的臨場(chǎng)感。
通常情況下,橋梁施工不僅周期長(zhǎng)而且還極其復(fù)雜,其中施工方案一般還需要作多次展示和修改,總體上缺乏臨場(chǎng)感,該文提供的方法可以很好地解決這個(gè)難題。因此,該文提供的方法對(duì)橋梁工程前期方案比選以及橋梁施工過(guò)程的遠(yuǎn)程監(jiān)控有著重要的研究意義。
參考文獻(xiàn)
[1]朱惠娟.基于Unity3D的虛擬漫游系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(10):36-39.
[2]高國(guó)雪,高輝,焦向東,等.基于Unity3D的焊接機(jī)器人虛擬現(xiàn)實(shí)仿真技術(shù)研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2018(3):19-22.
[3]汪學(xué)著,孫鳳佳.宣城市宛溪河矮塔斜拉橋設(shè)計(jì)[J].世界橋梁, 2012,40(1):11-13.
[4]C Helbig,H S Bauer,K Rink,et al.Concept and workflow for 3D visualization of atmospheric data in a virtual reality environment for analytical approaches[J].Environmental Earth Sciences,2014,72(10):3767-3780.
[5]A Okita.Learning C# progra mming with Unity 3D[J].English Journal,2014(1):249-267.
[6]周信文,俎曉芳,羅津,等.基于Unity3D的地鐵三維虛擬漫游設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2018,27(3):258-262.
[7]張煜,陳天星,陳力,等.基于Unity3D的計(jì)算機(jī)虛擬試衣測(cè)量系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2018(2):44-47.