閆斌
摘要:校園漫游作品是各高校普遍在做的產(chǎn)品項(xiàng)目,校園漫游作品的實(shí)現(xiàn),不但豐富了各高校的網(wǎng)站內(nèi)容,在走進(jìn)校園之前就可以看到校園的風(fēng)光,而且顯示了在VR創(chuàng)作領(lǐng)域的技術(shù)水平和實(shí)力。項(xiàng)目使用Daydream Renderer中優(yōu)化過的照明、著色器和編輯工具等,以此來在保證場景質(zhì)量的情況下,對場景渲染過程進(jìn)行優(yōu)化,從而解決大負(fù)載情況下的人機(jī)交互問題。
Abstract: Campus roaming works are one of the project execution in colleges and universities. The realization of campus roaming works not only enriched the contents of the websites of colleges and universities, but also showed the technical level and strength of VR creation. ?In order to solve the human-computer interaction problem under heavy load, the project uses the optimized lighting, shaders and editing tools in Daydream Renderer to optimize the scene rendering process while ensuring the scene quality.
關(guān)鍵詞:校園漫游;VR;Daydream渲染;用戶體驗(yàn)
Key words: campus roaming;VR;Daydream render;user experience
中圖分類號:TP311 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1006-4311(2020)19-0225-03
0 ?引言
2016年被人們稱之為VR元年,也是從2016年開始到現(xiàn)在,VR應(yīng)用從爆發(fā)式的增長到趨于穩(wěn)定,關(guān)于VR技術(shù)的應(yīng)用開發(fā)、技術(shù)討論、培訓(xùn)等迅速的發(fā)展起來,從而帶動(dòng)起VR產(chǎn)業(yè)的快速興起,基于VR的應(yīng)用也從片面的游戲上的認(rèn)知進(jìn)入了各行業(yè)的應(yīng)用。工業(yè)生產(chǎn)的環(huán)境仿真、城市規(guī)劃和建筑業(yè)的漫游仿真、醫(yī)療行業(yè)的專業(yè)模擬教學(xué)、文物保護(hù)及旅游的產(chǎn)品開發(fā)等不斷出現(xiàn)優(yōu)秀的VR產(chǎn)品。而VR的行業(yè)生產(chǎn),要具有延續(xù)性,要有穩(wěn)定的團(tuán)隊(duì)作為基礎(chǔ),成熟的技術(shù)平臺(tái)作支撐,這樣才能穩(wěn)定VR的產(chǎn)品空間。作為團(tuán)隊(duì)的源頭,大學(xué)生創(chuàng)新團(tuán)隊(duì)的建設(shè)就成為VR團(tuán)隊(duì)的主力源泉。作為基礎(chǔ)開發(fā),在完成了校園漫游的作品后,可以形成一套自己的開發(fā)模式,結(jié)合不同的行業(yè)需求,實(shí)現(xiàn)后期更多VR作品、產(chǎn)品的開發(fā)。
1 ?VR的展示方式的優(yōu)勢
與傳統(tǒng)的平面媒體相比,無論是照片還是基于3D的效果圖,VR技術(shù)將校園的景象數(shù)字化、立體化、空間化,在時(shí)空上進(jìn)行延展,實(shí)現(xiàn)足不出戶就能夠直觀、身臨其境的體驗(yàn)校園生活,這是平面、靜態(tài)媒體所無法比擬的。
校園漫游項(xiàng)目的VR體現(xiàn):VR項(xiàng)目作品追求的讓用戶在虛擬世界中得到沉浸式的體驗(yàn),用戶可以通過各方向的移動(dòng)(由于該項(xiàng)目運(yùn)行平臺(tái)為支持Daydream的智能手機(jī)而非具有獨(dú)立計(jì)算能力的VR設(shè)備,所以此處的移動(dòng)為在3DoF方式基礎(chǔ)上結(jié)合Daydream控制器產(chǎn)生的用戶交互性移動(dòng))來改變視角,而Daydream控制器等輸入設(shè)備則允許他們與虛擬環(huán)境的各個(gè)部分、角落進(jìn)行瀏覽、交互。同時(shí),所編寫的VR驅(qū)動(dòng)程序以流暢,逼真的方式處理視點(diǎn)的變化和控制器輸入的變化,從而保證沉浸式體驗(yàn)的舒適感和真實(shí)感。
校園漫游項(xiàng)目在VR中的展示:VR作品運(yùn)行平臺(tái)的屏幕是用戶查看的窗口,在此項(xiàng)目中則是放在Daydream View中的手機(jī)屏幕。屏幕前面的鏡頭會(huì)扭曲屏幕上顯示的圖像,以填充用戶的視線并通過交互以及顯示、頭顯設(shè)備的跟蹤和音效的組合實(shí)現(xiàn)用戶體驗(yàn)的沉浸感。
2 ?項(xiàng)目開發(fā)工具
①Unity3D(項(xiàng)目使用版本為:2019.1.14f1),并要求已經(jīng)安裝Android Build Support組件或者iOS Build Support組件,從而能夠滿足Android和iOS環(huán)境下的使用。
②Visual Studio Code,用于開發(fā)、調(diào)試Unity程序代碼。
③GVR SDK for Unity(項(xiàng)目使用版本為v1.110.0),該VR開發(fā)工具包由Google提供,本項(xiàng)目使用2017.4版本及以上版本的Unity。
④Daydream-Elements。
⑤unity-ugui-Xcharts。
⑥Instant Preview:項(xiàng)目的開發(fā)過程在真機(jī)上測試所用的軟件,通過本工具可以跳過項(xiàng)目的構(gòu)建過程使其立即在設(shè)備上測試項(xiàng)目。
⑦支持Daydream的手機(jī),分辨率要盡可能的高,支持以60 幀(部分VR模式需要至少75幀)運(yùn)行的VR體驗(yàn),要有精確頭部跟蹤的高保真?zhèn)鞲衅鳌?/p>
⑧Daydream控制器,由于3DoF 類型的交互方式可以為本項(xiàng)目提供讓用戶更加方便與舒適的VR交互體驗(yàn),所以需要使用Daydream控制器,來實(shí)現(xiàn)一些常見的的交互方式,例如使用Ray-pointer來與2D UI交互,使用Gesture-based input來代替用戶移動(dòng)來對物體產(chǎn)生力的影響等。
3 ?項(xiàng)目設(shè)置
在構(gòu)建VR項(xiàng)目前需要在Unity的File>Build Settings選擇Android后點(diǎn)擊Switch Platform,在Build Settings窗口中點(diǎn)擊Player Settings,之后在Player Setting窗口中勾選XR Settings并在下方Virtual Reality SDKs一欄中添加Daydream,最后在Other Setting中設(shè)置最低Android API Level,Daydream最低支持Android版本為Android 7.0 'Nougat' (API level 24)。其他項(xiàng)目名稱、應(yīng)用版本、公司名稱和應(yīng)用圖標(biāo)均可以根據(jù)項(xiàng)目組的規(guī)則輸入。
4 ?項(xiàng)目關(guān)鍵功能描述
4.1 場景描述:本項(xiàng)目中包含三個(gè)場景分別為:校園場景,教室、辦公室場景(含實(shí)驗(yàn)室、食堂、宿舍等室內(nèi)環(huán)境場景)及圖書館場景三部分。
4.2 項(xiàng)目主要功能
①3DoF頭顯跟蹤運(yùn)動(dòng):根據(jù)用戶頭部的運(yùn)動(dòng),實(shí)時(shí)地將渲染后的畫面顯示到用戶查看場景用的顯示器上,讓用戶感覺仿佛置身于場景當(dāng)中,可以自由、低延遲的改變視角。需要注意的是在制作VR應(yīng)用程序時(shí),不建議由程序控制場景中頭顯的運(yùn)動(dòng),即使只是暫時(shí)的,因?yàn)橥蝗粚⒁暯沁M(jìn)行非用戶主觀的運(yùn)動(dòng)會(huì)極大可能地使用戶出現(xiàn)暈車等生理不良反應(yīng),從而降低用戶的VR體驗(yàn)。
②顯示Daydream控制器模型:當(dāng)用戶使用Daydream控制器時(shí),場景中會(huì)出現(xiàn)Daydream控制器模型,以此來實(shí)時(shí)反饋給用戶控制器位置,與激光射線與工具提示來讓用戶方便地使用控制器與場景的物體交互。
③激光射線與光標(biāo)點(diǎn):Daydream控制器模型前方會(huì)反射一條可見且一定距離的激光射線,并且有一個(gè)光標(biāo)點(diǎn)在射線末端。射線在使用鼠標(biāo)時(shí)會(huì)在電腦桌面顯示的光標(biāo)一樣用來告訴用戶所控制輸入設(shè)備的位置,而VR場景與電腦桌面不同的是:VR場景是3D的,所以在射線末端所添加的光標(biāo)點(diǎn)為的是告訴用戶與場景物體之間的距離。用戶與物體距離大于射線長度時(shí),射線末端并沒有光標(biāo)點(diǎn)而且無法與物體交互,用戶與物體距離小于射線長度時(shí),射線末端出現(xiàn)光標(biāo)點(diǎn)且可與物體交互。
④VR模式下運(yùn)動(dòng):在VR應(yīng)用程序中,通過VR模式下的運(yùn)動(dòng)讓用戶在虛擬場景中自由移動(dòng)來增加用戶VR沉浸體驗(yàn)。在Daydream中提供傳送、隧道、追逐相機(jī)三種移動(dòng)方式。由于追隨相機(jī)為第三人稱的移動(dòng)方式,所以本項(xiàng)目只實(shí)現(xiàn)了另外兩種運(yùn)動(dòng)方式。
⑤人機(jī)互動(dòng)(操控):本項(xiàng)目允許用戶使用Daydream控制器來對場景中的物體進(jìn)行交互,本場景所包含的不同類型交互為:打開滑動(dòng)抽屜、打開含有鉸鏈門的箱子、提起和放置不同重量的物體。
⑥替換手臂模型:本項(xiàng)目中用戶可以使用不同的圖形模型來替代使用場景的Daydream控制器模型。替換后的模型可以使用Daydream控制器進(jìn)行交互,從而在場景中更好地模擬出現(xiàn)實(shí)中的物體。在項(xiàng)目中,如果用戶執(zhí)行圖書、拉開抽屜等動(dòng)作,則圖書就成為用戶所操控的手臂,用戶可以通過控制器的按鈕來實(shí)現(xiàn)圖書放大以及翻頁等動(dòng)作。
4.3 Daydream渲染
在項(xiàng)目開始時(shí)使用傳統(tǒng)解決方案,即Unity中的烘焙技術(shù),雖然實(shí)現(xiàn)了較高的質(zhì)量的界面,但是出現(xiàn)了圖像失真、程序幀不穩(wěn)定等問題。由于顯示性能的高低對VR應(yīng)用程序至關(guān)重要,而且本項(xiàng)目需要在移動(dòng)設(shè)備上運(yùn)行,所以渲染問題是項(xiàng)目的有一個(gè)關(guān)鍵技術(shù)點(diǎn)。針對 渲染問題,使用Daydream Renderer(Daydream渲染器),它是由Daydream所提供的渲染工具包。本項(xiàng)目中使用Daydream Renderer中的優(yōu)化過的照明、著色器和編輯工具等,以此來在保證場景質(zhì)量的情況下,對場景渲染過程進(jìn)行優(yōu)化。項(xiàng)目著色器包的結(jié)構(gòu)如圖1所示。
渲染延遲是指從用戶移動(dòng)其頭部或移動(dòng)輸入設(shè)備到程序渲染該變化并展示在顯示器上的時(shí)間差。渲染延遲必須在300毫秒以內(nèi)才能夠讓用戶感到舒適的身臨其境感并且沒有不適感,如果等待時(shí)間太長,則用戶會(huì)感覺到響應(yīng)延遲,直接表現(xiàn)就是屏幕的模糊、延滯、卡頓。GVR為了將渲染延遲的盡可能地縮短到理想系統(tǒng)延遲,使用了異步重投影技術(shù)。
在項(xiàng)目開發(fā)過程中,需要在Unity編輯器播放模式中查看場景的效果,此方法更為快捷和便利,節(jié)省了構(gòu)建程序安裝包的時(shí)間。想要使用鍵盤與鼠標(biāo)來控制模擬器與頭顯,需要在場景中創(chuàng)建名為GvrControllerSimulator的空物體,物體無需設(shè)置空間坐標(biāo),只需存在于場景中即可。為空物體添加GvrControllerInput腳本代碼(組件),此組件為Daydream控制器API的主要入口,之后創(chuàng)建名為GvrEditorEmulator的空物體并添加GvrEditorEmulator腳本代碼,該組件用于在Unity編輯器中提供鼠標(biāo)模擬控制的頭部跟蹤。監(jiān)聽鍵盤鼠標(biāo)事件并調(diào)用ClickButton方法來手動(dòng)觸發(fā)模擬器按鍵狀態(tài),進(jìn)而模擬出控制器按下按鈕的行為。
5 ?項(xiàng)目后期完善工作的注意點(diǎn)與挑戰(zhàn)
5.1 圖像快速渲染
作為VR的顯示器需要快速渲染圖像,以便在用戶移動(dòng)頭部時(shí),控制器圍繞顯示器進(jìn)行更新,而不會(huì)出現(xiàn)明顯的延遲。顯示器必須具有低持久性,以防止用戶在移動(dòng)其頭部時(shí)出現(xiàn)運(yùn)動(dòng)模糊。像素持久性是指每幀顯示的實(shí)際點(diǎn)亮?xí)r間,但不包括黑色。低持久性就是讓屏幕只照亮畫面的一小部分。部分智能手機(jī)有低持久性的設(shè)置選擇模式,在運(yùn)行該應(yīng)用前應(yīng)開啟持久性模式,這樣可減少運(yùn)動(dòng)模糊以便減少。同樣FPS(Frame Rates)對VR顯示器與應(yīng)用也是一大挑戰(zhàn),所以,項(xiàng)目應(yīng)用程序應(yīng)該以60幀的穩(wěn)定運(yùn)行幀率作為最低性能要求,實(shí)際表明,任何運(yùn)行低于每秒90幀速率的VR應(yīng)用都可能引起方向混亂、惡心等不適癥狀,所以本項(xiàng)目需要在保證的內(nèi)容的情況下盡可能實(shí)現(xiàn)性能優(yōu)化。
5.2 應(yīng)用異步重映射技術(shù)
異步重映射是一種圖形顯示處理技術(shù),它可以保證在穩(wěn)定的幀頻率下舒適的用戶體驗(yàn)及幀率保持較高的值,即用戶感覺流暢不抖動(dòng)、不延滯、不模糊。即使在系統(tǒng)負(fù)載較重的情況下,也可以確保高性能的VR渲染。比如在當(dāng)用戶頭部旋轉(zhuǎn)時(shí),要能夠提供一致無抖動(dòng)、無延遲的運(yùn)動(dòng)。在該項(xiàng)目開發(fā)前期,由于場景中存在大量動(dòng)態(tài)場景對象與負(fù)責(zé)初始化的程序代碼,所以經(jīng)常出現(xiàn)場景加載后頭顯跟蹤失效、Physics Raycaster(物理射線)與Graphic Raycaster(圖形射線)使用不正常等問題,并出現(xiàn)用戶無法觸發(fā)場景UI所對應(yīng)的事件以及無法與場景中的動(dòng)態(tài)對象進(jìn)行交互,還出現(xiàn)過無法檢測用戶所操控的動(dòng)態(tài)對象等問題。在后期的開發(fā)編碼過程中還要針對幀的加載變化及幀的渲染進(jìn)行算法設(shè)計(jì)、代碼優(yōu)化,通過不丟幀、及時(shí)完成幀渲染來彌補(bǔ)加載幀過程的抖動(dòng)、延遲,從而解決大負(fù)載情況下的交互問題。
參考文獻(xiàn):
[1]向春宇.VR、AR與MR項(xiàng)目開發(fā)實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2018.
[2]胡良云.HTC Vive VR游戲開發(fā)實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2017.
[3]唯美映像.3ds Max 2013+VRay效果圖制作自學(xué)視頻教程[M].北京:清華大學(xué)出版社,2015.
[4]保羅·米利(Paul Mealy).虛擬現(xiàn)實(shí) VR 和增強(qiáng)現(xiàn)實(shí) AR 從內(nèi)容應(yīng)用到設(shè)計(jì)[M].人民郵電出版社,2017.