1. 程式人生 > >初探CardBoard:(1)在Unity中實現簡單VR場景

初探CardBoard:(1)在Unity中實現簡單VR場景

為何使用CardBoard

現在的VR越來越流行,各種裝置也是百花齊放。然而,對於研究VR剛剛起步的小白來說,昂貴的裝置(例如HTC)並不一定是最佳選擇。那麼Google 的CardBoard就映入了我眼前。

價格低廉

使用它僅僅需要以下裝置:

  1. 一個光學盒子 ,淘寶上只需要不到200塊錢,只是注意大小要能夠放下你的手機;
  2. 一個Android手機,這是唯一的花費點,一個好的手機總可以使你的體驗更加良好,最次也得Android5.0以上的手機;

相容性

Google 的SDK可以完美匯入到unity中。

前期準備

開始工程

一、簡單的環境佈置

為了測試方便,我們為場景新增幾個簡單的物體。

  1. 新增地板
    :新增一個cube,位置歸零,大小如圖設定:
    在這裡插入圖片描述
    為其建立一個藍色的Material,可以使地板呈現黃色
  2. 在地板上放置物體:我在這裡加了一個cube,一樣給他一個別的顏色的Materal
  3. 建立遊戲角色:在Hierarchy面板右鍵–>CreatEmpty,改名為Player,將其高度(Y)設定為成人高度(1.6-2)。將MainCamera放置為Player的子物體。ManCamera的位置歸零。
    在這裡插入圖片描述
  4. 場景調整:調整Player的X、Z位置,使相機可以看到cube,最終在Game檢視中與此圖類似
    在這裡插入圖片描述
  5. 切換平臺:切換到Android平臺(新版Cardboard SDK 必須在Android 或者 Ios 平臺開發測試)。並在Player Settings中–>XRSetting–>在這裡插入圖片描述

    勾選VR支援並且選擇Cardboard開發。

至此,我們前期的場景已經佈置完畢。

二、匯入SDK

將下載的最新的CardBoard SDK 包匯入unity。

三、SDK基礎元件說明

  1. GvrEditorEmulator 預製體:位於GoogleVR–>Prefab下。功能是可以在unity測試中控制相機轉動,然而,打包後手機陀螺儀並不受它控制,所以打包apk有沒有它無所謂,測試有他比較方便。
  2. GvrEventSystem 預製體:位於GoogleVR–>Prefab–>EventSystem下,功能是處理VR中的互動事件,類似於做UI時會增加EventSystem.
  3. GvrReticlePointer 預製體:位於GoogleVR–>Prefab–>CardBoard下,功能是為相機新增一個瞄準星。
  4. GvrPointerPhysicsRaycaster.cs 指令碼 :位於GoogleVR–>Scripts–>EventSystem下,功能是可以為相機發射一條射線,配合GvrReticlePointer,可以與瞄準的物體觸發事件。

一個基本功能的VR場景暫時只會用到SDK中的這幾個預製體與指令碼。

四、將之前的場景佈置為VR場景

  1. 為MainCamera新增射線:將*GvrPointerPhysicsRaycaster.cs 指令碼拖到MainCamera上。
    在這裡插入圖片描述
  2. 為MainCamera新增瞄準器:將GvrReticlePointer 預製體新增到camara下。
    在這裡插入圖片描述
    為了觀察方便,我將瞄準器材質(Material)換為紅色:
    左鍵
    在這裡插入圖片描述
  3. 為Cube物體新增Event Trigger:這樣,cube可以檢測到相機射線(預製體發出的)與cube的碰撞,從而做出反應。
    在這裡插入圖片描述
  4. 將GvrEventSystem 預製體新增到Hierarchy面板:用於檢測與響應碰撞。
    在這裡插入圖片描述
  5. 將GvrEditorEmulator 預製體新增到Hierarchy面板:用來在測試中使滑鼠可以控制角度。
    在這裡插入圖片描述

五、在unity中測試

執行專案,使用Alt+左鍵 或者Ctrl+左鍵可以控制角度。注意觀察準星的變化。

  1. 準星不在cube上
    在這裡插入圖片描述
  2. 將準星瞄準cube
    在這裡插入圖片描述

注意:在測試中發現,場景不是左右畫面。這是因為Google在新出的SDK中取消了GvrViewerMain這個預製體,在老的版本,GvrViewerMain預製體用來體現左右VR模式。在新的SDK中,不再支援左右分畫面,只有打包成為apk在手機上才能看到左右VR模式的畫面。

六、打包為apk傳到手機

記得選擇Android API版本,一定要大於5.1才可以支援VR模式。
在這裡插入圖片描述

一些問題與解決

打包時遇到的問題

當你打包時遇到一些奇奇怪怪的問題時,可以嘗試提高Android API Level,這有可能是由於Google的SDK對低版本的平臺支援不夠好造成的。

相關推薦

初探CardBoard1Unity實現簡單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開運算,閉運算,形態學梯度,頂帽,黑帽

來講 極小值 -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 更加全面的一篇

機器學習十大經典演算法1C4.5演算法

C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法. C4.5演算法繼承了ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進: 1)用資訊增益率來選擇屬性,克服了用資訊增益選擇屬性時偏向選擇取值多的屬性的不足;   &nbs

【 系統配置 】1Ubuntu18.04 + Tesla K40c + Cuda9.0 + Cuddn7.0

基於Ubuntu的配置環境: (1)Ubuntu版本:18.04 (2)顯示卡型號:Tesla K40c 一. 查詢顯示卡驅動及CUDDN / CUDA 的版本匹配型別 1. 查詢顯示卡型號 安裝驅動之前首先得把顯示卡型號弄清楚咯,在ubuntu命令視窗鍵入: $ lspci |

【機器人學】機器人開源專案KDL原始碼學習7examples的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實現方法1opencv自帶的cv2.KalmanFilter 2pykalman演算法庫

預備知識: 卡爾曼濾波的理論知識: 具體的理論知識可參考以下博文,非常感謝相關博主的貢獻: 以一個滑鼠追蹤的任務分析兩種卡爾曼濾波的實現方式: (一)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工作原理:                  

【理論部分】1SVM理解與數學證明

一. SVM(Support Vector Machine)匯入 首先說明一下,SVM提出的目的是為了解決在低維空間中線性不可分的二分類問題,通過將資料空間對映到高維,使得資料在高維空間中是線性可分的,以此來完成優化目標。 線性分類 假設,某一個給定的資料

TensorFlow筆記1——TensorFlow的相關基本概念

前言 Tensorflow 是一個程式設計系統,使用圖(graph)來表示計算任務,圖(graph)中的節點稱之為 op (operation),一個 op 獲得 0 個或多個 Tensor,執行計算,產生 0 個或多個 Tensor。Tensor 看作是一個 n 維的陣列或列表。圖必須

MongoDB學習筆記1MongoDB在Win10下的安裝及配置

1. 下載 下載連結: https://www.mongodb.com/download-center?jmp=nav#community   2. 安裝 3. 配置 1. 安裝完的目錄結構 [C:\Program Fil

MongoDB資料庫關係表示和設計1巢狀文件和引用連結

使用資料的時候,一個數據項常常和另外的一個或多個數據項產生關係,比如一個“人”物件,有一個名字,可能有多個電話號碼,以及多個子女,等等。 在傳統的SQL資料庫中,關係被分為一個個表(table),在表中,每個資料項以主鍵(primary key)標識,而一個表的主鍵又