VR開發教程:如何創建一個VR項目

為了準備好學習使用Unity開發VR應用,我們首先要檢查下自己的電腦硬件和軟件配置是否滿足要求。簡單來說,顯卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上,內存8GB以上,要有兩個USB3.0接口,一個USB2.0接口,一個HDMI 1.3接口。

操作系統比較坑爹,不支持Mac,也不支持Linux。支持Win7,Win8,Win10。

當然,還要把自己的顯卡驅動升級到最新版本。

Oculus官方的檢測地址:

http://oculus.us5.list-manage.co ... 47&e=86f0296884

一旦完成了這種燒錢的工作,就該安裝Unity了。注意在打開Unity前要把DK2連接好并開啟。 在繼續之前,打開Oculus Configuration Utility應用,并檢查Demo Scene可以正常運行。注意在運行Demo Scene之前看可能需要在Oculus Configuration Utility中設置一個新用戶。

創建第一個VR項目

接下來我們將使用Unity創建一個簡單的VR項目demo,其效果是在VR頭盔中觀察一個立方體。如果你想研究更多VR示例,不妨下載我們在上一篇教程中提到的VR示例項目(Asset Store:https://www.assetstore.unity3d.com/en/#!/content/51519)。

Step 1

打開Unity,創建一個新的空項目。

說明一下,我當前用的Unity版本是5.3.1f1,可能你看到這篇教程的時候又已經升級換代了。

Step 2

在Unity的菜單中選擇Fiel- Build Settings,并選中PC,Mac& Linux Standalone。

Step 3

在場景中創建一個新的立方體,從菜單中選擇Game Object – 3D Object -Cube ,通過Translate工具把立方體放到默認的Main Camera 前面,類似下面。

Step 4

保存界面(File- Save Scene,或是使用快捷鍵)。

Step 5

在菜單中選擇Edit- Project Settings – Player,在”Other Settings“部分勾選”Virtual Reality Supported”

Step 6

點擊Unity界面上的Play按鈕進入Play模式。

如果之前的設置沒有問題,現在你應該可以通過DK2看到這個場景,四處看看,Unity中的攝像機將自動根據DK2的位置和旋轉變化反應。

出錯了怎么辦?

如果你沒有在DK2中看到期望的場景,那么檢查以下的事項:

1、確保你在打開Unity項目前就已經把DK2接好并且開啟了;

2、打開Oculus自帶的Oculus Configuration Utility,看看Demo Scene是不是可以正常運作;

3、更新你的顯卡驅動到最新版本;

4、確保你在電腦上裝了最新的Oculus Runtime 0.8,或更高版本;

當然,如果還是有問題,可以到論壇里面參與討論。(Virtual Reality:http://forum.unity3d.com/forums/virtual-reality.80/

關于VR開發的一些有用信息:

雖然VR應用開發和標準Unity應用開發很相似,不過還是有些區別需要注意的。

1、編輯器中顯示的幀速(Frame rate)

當你通過編輯器查看項目時,注意體驗上可能有些延遲,因為電腦需要將同樣的內容渲染兩次。所以在實際測試項目的時候,最好創建一個可執行版本,在測試設備上實際體驗。

2、攝像機的移動

注意,我們不能在Unity中直接移動VR攝像機。如果你希望調整攝像機的位置和旋轉,需要確保將它設置為其它游戲物體GameObject的子物體,然后通過所依附的物體進行移動。

關于這一點,可以查看VR Samples項目中的Flyer和Maze場景。

3、相機節點

左眼和右眼的攝像機并不是由Unity創建的。如果你在開發中需要獲取這些節點的位置,則必須使用InputTracking類。

如果你想要獲取場景中眼睛的不同位置(比如測試時),請使用下面的示例腳本,并將其attach到攝像機上。

C#腳本

using UnityEngine;

using UnityEngine.VR;

public class UpdateEyeAnchors : MonoBehaviour

{

GameObject[] eyes = new GameObject[2];

string[] eyeAnchorNames ={ “LeftEyeAnchor”, “RightEyeAnchor” };void Update()

{

for (int i = 0; i < 2; ++i)

{

// If the eye anchor is no longer a child of us, don’t use it

if (eyes!= null && eyes。transform.parent != transform)

{

eyes= null;

}

// If we don’t have an eye anchor, try to find one or create one

if (eyes== null)

{

Transform t = transform.Find(eyeAnchorNames);

if (t)

eyes= t.gameObject;

if (eyes== null)

{

eyes= new GameObject(eyeAnchorNames);

eyes。transform.parent = gameObject.transform;

}

}

// Update the eye transform

eyes。transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);

eyes。transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);

}

}

}

4、VR中的圖像效果(Image Effect)

在VR項目中使用眾多圖像效果是很奢侈的事情。考慮到你需要兩次渲染同一個場景(每只眼睛一次),因此很多當前經常使用的圖像效果對VR應用來說會很浪費,會嚴重影響游戲的運行幀速。

因為VR將用戶的眼睛置入一個虛擬的空間,因此部分圖像效果對VR來說沒有任何意義。舉例來說,深度視角、模糊效應和鏡頭光暈效果對VR來說沒有任何意義,因為在現實世界中我們是看不到這些效果的。不過如果以后VR頭戴設備可以支持眼動跟蹤,那么深度視角可能會有意義。

不過有些效果還是可以考慮使用的:比如抗鋸齒是有用的(特別是考慮到某些頭戴設備的低分辨率),色彩分級也很有用(關于這一點可以查看這個鏈接:Color Grading with Unity and the Asset Store:http://blogs.unity3d.com/2015/05 ... nd-the-asset-store/),對有些游戲來說Bloom會有用。不過在使用任何效果之前,最好先在游戲中實際測試下有沒有用。

Unity自身提供了很多圖像效果(Assets-Import Package-Effects),此外Asset Store里面也提供了很多效果,比如Colorful,Chromatica,Amplify Color,還有更多。

5、Render Scale

根據VR互動應用場景的復雜度和所運行的硬件環境,你可能需要更改render scale設置。通過此項設置可以調整鏡頭校正前texel:pixel的比率,這樣可以犧牲游戲性能來換取畫面的清晰度。

這項設置應該通過代碼進行,可以參考這里:

http://unity3d.com/cn/VRSettings.renderScale

通過使用以下代碼可以改變render scale的設置:

using UnityEngine;

using System.Collections;

using UnityEngine.VR;

namespace VRStandardAssets.Examples

{

public class ExampleRenderScale : MonoBehaviour

{

[SerializeField] private float m_RenderScale = 1f;

//The render scale。 Higher numbers = better quality, but trades performance

void Start ()

{

VRSettings.renderScale = m_RenderScale;

}

}

}

關于這項設置,可以參考我們的VR Samples,具體示例是Scenes/Examples/RenderScale場景。此外在MainMenu場景中也有該項設置的應用。

更改render scale的效果示例如下:

Unity的默認render scale是1.0,效果如下:

如果將render scale設置成1.5,可以看到顯示效果更銳利:

接下來把renderscale設置成0.5,可以看到像素化很嚴重:

根據游戲場景的不同,可以考慮降低render scale來提升游戲運行性能,或者通過增加render scale的數值讓畫面效果更銳利,但會以犧牲游戲運行性能作為代價。

好了,看到這里,你應該知道如何在Unity項目中整合VR,如何設置游戲中攝像機的移動,以及和非VR游戲相比應該如何使用圖像效果。

聯系方式:0755-81699111

課程網址: http://www.vrkuo.com/course/vr.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,250評論 6 530
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,923評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,041評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,475評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,253評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,801評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,882評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,023評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,530評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,494評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,639評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,177評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,890評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,289評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,552評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,242評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,626評論 2 370

推薦閱讀更多精彩內容