初探CardBoard:(1)在Unity中實現簡單VR場景
為何使用CardBoard
現在的VR越來越流行,各種裝置也是百花齊放。然而,對於研究VR剛剛起步的小白來說,昂貴的裝置(例如HTC)並不一定是最佳選擇。那麼Google 的CardBoard就映入了我眼前。
價格低廉
使用它僅僅需要以下裝置:
- 一個光學盒子 ,淘寶上只需要不到200塊錢,只是注意大小要能夠放下你的手機;
- 一個Android手機,這是唯一的花費點,一個好的手機總可以使你的體驗更加良好,最次也得Android5.0以上的手機;
相容性
Google 的SDK可以完美匯入到unity中。
前期準備
開始工程
一、簡單的環境佈置
為了測試方便,我們為場景新增幾個簡單的物體。
- 新增地板
為其建立一個藍色的Material,可以使地板呈現黃色 - 在地板上放置物體:我在這裡加了一個cube,一樣給他一個別的顏色的Materal
- 建立遊戲角色:在Hierarchy面板右鍵–>CreatEmpty,改名為Player,將其高度(Y)設定為成人高度(1.6-2)。將MainCamera放置為Player的子物體。ManCamera的位置歸零。
- 場景調整:調整Player的X、Z位置,使相機可以看到cube,最終在Game檢視中與此圖類似
- 切換平臺:切換到Android平臺(新版Cardboard SDK 必須在Android 或者 Ios 平臺開發測試)。並在Player Settings中–>XRSetting–>
勾選VR支援並且選擇Cardboard開發。
至此,我們前期的場景已經佈置完畢。
二、匯入SDK
將下載的最新的CardBoard SDK 包匯入unity。
三、SDK基礎元件說明
- GvrEditorEmulator 預製體:位於GoogleVR–>Prefab下。功能是可以在unity測試中控制相機轉動,然而,打包後手機陀螺儀並不受它控制,所以打包apk有沒有它無所謂,測試有他比較方便。
- GvrEventSystem 預製體:位於GoogleVR–>Prefab–>EventSystem下,功能是處理VR中的互動事件,類似於做UI時會增加EventSystem.
- GvrReticlePointer 預製體:位於GoogleVR–>Prefab–>CardBoard下,功能是為相機新增一個瞄準星。
- GvrPointerPhysicsRaycaster.cs 指令碼 :位於GoogleVR–>Scripts–>EventSystem下,功能是可以為相機發射一條射線,配合GvrReticlePointer,可以與瞄準的物體觸發事件。
一個基本功能的VR場景暫時只會用到SDK中的這幾個預製體與指令碼。
四、將之前的場景佈置為VR場景
- 為MainCamera新增射線:將*GvrPointerPhysicsRaycaster.cs 指令碼拖到MainCamera上。
- 為MainCamera新增瞄準器:將GvrReticlePointer 預製體新增到camara下。
為了觀察方便,我將瞄準器材質(Material)換為紅色:
- 為Cube物體新增Event Trigger:這樣,cube可以檢測到相機射線(預製體發出的)與cube的碰撞,從而做出反應。
- 將GvrEventSystem 預製體新增到Hierarchy面板:用於檢測與響應碰撞。
- 將GvrEditorEmulator 預製體新增到Hierarchy面板:用來在測試中使滑鼠可以控制角度。
五、在unity中測試
執行專案,使用Alt+左鍵 或者Ctrl+左鍵可以控制角度。注意觀察準星的變化。
- 準星不在cube上:
- 將準星瞄準cube:
注意:在測試中發現,場景不是左右畫面。這是因為Google在新出的SDK中取消了GvrViewerMain這個預製體,在老的版本,GvrViewerMain預製體用來體現左右VR模式。在新的SDK中,不再支援左右分畫面,只有打包成為apk在手機上才能看到左右VR模式的畫面。
六、打包為apk傳到手機
記得選擇Android API版本,一定要大於5.1才可以支援VR模式。
一些問題與解決
打包時遇到的問題
當你打包時遇到一些奇奇怪怪的問題時,可以嘗試提高Android API Level,這有可能是由於Google的SDK對低版本的平臺支援不夠好造成的。
相關推薦
初探CardBoard:(1)在Unity中實現簡單VR場景
為何使用CardBoard 現在的VR越來越流行,各種裝置也是百花齊放。然而,對於研究VR剛剛起步的小白來說,昂貴的裝置(例如HTC)並不一定是最佳選擇。那麼Google 的CardBoard就映入了我眼前。 價格低廉 使用它僅僅需要以下裝置: 一個光學盒子
在實際的開發工作中,對字串的處理是最常見的程式設計任務。本題目即是要求程式對使用者輸入的串進行處理。具體規則如下: (1)把每個單詞的首字母變為大寫。 (2)把數字與字母之間用下劃線字元(_)分開,使得更
在實際的開發工作中,對字串的處理是最常見的程式設計任務。本題目即是要求程式對使用者輸入的串進行處理。具體規則如下: (1)把每個單詞的首字母變為大寫。 (2)把數字與字母之間用下劃線字元(_)分開,使得更清晰; (3)把單詞中間有多個空格的調整為1個空格。 &
給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”
題目描述 給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 輸入描述: 輸入資料有多組,每組佔一行,包含一個句子(句子長度小於100
輸入m個學生,每個學生有4門課,在主調函式中輸入學生的相關資訊,編寫三個函式: (1)求第一門課的平均分; (2)找出有兩門課以上不及格的學生,並輸出他們的學號和全部成績,要求用指標函式實現:fl
輸入m個學生,每個學生有4門課,在主調函式中輸入學生的相關資訊,編寫三個函式: (1)求第一門課的平均分; (2)找出有兩門課以上不及格的學生,並輸出他們的學號和全部成績,要求用指標函式實現:float*Search(float(*p)[4],int n); (3)找出
做一個詞頻統計程式,該程式具有以下功能 基本要求: (1)可匯入任意英文文字檔案 (2)統計該英文檔案中單詞數和各單詞出現的頻率(次數),並能將單詞按字典順序輸出。 (3)將單詞及頻率寫入檔案。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOExcep
形態學濾波:(1)腐蝕與膨脹 (2)開運算,閉運算,形態學梯度,頂帽,黑帽
來講 極小值 -h 明顯 基本 極限 元素 腐蝕 黑帽 一、形態學概述 圖像處理中的形態學一般指的是數學形態學。 數學形態學是一門建立在格論和拓撲學基礎之上的圖像分析學科,是數學形態學圖像處理的基本理論。其基本運算包括:二值腐蝕和膨脹,二值開閉運算,骨架抽取,極限腐
RCNN,Fast RCNN,Faster RCNN 的前生今世:(1) Selective Search
size esc over tlab 抽樣 ocs c++ watermark 由於 Selective Search for Object Recoginition 這篇論文是J.R.R. Uijlings發表在2012 IJCV上的一篇文章,主要介紹了選擇性搜索(Sel
深度學習分割:(1)資料彙總
時間關係,備份一些深度學習分割演算法相關的部落格和介紹文章。 分割演算法綜述 介紹了幾個比較經典且非常重要的深度學習分割演算法。 原作地址:https://blog.csdn.net/weixin_41923961/article/details/80946586 更加全面的一篇
機器學習十大經典演算法:(1)C4.5演算法
C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法. C4.5演算法繼承了ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進: 1)用資訊增益率來選擇屬性,克服了用資訊增益選擇屬性時偏向選擇取值多的屬性的不足; &nbs
【 系統配置 】:(1)Ubuntu18.04 + Tesla K40c + Cuda9.0 + Cuddn7.0
基於Ubuntu的配置環境: (1)Ubuntu版本:18.04 (2)顯示卡型號:Tesla K40c 一. 查詢顯示卡驅動及CUDDN / CUDA 的版本匹配型別 1. 查詢顯示卡型號 安裝驅動之前首先得把顯示卡型號弄清楚咯,在ubuntu命令視窗鍵入: $ lspci |
【機器人學】機器人開源專案KDL原始碼學習:(7)examples中的CMakeList.txt檔案解讀
通過學習KDL開源專案的程式碼可以學習CMake構建程式的知識,現簡單介紹一下orocos_kinematics_dynamics-master\orocos_kinematics_dynamics-master\orocos_kdl\examples\CMakeList.txt檔案的指令。
給出n個學生的考試成績表,每條記錄由學號、姓名和分數和名次組成,設計演算法完成下列操作: (1)設計一個顯示對學生資訊操作的選單函式如下所示: *************************
給出n個學生的考試成績表,每條記錄由學號、姓名和分數和名次組成,設計演算法完成下列操作: (1)設計一個顯示對學生資訊操作的選單函式如下所示: ************************* 1、錄
maven歸納:(1)基礎
1.什麼是maven Maven是基於專案物件模型(POM),可以通過一小段描述資訊來管理專案的構建,報告和文件的軟體專案管理工具。 Maven是跨平臺的專案管理工具。主要服務於基於Java平臺的專案構建,依賴管理和專案資訊管理。 Maven主要有兩
卡爾曼濾波器的兩種python實現方法:(1)opencv自帶的cv2.KalmanFilter (2)pykalman演算法庫
預備知識: 卡爾曼濾波的理論知識: 具體的理論知識可參考以下博文,非常感謝相關博主的貢獻: 以一個滑鼠追蹤的任務分析兩種卡爾曼濾波的實現方式: (一)opencv自帶的cv2.KalmanFilter 該卡爾曼濾波器演算法分為兩個階段: 預測
資料結構實驗一:(1)(順序表)線性表的各種操作SqList
#include<iostream> #include<malloc.h> #include<cstdio> #define MAXSIZE 10 using namespace std; //typedef struct SqList
Ajax----學習(1)----js中的ajax
Ajax 作用:一種不用重新整理整個頁面便可以於伺服器通訊的方法。 Ajax工作原理:
【理論部分】:(1)SVM理解與數學證明
一. SVM(Support Vector Machine)匯入 首先說明一下,SVM提出的目的是為了解決在低維空間中線性不可分的二分類問題,通過將資料空間對映到高維,使得資料在高維空間中是線性可分的,以此來完成優化目標。 線性分類 假設,某一個給定的資料
TensorFlow筆記(1)——TensorFlow中的相關基本概念
前言 Tensorflow 是一個程式設計系統,使用圖(graph)來表示計算任務,圖(graph)中的節點稱之為 op (operation),一個 op 獲得 0 個或多個 Tensor,執行計算,產生 0 個或多個 Tensor。Tensor 看作是一個 n 維的陣列或列表。圖必須
MongoDB學習筆記:(1)MongoDB在Win10下的安裝及配置
1. 下載 下載連結: https://www.mongodb.com/download-center?jmp=nav#community 2. 安裝 3. 配置 1. 安裝完的目錄結構 [C:\Program Fil
MongoDB資料庫關係表示和設計:(1)巢狀文件和引用連結
使用資料的時候,一個數據項常常和另外的一個或多個數據項產生關係,比如一個“人”物件,有一個名字,可能有多個電話號碼,以及多個子女,等等。 在傳統的SQL資料庫中,關係被分為一個個表(table),在表中,每個資料項以主鍵(primary key)標識,而一個表的主鍵又