国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity3D的室內(nèi)漫游系統(tǒng)

2016-11-09 07:31:47肖建良張程李陽(yáng)
電子設(shè)計(jì)工程 2016年19期
關(guān)鍵詞:虛擬環(huán)境腳本漫游

肖建良,張程,李陽(yáng)

(大連理工大學(xué) 城市學(xué)院,遼寧 大連116600)

基于Unity3D的室內(nèi)漫游系統(tǒng)

肖建良,張程,李陽(yáng)

(大連理工大學(xué) 城市學(xué)院,遼寧 大連116600)

Unity3D是近幾年非常流行的一個(gè)3D游戲開(kāi)發(fā)引擎,它的特點(diǎn)是跨平臺(tái)能力強(qiáng),移植便捷,3D圖形性能出眾。文中以室內(nèi)虛擬3D場(chǎng)景為開(kāi)發(fā)目標(biāo),利用Unity3D游戲引擎,結(jié)合C#腳本語(yǔ)言開(kāi)發(fā)了室內(nèi)漫游系統(tǒng)。系統(tǒng)為用戶提供了近乎真實(shí)的虛擬環(huán)境,用戶可以自由的漫游、瀏覽、與環(huán)境互動(dòng)。文中還討論并實(shí)現(xiàn)了在Unity3D平臺(tái)上構(gòu)建室內(nèi)漫游系統(tǒng)的關(guān)鍵技術(shù)。系統(tǒng)運(yùn)行穩(wěn)定、畫(huà)面流暢,驗(yàn)證了Unity3D是開(kāi)發(fā)VR項(xiàng)目的有效工具。

虛擬現(xiàn)實(shí);Unity3D;游戲引擎;仿真

虛擬現(xiàn)實(shí)技術(shù)也稱靈境技術(shù)或人工環(huán)境[1],是利用計(jì)算機(jī)模擬產(chǎn)生一個(gè)三維空間的虛擬世界,提供使用者關(guān)于視覺(jué)、聽(tīng)覺(jué)、觸覺(jué)等感官的模擬,讓使用者如同身臨其境一般,可以及時(shí)、沒(méi)有限制地感知三維空間內(nèi)的事物。隨著社會(huì)發(fā)展,虛擬現(xiàn)實(shí)技術(shù)在教育、建筑、工業(yè)仿真、醫(yī)療、軍事和娛樂(lè)游戲等領(lǐng)域得到了廣泛的應(yīng)用[2]。目前在家居設(shè)計(jì)、場(chǎng)地租賃等行業(yè)中,用戶主要通過(guò)照片、圖片和相應(yīng)的文字說(shuō)明來(lái)了解相關(guān)信息,沒(méi)有身臨其境的感覺(jué),缺乏與環(huán)境間的互動(dòng)。室內(nèi)漫游系統(tǒng)基于虛擬現(xiàn)實(shí)技術(shù)和網(wǎng)絡(luò)技術(shù),它更直觀形象,更接近真實(shí)環(huán)境,并具有更好的交互性,能夠給使用者一種逼真、身臨其境的感覺(jué)。

Unity3D是由Unity Technologies開(kāi)發(fā)的一個(gè)讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫(huà)等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開(kāi)發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎[3]。作為一款跨平臺(tái)的游戲引擎,支持的平臺(tái)包括PC、Mac、Linux、Web、iOS、Android、Xbox360、Play Station3等大部分主流平臺(tái)。隨著iOS、Android手機(jī)的大量普及和3D網(wǎng)絡(luò)游戲的興起,Unity3D因其強(qiáng)大的功能,良好的移植性,在手機(jī)和網(wǎng)絡(luò)平臺(tái)得到了廣泛的應(yīng)用和傳播[4]。

1 室內(nèi)漫游系統(tǒng)的開(kāi)發(fā)流程與關(guān)鍵技術(shù)

1.1開(kāi)發(fā)流程

室內(nèi)漫游系統(tǒng)的開(kāi)發(fā)遵循軟件開(kāi)發(fā)的一般步驟,依次是分析、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、修改反復(fù)且漸進(jìn)的完成所規(guī)劃的功能[5]。系統(tǒng)的開(kāi)發(fā)目標(biāo)為構(gòu)建一個(gè)虛擬的3D室內(nèi)環(huán)境,因而其開(kāi)發(fā)流程主要分為兩部分:1)創(chuàng)建室內(nèi)環(huán)境和景物的3D模型;2)通過(guò)編寫(xiě)C#腳本,實(shí)現(xiàn)用戶與虛擬環(huán)境間的互動(dòng)。第一部分的主要工作是利用3D建模工具3DMax創(chuàng)建真實(shí)環(huán)境中各個(gè)物體的3D模型。第二部分的主要工作是編寫(xiě)互動(dòng)腳本,利用腳本將模型與Unity3D連接起來(lái),賦予靜態(tài)模型交互的能力。系統(tǒng)的開(kāi)發(fā)流程包括創(chuàng)建模型,模型貼圖,導(dǎo)入模型,編寫(xiě)互動(dòng)腳本,全景測(cè)試等5部分,其細(xì)節(jié)如圖1所示。

圖1 系統(tǒng)開(kāi)發(fā)流程

1.2關(guān)鍵技術(shù)

室內(nèi)漫游系統(tǒng)是室內(nèi)環(huán)境的真實(shí)再現(xiàn),并為用戶提供漫游,瀏覽和與虛擬環(huán)境交互等功能。在Unity3D平臺(tái)中,以上功能的實(shí)現(xiàn)依賴攝影機(jī)運(yùn)動(dòng),碰撞檢測(cè),3D拾取,動(dòng)畫(huà)和音效等關(guān)鍵技術(shù)。

1.2.1攝影機(jī)運(yùn)動(dòng)

用戶利用“UP”、“DOWN”、“LEFT”、“RIGHT”鍵控制攝影機(jī)在場(chǎng)景中向前、向后、向左、向右運(yùn)動(dòng)以實(shí)現(xiàn)第一人稱場(chǎng)景漫游,并利用鼠標(biāo)控制攝影機(jī)的觀察角度。首先編寫(xiě)運(yùn)動(dòng)控制腳本,然后將腳本指定給攝影機(jī),攝影機(jī)向前運(yùn)動(dòng)的具體代碼片段如下。

1.2.2碰撞檢測(cè)

在Unity3D平臺(tái)中,通常利用碰撞器來(lái)檢測(cè)對(duì)象間是否發(fā)生碰撞。Unity3D中內(nèi)建的碰撞器包括:BoxCollider,Sphere Collider,CapsuleCollider,MeshCollider,WheelCollider和 TerrianCollider[6]??紤]到運(yùn)算效率和場(chǎng)景中的對(duì)象大多為規(guī)則形狀,因此選擇BoxCollider或SphereCollider,其實(shí)現(xiàn)步驟如下。

1)為需要進(jìn)行碰撞檢測(cè)的對(duì)象添加BoxCollider或Sphere Collider;修改 BoxCollider的 size屬性或 SphereCollider的Radius屬性,確保其能完全包圍待檢測(cè)對(duì)象;將BoxCollider或SphereCollider的IsTrigger屬性設(shè)置為ture。

2)編寫(xiě)互動(dòng)腳本,處理碰撞事件,然后將其指定給待檢測(cè)對(duì)象,具體代碼片段如下。

1.2.33D拾取

在漫游過(guò)程中,允許用戶通過(guò)鼠標(biāo)選中虛擬環(huán)境中的物體進(jìn)行操作,這時(shí)就需要3D拾取技術(shù)[7]。3D拾取技術(shù)的基本思想非常簡(jiǎn)單,由攝影機(jī)和屏幕上的鼠標(biāo)點(diǎn)擊位置確定一條射線,射線射向3D世界,最先和此射線相交的物體就是被選中的物體。具體代碼片段如下。

1.2.4動(dòng)畫(huà)和音效

動(dòng)畫(huà)和音效都是室內(nèi)漫游系統(tǒng)的重要組成部分,它們會(huì)提高場(chǎng)景的真實(shí)性,讓用戶覺(jué)得這并不是一個(gè)由靜態(tài)模型堆砌的世界,而是一個(gè)真實(shí)的世界[8],當(dāng)開(kāi)門(mén)的時(shí)候,門(mén)應(yīng)該是慢慢打開(kāi)的,同時(shí)還會(huì)發(fā)出聲音,這時(shí)就需要?jiǎng)赢?huà)和音效。Unity3D中有完善的動(dòng)畫(huà)和音效的處理機(jī)制,其實(shí)現(xiàn)步驟如下:

1)創(chuàng)建動(dòng)畫(huà)和音效,導(dǎo)入U(xiǎn)nity3D,并根據(jù)要求剪輯。

2)在要播放動(dòng)畫(huà)的對(duì)象上添加動(dòng)畫(huà)組件,在要播放音效的對(duì)象上添加聲音組件。

3)編寫(xiě)腳本播放動(dòng)畫(huà)和音效,然后將其指定給對(duì)應(yīng)對(duì)象,播放開(kāi)門(mén)動(dòng)畫(huà)和音效的具體代碼片段如下。

2 室內(nèi)漫游系統(tǒng)的實(shí)現(xiàn)

2.1模型的構(gòu)建

在整個(gè)系統(tǒng)的開(kāi)發(fā)過(guò)程中,模型構(gòu)建是最耗時(shí)的一項(xiàng)工作。為了讓3D場(chǎng)景呈現(xiàn)出與實(shí)景一致的感覺(jué),在模型構(gòu)建上,需要盡量塑造出與原物件比例一致的3D模型。模型建好之后,接下來(lái)就是在模型表面貼上逼真的素材。素材的來(lái)源主要是網(wǎng)絡(luò)下載的素材庫(kù)和實(shí)景照片。為了降低場(chǎng)景的復(fù)雜度,對(duì)于室內(nèi)環(huán)境的細(xì)節(jié),比如窗戶,室內(nèi)背景墻等并沒(méi)有單獨(dú)建模,而是采用紋理貼圖,用紋理圖片替代復(fù)雜的模型結(jié)構(gòu)。在模型的構(gòu)建中還考慮到對(duì)模型的優(yōu)化,通過(guò)采用刪除不可見(jiàn)面、減少材質(zhì)數(shù)量、壓縮貼圖等優(yōu)化方法,簡(jiǎn)化了模型,減少了模型的大小。

圖2 辦公室模型

2.2場(chǎng)景設(shè)計(jì)

場(chǎng)景設(shè)計(jì)是系統(tǒng)設(shè)計(jì)的一個(gè)重要環(huán)節(jié)。當(dāng)制作復(fù)雜環(huán)境時(shí),需要將整個(gè)環(huán)境分割成若干個(gè)子場(chǎng)景,這樣可以減少每次載入系統(tǒng)的模型數(shù)量,加快系統(tǒng)的執(zhí)行速度,減少用戶的等待時(shí)間。室內(nèi)環(huán)境包含多個(gè)房間物體的大量3D模型,因而需要先進(jìn)行場(chǎng)景分割,將每個(gè)房間作為一個(gè)單獨(dú)的子場(chǎng)景,并對(duì)每個(gè)子場(chǎng)景單獨(dú)建模。漫游時(shí),只加載所需要的房間模型,而不用載入全部的環(huán)境模型,降低了所消耗的資源。在多場(chǎng)景環(huán)境中,場(chǎng)景間的切換會(huì)出現(xiàn)顯示的停滯或滯后現(xiàn)象。為了解決該問(wèn)題,在系統(tǒng)中設(shè)置了用于加載場(chǎng)景資源和顯示加載進(jìn)度的空?qǐng)鼍?。?dāng)用戶需要場(chǎng)景切換時(shí),并不直接加載新場(chǎng)景,而是加載空?qǐng)鼍?。由于空?qǐng)鼍爸袥](méi)有模型,所以加載速度快,不會(huì)出現(xiàn)停滯或滯后現(xiàn)象。然后在空?qǐng)鼍爸性偌虞d新場(chǎng)景,并顯示加載進(jìn)度,這樣有效解決了場(chǎng)景切換中出現(xiàn)的顯示停滯后滯后問(wèn)題。

2.3界面設(shè)計(jì)

Unity3D中具有一個(gè)強(qiáng)大的GUI功能,可以利用GUI來(lái)制作瀏覽界面、按鈕、滾動(dòng)條和對(duì)話框等對(duì)象[9],常被用于實(shí)現(xiàn)人機(jī)交互界面游系統(tǒng)中,利用GUI元件制作用戶登錄頁(yè)面和漫游頁(yè)面,前者用于用戶登錄、退出系統(tǒng),后者用于實(shí)現(xiàn)導(dǎo)航菜單,用戶可利用導(dǎo)航菜單選擇區(qū)域?yàn)g覽、自動(dòng)漫游或返回登錄頁(yè)面。區(qū)域?yàn)g覽指的是讓用戶直接到達(dá)指定的瀏覽區(qū)域,自動(dòng)漫游指的是讓用戶按照事先設(shè)計(jì)好的線路瀏覽。系統(tǒng)的登錄頁(yè)面如圖3所示。

圖3 系統(tǒng)登錄頁(yè)面

2.4交互性設(shè)計(jì)

Unity3D利用腳本實(shí)現(xiàn)用戶與環(huán)境間的互動(dòng)[10],開(kāi)發(fā)者可以使用JavaScript,Mono或C#來(lái)編寫(xiě)腳本。Unity3D中內(nèi)置了NVIDIA的Physx物理引擎,使開(kāi)發(fā)者可以輕松地在虛擬環(huán)境中模擬出許多物理現(xiàn)象,比如坐標(biāo)變換、剛體運(yùn)動(dòng)等。系統(tǒng)的交互設(shè)計(jì)主要包括環(huán)境漫游,場(chǎng)景切換和信息交互。

環(huán)境漫游是系統(tǒng)的主要功能,通過(guò)利用鍵盤(pán)和鼠標(biāo)控制攝影機(jī)的運(yùn)動(dòng),實(shí)現(xiàn)了用戶以第一人稱視角對(duì)環(huán)境的漫游、瀏覽。

系統(tǒng)采用多場(chǎng)景模式,每個(gè)房間都是一個(gè)子場(chǎng)景,當(dāng)用戶從一個(gè)房間進(jìn)入另一個(gè)房間,這時(shí)就會(huì)出現(xiàn)場(chǎng)景間的切換。場(chǎng)景切換應(yīng)用了碰撞檢測(cè)、動(dòng)畫(huà)和音效技術(shù),其實(shí)現(xiàn)步驟如下:

1)為房門(mén)添加BoxCollider,設(shè)置其Size屬性,使其略大于房門(mén)尺寸,設(shè)置其Is Trigger屬性為ture。

2)編寫(xiě)腳本,處理碰撞事件。在OnTriggerEnter函數(shù)中播放動(dòng)畫(huà)、音效,加載空?qǐng)鼍啊0涯_本指定給房門(mén)。

3)編寫(xiě)腳本,加載新場(chǎng)景。把腳本指定給空?qǐng)鼍暗臄z影機(jī)。

用戶在漫游過(guò)程中可以使用鼠標(biāo)點(diǎn)擊場(chǎng)景中的物體,查看其相關(guān)的屬性信息或?qū)ζ溥M(jìn)行某種操作,比如點(diǎn)擊開(kāi)關(guān)可以開(kāi)、閉室內(nèi)的電燈。信息交互主要應(yīng)用了3D拾取技術(shù),通過(guò)3D拾取技術(shù)確定用戶的操作對(duì)象,然后執(zhí)行相關(guān)的操作。

3 結(jié)束語(yǔ)

文中以3Dmax為建模工具,利用Unity3D游戲引擎,結(jié)合C#腳本語(yǔ)言開(kāi)發(fā)了一款互動(dòng)的室內(nèi)漫游系統(tǒng),并利用Unity3D的多平臺(tái)部署功能,將其發(fā)布到Web平臺(tái)。從模型圖片中可以看到,系統(tǒng)為用戶提供了一個(gè)近乎實(shí)景的虛擬環(huán)境。文中討論并實(shí)現(xiàn)了在Unity3D平臺(tái)上構(gòu)建室內(nèi)漫游系統(tǒng)的若干關(guān)鍵技術(shù),這些關(guān)鍵技術(shù)同樣可以應(yīng)用于其他,包括電子、科技、安全、醫(yī)學(xué)等相關(guān)的虛擬現(xiàn)實(shí)和仿真領(lǐng)域。

[1]朱惠娟.基于Unity3D的虛擬漫游系統(tǒng) [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(10):36-38.

[2]干建松.基于Unity3d的室內(nèi)漫游的關(guān)鍵技術(shù)研究[J].鹽城工學(xué)院學(xué)報(bào),2011,24(4):56-59.

[3]Unity3D [DB/OL].(2011-05-01)[2015-9-30].http://baike. haosou.com/doc/5376000-5612112.htm l.

[4]金璽曾.Unity 3D手機(jī)游戲開(kāi)發(fā)[M].北京:清華大學(xué)出版社,2013.

[5]李遠(yuǎn)鑫,蔣海鷗,徐亦飛,徐芝琦.基于Web3D的交互式虛擬社區(qū)[J].計(jì)算機(jī)工程,2011,37(11):289-290.

[6]吳亞峰,于復(fù)興.Unity 3D游戲開(kāi)發(fā)技術(shù)詳解與典型案例[M].北京:人民郵電出版社,2012.

[7]倪樂(lè)波,戚鵬,遇麗娜,王婧.Unity3d產(chǎn)品虛擬展示技術(shù)的研究與應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010,21(9):54-55.

[8]黃濤.基于Unity3D的虛擬校園漫游系統(tǒng)的研究和實(shí)現(xiàn)[D].桂林:廣西師范大學(xué),2014.

[9]鄭磊.基于三維網(wǎng)頁(yè)技術(shù)的Unity3D教學(xué)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2013.

[10]王星捷,李春花.基于Unity3D平臺(tái)的三維虛擬城市研究與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(4),241-244.

The indoor roam ing system based on Unity3D

XIAO Jian-liang,ZHANG Cheng,LIYang
(City Institute,Dalian University of Technology,Dalian 116600,China)

Unity3D is a very popular game engine in recent years,which has the ability to crossplatforms,transplant conveniently and perform 3D graphics eminently.In this paper,with the aim to develop indoor virtual 3 D scenes,using Unity3D game engine,combined with C#script language to develop the indoor roaming system,which provides userswith an almost real virtualenvironmentwhere the user can free roaming,browse,interactwith the environment.In this paper,the key technologies of indoor roaming system are discussed and implemented on Unity3D platform.Unity3D is an efficient tool to develop VR projectis verified on the base ofstable system and smooth images.

virtual reality;Unity3D;game engine;simulation

TN02

A

1674-6236(2016)19-0054-03

2015-10-27稿件編號(hào):201510195

遼寧大學(xué)生創(chuàng)新基金(201313198009)

肖建良(1964—),男,遼寧大連人,碩士,副教授。研究方向:計(jì)算機(jī)應(yīng)用技術(shù)、虛擬現(xiàn)實(shí)。

猜你喜歡
虛擬環(huán)境腳本漫游
虛擬環(huán)境中空間壓縮問(wèn)題的影響與改善
包裝工程(2023年16期)2023-08-25 11:32:42
酒駕
前庭刺激對(duì)虛擬環(huán)境三維空間定向的影響及與空間能力的相關(guān)關(guān)系
載人航天(2021年5期)2021-11-20 06:04:34
如何通過(guò)虛擬環(huán)境有效管理Python第三方庫(kù)
安奇奇與小cool 龍(第二回)
數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
霹靂漫游堂
快樂(lè)假期
虛擬環(huán)境下大數(shù)據(jù)智能并行聚類方法研究
NASA漫游記
如东县| 临泉县| 扎囊县| 彝良县| 渝北区| 云霄县| 西盟| 东源县| 婺源县| 佛学| 诸暨市| 汝州市| 疏勒县| 金湖县| 凤阳县| 偃师市| 临澧县| 曲靖市| 嘉义市| 阜新市| 营口市| 崇文区| 贵定县| 镇坪县| 德令哈市| 太仆寺旗| 伊川县| 呼和浩特市| 开鲁县| 泸溪县| 南陵县| 青龙| 荣昌县| 杭州市| 淮阳县| 四平市| 九龙县| 彰武县| 漳浦县| 桓台县| 丰城市|