閆斌

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