曲蘊(yùn)慧,白新國(guó)
(1.西安醫(yī)學(xué)院計(jì)算機(jī)教研室,陜西西安 710021;2.西安工程大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,陜西西安 710048)
虛擬現(xiàn)實(shí)技術(shù)是一種能夠創(chuàng)造和體驗(yàn)虛擬世界的計(jì)算機(jī)模擬仿真系統(tǒng),虛擬現(xiàn)實(shí)技術(shù)以體感設(shè)備、虛擬現(xiàn)實(shí)設(shè)備、頭戴式眼鏡等為代表,包括互動(dòng)設(shè)備、互動(dòng)資源和互動(dòng)內(nèi)容,聲音、文字、動(dòng)畫(huà)、圖形和視頻是最早的互動(dòng)媒體形式,存在著獨(dú)立自主教學(xué)的問(wèn)題[1-2]?,F(xiàn)代的虛擬現(xiàn)實(shí)技術(shù)所支持的教學(xué)過(guò)程具有整合多種媒體資源的獨(dú)特優(yōu)勢(shì),通過(guò)較強(qiáng)的感官沉浸再到意識(shí)沉浸,提高了學(xué)生的學(xué)習(xí)積極性,并能夠?yàn)閷W(xué)生提供真實(shí)的學(xué)習(xí)體驗(yàn),促進(jìn)學(xué)生強(qiáng)化所學(xué)知識(shí)和技能[3-5]。隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展和虛擬現(xiàn)實(shí)技術(shù)的成熟,越來(lái)越多的商業(yè)機(jī)構(gòu)正在考慮采用虛擬現(xiàn)實(shí)技術(shù)以擴(kuò)大其業(yè)務(wù)影響,該文以天文實(shí)驗(yàn)室和太陽(yáng)系為研究對(duì)象,借助Unity3D 平臺(tái)開(kāi)發(fā)了一款功能較為完善且具有一定可行性的虛擬天文實(shí)驗(yàn)室交互系統(tǒng),使用戶對(duì)天文學(xué)有更直觀的了解[6-9]。
該系統(tǒng)為虛擬仿真系統(tǒng)。首先太陽(yáng)系場(chǎng)景要做到仿真,包括每個(gè)星體的貼圖處理、針對(duì)不同的星體搭建不同的模型、太陽(yáng)的發(fā)光及點(diǎn)光源設(shè)置,以及個(gè)別星體區(qū)別于其他星體的轉(zhuǎn)動(dòng)方向。但區(qū)別于現(xiàn)實(shí)太陽(yáng)系,星體的大小并未與現(xiàn)實(shí)成比例縮放,而是最大限度保持每個(gè)行星的大小比,這樣能夠呈現(xiàn)較好的觀感;設(shè)置適合使用者觀看的速度,從而提供一個(gè)較為便捷的虛擬太陽(yáng)系平臺(tái)[10-11]。
系統(tǒng)整體流程:首先直接到天文實(shí)驗(yàn)室界面,其次在天文實(shí)驗(yàn)室界面中可以選擇進(jìn)入漫游實(shí)驗(yàn)室、漫游太陽(yáng)系、太陽(yáng)系小測(cè)驗(yàn)以及觀看月相。選擇進(jìn)入漫游太陽(yáng)系后會(huì)進(jìn)入到子界面,也就是太陽(yáng)系界面,此時(shí)可以選擇漫游太陽(yáng)系和進(jìn)入單個(gè)星體介紹界面,進(jìn)入到單個(gè)星體介紹界面時(shí)可以選擇3D 查看、基本介紹、特征數(shù)據(jù)以及圖片展示;選擇進(jìn)入太陽(yáng)系小測(cè)驗(yàn)之后會(huì)直接進(jìn)入測(cè)驗(yàn)界面;選擇進(jìn)入觀看月相界面后就可以開(kāi)始觀察,然后可選擇開(kāi)始測(cè)驗(yàn)進(jìn)入測(cè)驗(yàn)界面。每個(gè)界面設(shè)有返回按鈕可回到上一層級(jí),最終需要回到開(kāi)始界面方可退出系統(tǒng),系統(tǒng)總體架構(gòu)如圖1 所示。
圖1 系統(tǒng)總體架構(gòu)
該系統(tǒng)場(chǎng)景由6 個(gè)大模塊組成:系統(tǒng)入口、天文實(shí)驗(yàn)室場(chǎng)景界面、漫游太陽(yáng)系界面、單個(gè)星體介紹界面、太陽(yáng)系小測(cè)驗(yàn)界面、觀看月相界面,系統(tǒng)功能模塊如圖2 所示。
圖2 系統(tǒng)功能模塊
1.2.1 天文實(shí)驗(yàn)室場(chǎng)景設(shè)計(jì)
從系統(tǒng)入口進(jìn)入之后呈現(xiàn)的是天文實(shí)驗(yàn)室場(chǎng)景,可以通過(guò)鍵盤(pán)和鼠標(biāo)的操作來(lái)漫游此場(chǎng)景,也可以放大或縮小視角,輕松查看墻壁上的貼圖以及實(shí)驗(yàn)室內(nèi)部細(xì)節(jié),并且在此場(chǎng)景中設(shè)有跳轉(zhuǎn)到其他場(chǎng)景的物件:3 個(gè)電子屏,點(diǎn)擊即可跳轉(zhuǎn)至其他場(chǎng)景。此場(chǎng)景中還設(shè)有很多非交互的物件模型供參觀,如:地球儀、望遠(yuǎn)鏡、海報(bào)等。天文實(shí)驗(yàn)室場(chǎng)景包括漫游實(shí)驗(yàn)室、漫游太陽(yáng)系界面、太陽(yáng)系小測(cè)驗(yàn)界面和觀看月相界面、實(shí)驗(yàn)室內(nèi)部組成各模型以及提示信息和返回的GUI,結(jié)構(gòu)如圖3 所示。
圖3 天文實(shí)驗(yàn)室場(chǎng)景結(jié)構(gòu)
1.2.2 漫游太陽(yáng)系場(chǎng)景設(shè)計(jì)
通過(guò)點(diǎn)擊天文實(shí)驗(yàn)室場(chǎng)景中的電子屏進(jìn)入到太陽(yáng)系場(chǎng)景,在其中可以通過(guò)鍵盤(pán)、鼠標(biāo)及鼠標(biāo)滾輪來(lái)控制太陽(yáng)系中的漫游。在漫游時(shí)可以通過(guò)點(diǎn)擊某個(gè)星體進(jìn)入到單個(gè)星體介紹界面。漫游太陽(yáng)系場(chǎng)景包括漫游太陽(yáng)系以及單個(gè)星體介紹界面,結(jié)構(gòu)如圖4所示。
圖4 漫游太陽(yáng)系場(chǎng)景結(jié)構(gòu)
1.2.3 單個(gè)星體交互設(shè)計(jì)
在單個(gè)星體介紹界面中可以鼠標(biāo)自由點(diǎn)擊拖拽360°查看當(dāng)前星體,同時(shí)界面中設(shè)有3 個(gè)GUI 圖標(biāo),分別點(diǎn)擊可以查看星體簡(jiǎn)介、星體參數(shù)以及星體圖片。單個(gè)星體介紹場(chǎng)景包括轉(zhuǎn)動(dòng)查看星體、星體簡(jiǎn)介、星體參數(shù)、星體圖片的GUI,結(jié)構(gòu)如圖5 所示。
圖5 單個(gè)星體交互結(jié)構(gòu)
1.2.4 太陽(yáng)系小測(cè)驗(yàn)功能設(shè)計(jì)
在天文實(shí)驗(yàn)室場(chǎng)景中可以點(diǎn)擊另一個(gè)電子屏跳轉(zhuǎn)到太陽(yáng)系小測(cè)驗(yàn)游戲的場(chǎng)景,用來(lái)檢驗(yàn)在太陽(yáng)系場(chǎng)景中學(xué)習(xí)后是否對(duì)太陽(yáng)系有更多的認(rèn)知。測(cè)驗(yàn)通過(guò)鼠標(biāo)拖拽圖片完成,并且界面中含有文字提示信息,提示使用者正確完成測(cè)驗(yàn)。太陽(yáng)系小測(cè)驗(yàn)場(chǎng)景包括改變排列順序游戲、文字提示、圖片的GUI、查看3D 星體,結(jié)構(gòu)如圖6 所示。
圖6 太陽(yáng)系小測(cè)驗(yàn)功能結(jié)構(gòu)
1.2.5 觀看月相場(chǎng)景設(shè)計(jì)
天文實(shí)驗(yàn)室場(chǎng)景中點(diǎn)擊最后一個(gè)電子屏即可跳轉(zhuǎn)到觀看月相界面。界面中含有月相動(dòng)態(tài)演示,使用者可在此處觀看月相演示進(jìn)行學(xué)習(xí),并在學(xué)習(xí)完畢后點(diǎn)擊小測(cè)試做選擇題來(lái)檢驗(yàn)學(xué)習(xí)是否合格。界面中包含文字提示信息和圖片信息。觀看月相場(chǎng)景包括月相動(dòng)態(tài)演示、選擇題、文字提示、圖片的GUI,結(jié)構(gòu)如圖7 所示。
圖7 觀看月相場(chǎng)景功能結(jié)構(gòu)
天文實(shí)驗(yàn)室需要模擬出太陽(yáng)系星體的自轉(zhuǎn)和公轉(zhuǎn),所以給每個(gè)星體都要加上自轉(zhuǎn)和公轉(zhuǎn)的代碼,首先設(shè)定各個(gè)星體公轉(zhuǎn)的圓心,除了太陽(yáng)自身和月亮之外的星體公轉(zhuǎn)圓心都是太陽(yáng),然后設(shè)定公轉(zhuǎn)和自轉(zhuǎn)的速度,天文實(shí)驗(yàn)場(chǎng)景如圖8 所示。
圖8 天文實(shí)驗(yàn)室場(chǎng)景
2.2.1 跳轉(zhuǎn)場(chǎng)景
當(dāng)鼠標(biāo)放置在按鈕上時(shí)按鈕變大,離開(kāi)后恢復(fù),這里用如下代碼來(lái)控制:
系統(tǒng)中包含很多不同的場(chǎng)景來(lái)放置星體等,所以運(yùn)用到場(chǎng)景跳轉(zhuǎn)的次數(shù)也很多,并且每個(gè)跳轉(zhuǎn)的目標(biāo)場(chǎng)景都不盡相同。這里包括兩種方式:一是點(diǎn)擊按鈕跳轉(zhuǎn)場(chǎng)景,主要用在開(kāi)始按鈕、返回按鈕和繼續(xù)按鈕上;二是點(diǎn)擊物體跳轉(zhuǎn)場(chǎng)景,主要用于太陽(yáng)系場(chǎng)景中點(diǎn)擊星體查看單個(gè)星體介紹,最后將不同的代碼掛載到不同的按鈕和物體上就可以實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊按鈕后跳轉(zhuǎn)場(chǎng)景。點(diǎn)擊按鈕跳轉(zhuǎn)場(chǎng)景的主要代碼如下:
點(diǎn)擊物體跳轉(zhuǎn)的主要代碼:
2.2.2 自由旋轉(zhuǎn)與縮放
在太陽(yáng)系漫游場(chǎng)景中點(diǎn)擊某星體進(jìn)入單個(gè)星體介紹界面后,可以直接通過(guò)拖動(dòng)鼠標(biāo)對(duì)星體進(jìn)行360°查看。還有在太陽(yáng)系小測(cè)驗(yàn)場(chǎng)景中,可以通過(guò)鼠標(biāo)拖動(dòng)查看星體來(lái)幫助回憶內(nèi)容從而完成小測(cè)驗(yàn)。實(shí)現(xiàn)過(guò)程:新建一個(gè)腳本,寫(xiě)一段代碼用來(lái)判斷鼠標(biāo)是否在被旋轉(zhuǎn)物體上,按下之后執(zhí)行物體旋轉(zhuǎn),抬起后停止。將代碼掛到目標(biāo)星體上后,選擇目標(biāo),也就是此星體,設(shè)置旋轉(zhuǎn)速度不要過(guò)大即可。主要代碼如下:
2.2.3 拖拽排序
太陽(yáng)系小測(cè)驗(yàn)中需要讓使用者對(duì)星體進(jìn)行拖拽換位來(lái)完成排序,這里用到的概念類似于拼圖游戲:當(dāng)拼圖完全正確時(shí)才顯示游戲成功。在Canvas 下新建一個(gè)Panel 作為背景,將提前制作好的方框圖片掛上去。為Panel 添加Grid Layout Group 組件,并添加Image Creater 腳本[12],將Size 設(shè)為8 之后就可以用來(lái)生成圖片了。由于需要給8 個(gè)星體排序,這里對(duì)Cell進(jìn)行預(yù)設(shè),作為備用。對(duì)Image Creater 添加元素,將Element 0 到Element 7 分別掛上星體圖片,點(diǎn)擊Sprite Editor,按照分辨率對(duì)圖片進(jìn)行拆分,這樣小測(cè)驗(yàn)的模板就完成了。最后為Panel 和Image 分別添加腳本,再新建一個(gè)Game Manager 腳本,用來(lái)實(shí)現(xiàn)每次打開(kāi)后隨機(jī)生成圖片順序,如圖9 所示。
圖9 天文實(shí)驗(yàn)室測(cè)試排序
2.2.4 沉浸漫游
天文實(shí)驗(yàn)室漫游可以真實(shí)地展示實(shí)驗(yàn)室的細(xì)節(jié),包括桌椅、地球儀等小物體,還有在漫游時(shí)可以近距離觀察墻壁上的貼圖、室內(nèi)陳列等。在天文實(shí)驗(yàn)室場(chǎng)景中實(shí)現(xiàn)的漫游是由鍵盤(pán)的W、A、S、D 4 個(gè)鍵和鼠標(biāo)右鍵來(lái)控制?!癢”鍵控制前進(jìn)、“S”鍵控制后退、“A”鍵控制向左移動(dòng)、“D”鍵控制向右移動(dòng)、鼠標(biāo)右鍵控制旋轉(zhuǎn)。在太陽(yáng)系場(chǎng)景中添加漫游的功能可以讓使用者自由穿梭于太陽(yáng)系星體當(dāng)中,觀察星體的運(yùn)行方式、運(yùn)行速度和特點(diǎn),增強(qiáng)對(duì)太陽(yáng)系的認(rèn)知。星空漫游如圖10 所示。
圖10 星空漫游
點(diǎn)擊ENTER 按鈕開(kāi)始系統(tǒng)展示。點(diǎn)擊電子屏“漫游太陽(yáng)系”進(jìn)入到太陽(yáng)系場(chǎng)景,單擊任意星球進(jìn)入此星體介紹界面。點(diǎn)擊圖標(biāo)可以查看詳細(xì)資料,返回到實(shí)驗(yàn)室中。點(diǎn)擊電子屏“太陽(yáng)系小測(cè)驗(yàn)”進(jìn)入測(cè)驗(yàn)場(chǎng)景,每次進(jìn)入小測(cè)驗(yàn)時(shí)系統(tǒng)對(duì)星體圖片的排列順序不同,都會(huì)隨機(jī)排列。點(diǎn)擊“觀看月相”進(jìn)入場(chǎng)景,可以觀看右側(cè)持續(xù)播放的動(dòng)態(tài)月相和左側(cè)地球?qū)崟r(shí)視角。觀看完畢后可以點(diǎn)擊測(cè)試進(jìn)入到選擇題測(cè)試場(chǎng)景。
該系統(tǒng)經(jīng)測(cè)試后可以實(shí)現(xiàn)初期設(shè)計(jì)的交互功能,支持PC 端操作,可以使用鍵盤(pán)和鼠標(biāo)同時(shí)操作完成交互功能。系統(tǒng)包括可漫游的虛擬天文實(shí)驗(yàn)室和仿真太陽(yáng)系以及具有交互功能的兩個(gè)小測(cè)驗(yàn),可以為學(xué)生、天文學(xué)習(xí)者、愛(ài)好者提供一個(gè)虛擬平臺(tái),讓其擁有沉浸式體驗(yàn),并且可以作為天文學(xué)習(xí)道路上的一個(gè)輔助工具,幫助他們進(jìn)行更深層次的研究。
該文主要研究了基于Unity3D 的虛擬天文實(shí)驗(yàn)室交互式系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。主要設(shè)計(jì)流程包括繪制整體模型草圖、模型的搭建、交互的實(shí)現(xiàn)和系統(tǒng)模型的展示。該系統(tǒng)的開(kāi)發(fā)過(guò)程中,由于單純的一個(gè)太陽(yáng)系交互學(xué)習(xí)系統(tǒng)較為單調(diào),所以在系統(tǒng)中增加了針對(duì)太陽(yáng)系交互學(xué)習(xí)之后的小測(cè)驗(yàn)環(huán)節(jié),包括太陽(yáng)系星體排序和觀看月相。為了建造一個(gè)虛擬仿真的天文實(shí)驗(yàn)室模型,搭建了不少為其增添色彩的小物件模型:地球儀、望遠(yuǎn)鏡、書(shū)本等,更能突顯天文實(shí)驗(yàn)室的真實(shí)感,讓使用者有身臨其境的體驗(yàn)。為了能根據(jù)不同場(chǎng)景實(shí)現(xiàn)不同的漫游視角并增加交互的趣味性,天文實(shí)驗(yàn)室的漫游交互基本靠鍵盤(pán)來(lái)實(shí)現(xiàn),太陽(yáng)系的漫游交互基本靠鼠標(biāo)來(lái)實(shí)現(xiàn)。3D 交互學(xué)習(xí)系統(tǒng)可提高學(xué)生的學(xué)習(xí)興趣,降低訓(xùn)練成本,促進(jìn)師生的教學(xué)互動(dòng),有助于學(xué)生“身臨其境”地感受所學(xué)知識(shí)的環(huán)境,對(duì)提高教學(xué)效果具有重要的意義[13-15]。
當(dāng)前虛擬現(xiàn)實(shí)交互技術(shù)的研究在不斷更新,社會(huì)對(duì)于虛擬現(xiàn)實(shí)交互技術(shù)的關(guān)注度越來(lái)越高。隨著虛擬科技的進(jìn)一步開(kāi)發(fā)與進(jìn)步,它一定能夠?yàn)槿藗兊娜粘I顜?lái)更多的便捷,并使人們的生活更加科技化、智能化[16]。