VR開(kāi)發(fā)教程:如何創(chuàng)建一個(gè)VR項(xiàng)目

為了準(zhǔn)備好學(xué)習(xí)使用Unity開(kāi)發(fā)VR應(yīng)用,我們首先要檢查下自己的電腦硬件和軟件配置是否滿(mǎn)足要求。簡(jiǎn)單來(lái)說(shuō)换衬,顯卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上既鞠,內(nèi)存8GB以上,要有兩個(gè)USB3.0接口盖文,一個(gè)USB2.0接口嘱蛋,一個(gè)HDMI 1.3接口。

操作系統(tǒng)比較坑爹五续,不支持Mac洒敏,也不支持Linux。支持Win7疙驾,Win8凶伙,Win10。

當(dāng)然它碎,還要把自己的顯卡驅(qū)動(dòng)升級(jí)到最新版本函荣。

Oculus官方的檢測(cè)地址:

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

一旦完成了這種燒錢(qián)的工作,就該安裝Unity了扳肛。注意在打開(kāi)Unity前要把DK2連接好并開(kāi)啟傻挂。 在繼續(xù)之前,打開(kāi)Oculus Configuration Utility應(yīng)用挖息,并檢查Demo Scene可以正常運(yùn)行金拒。注意在運(yùn)行Demo Scene之前看可能需要在Oculus Configuration Utility中設(shè)置一個(gè)新用戶(hù)。

創(chuàng)建第一個(gè)VR項(xiàng)目

接下來(lái)我們將使用Unity創(chuàng)建一個(gè)簡(jiǎn)單的VR項(xiàng)目demo套腹,其效果是在VR頭盔中觀察一個(gè)立方體绪抛。如果你想研究更多VR示例,不妨下載我們?cè)谏弦黄坛讨刑岬降腣R示例項(xiàng)目(Asset Store:https://www.assetstore.unity3d.com/en/#沉迹!/content/51519)睦疫。

Step 1

打開(kāi)Unity,創(chuàng)建一個(gè)新的空項(xiàng)目鞭呕。

說(shuō)明一下,我當(dāng)前用的Unity版本是5.3.1f1宛官,可能你看到這篇教程的時(shí)候又已經(jīng)升級(jí)換代了葫松。

Step 2

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

Step 3

在場(chǎng)景中創(chuàng)建一個(gè)新的立方體,從菜單中選擇Game Object – 3D Object -Cube 亥揖,通過(guò)Translate工具把立方體放到默認(rèn)的Main Camera 前面珊擂,類(lèi)似下面圣勒。

Step 4

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

Step 5

在菜單中選擇Edit- Project Settings – Player圣贸,在”O(jiān)ther Settings“部分勾選”Virtual Reality Supported”

Step 6

點(diǎn)擊Unity界面上的Play按鈕進(jìn)入Play模式。

如果之前的設(shè)置沒(méi)有問(wèn)題扛稽,現(xiàn)在你應(yīng)該可以通過(guò)DK2看到這個(gè)場(chǎng)景吁峻,四處看看,Unity中的攝像機(jī)將自動(dòng)根據(jù)DK2的位置和旋轉(zhuǎn)變化反應(yīng)在张。

出錯(cuò)了怎么辦?

如果你沒(méi)有在DK2中看到期望的場(chǎng)景帮匾,那么檢查以下的事項(xiàng):

1啄骇、確保你在打開(kāi)Unity項(xiàng)目前就已經(jīng)把DK2接好并且開(kāi)啟了;

2瘟斜、打開(kāi)Oculus自帶的Oculus Configuration Utility肠缔,看看Demo Scene是不是可以正常運(yùn)作;

3哼转、更新你的顯卡驅(qū)動(dòng)到最新版本明未;

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

當(dāng)然,如果還是有問(wèn)題佣蓉,可以到論壇里面參與討論披摄。(Virtual Reality:http://forum.unity3d.com/forums/virtual-reality.80/

關(guān)于VR開(kāi)發(fā)的一些有用信息:

雖然VR應(yīng)用開(kāi)發(fā)和標(biāo)準(zhǔn)Unity應(yīng)用開(kāi)發(fā)很相似,不過(guò)還是有些區(qū)別需要注意的勇凭。

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

當(dāng)你通過(guò)編輯器查看項(xiàng)目時(shí),注意體驗(yàn)上可能有些延遲虾标,因?yàn)殡娔X需要將同樣的內(nèi)容渲染兩次寓盗。所以在實(shí)際測(cè)試項(xiàng)目的時(shí)候,最好創(chuàng)建一個(gè)可執(zhí)行版本璧函,在測(cè)試設(shè)備上實(shí)際體驗(yàn)傀蚌。

2、攝像機(jī)的移動(dòng)

注意蘸吓,我們不能在Unity中直接移動(dòng)VR攝像機(jī)善炫。如果你希望調(diào)整攝像機(jī)的位置和旋轉(zhuǎn),需要確保將它設(shè)置為其它游戲物體GameObject的子物體库继,然后通過(guò)所依附的物體進(jìn)行移動(dòng)箩艺。

關(guān)于這一點(diǎn)窜醉,可以查看VR Samples項(xiàng)目中的Flyer和Maze場(chǎng)景。

3艺谆、相機(jī)節(jié)點(diǎn)

左眼和右眼的攝像機(jī)并不是由Unity創(chuàng)建的榨惰。如果你在開(kāi)發(fā)中需要獲取這些節(jié)點(diǎn)的位置,則必須使用InputTracking類(lèi)擂涛。

如果你想要獲取場(chǎng)景中眼睛的不同位置(比如測(cè)試時(shí))读串,請(qǐng)使用下面的示例腳本,并將其attach到攝像機(jī)上撒妈。

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項(xiàng)目中使用眾多圖像效果是很奢侈的事情馒稍∶笊冢考慮到你需要兩次渲染同一個(gè)場(chǎng)景(每只眼睛一次),因此很多當(dāng)前經(jīng)常使用的圖像效果對(duì)VR應(yīng)用來(lái)說(shuō)會(huì)很浪費(fèi)纽谒,會(huì)嚴(yán)重影響游戲的運(yùn)行幀速。

因?yàn)閂R將用戶(hù)的眼睛置入一個(gè)虛擬的空間如输,因此部分圖像效果對(duì)VR來(lái)說(shuō)沒(méi)有任何意義鼓黔。舉例來(lái)說(shuō)央勒,深度視角、模糊效應(yīng)和鏡頭光暈效果對(duì)VR來(lái)說(shuō)沒(méi)有任何意義澳化,因?yàn)樵诂F(xiàn)實(shí)世界中我們是看不到這些效果的崔步。不過(guò)如果以后VR頭戴設(shè)備可以支持眼動(dòng)跟蹤,那么深度視角可能會(huì)有意義缎谷。

不過(guò)有些效果還是可以考慮使用的:比如抗鋸齒是有用的(特別是考慮到某些頭戴設(shè)備的低分辨率)井濒,色彩分級(jí)也很有用(關(guān)于這一點(diǎn)可以查看這個(gè)鏈接:Color Grading with Unity and the Asset Store:http://blogs.unity3d.com/2015/05 ... nd-the-asset-store/),對(duì)有些游戲來(lái)說(shuō)Bloom會(huì)有用列林。不過(guò)在使用任何效果之前瑞你,最好先在游戲中實(shí)際測(cè)試下有沒(méi)有用。

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

5嫩实、Render Scale

根據(jù)VR互動(dòng)應(yīng)用場(chǎng)景的復(fù)雜度和所運(yùn)行的硬件環(huán)境刽辙,你可能需要更改render scale設(shè)置。通過(guò)此項(xiàng)設(shè)置可以調(diào)整鏡頭校正前texel:pixel的比率甲献,這樣可以犧牲游戲性能來(lái)?yè)Q取畫(huà)面的清晰度宰缤。

這項(xiàng)設(shè)置應(yīng)該通過(guò)代碼進(jìn)行,可以參考這里:

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

通過(guò)使用以下代碼可以改變r(jià)ender scale的設(shè)置:

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桶略;

}

}

}

關(guān)于這項(xiàng)設(shè)置语淘,可以參考我們的VR Samples,具體示例是Scenes/Examples/RenderScale場(chǎng)景际歼。此外在MainMenu場(chǎng)景中也有該項(xiàng)設(shè)置的應(yīng)用惶翻。

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

Unity的默認(rèn)render scale是1.0,效果如下:

如果將render scale設(shè)置成1.5鹅心,可以看到顯示效果更銳利:

接下來(lái)把renderscale設(shè)置成0.5吕粗,可以看到像素化很?chē)?yán)重:

根據(jù)游戲場(chǎng)景的不同,可以考慮降低render scale來(lái)提升游戲運(yùn)行性能旭愧,或者通過(guò)增加render scale的數(shù)值讓畫(huà)面效果更銳利颅筋,但會(huì)以犧牲游戲運(yùn)行性能作為代價(jià)宙暇。

好了,看到這里议泵,你應(yīng)該知道如何在Unity項(xiàng)目中整合VR占贫,如何設(shè)置游戲中攝像機(jī)的移動(dòng),以及和非VR游戲相比應(yīng)該如何使用圖像效果先口。

聯(lián)系方式:0755-81699111

課程網(wǎng)址: http://www.vrkuo.com/course/vr.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末型奥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碉京,更是在濱河造成了極大的恐慌厢汹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件收夸,死亡現(xiàn)場(chǎng)離奇詭異坑匠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)卧惜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)厘灼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咽瓷,你說(shuō)我怎么就攤上這事设凹。” “怎么了茅姜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵闪朱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我钻洒,道長(zhǎng)奋姿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任称诗,我火速辦了婚禮,結(jié)果婚禮上头遭,老公的妹妹穿的比我還像新娘寓免。我一直安慰自己,他們只是感情好计维,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布袜香。 她就那樣靜靜地躺著,像睡著了一般鲫惶。 火紅的嫁衣襯著肌膚如雪蜈首。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音疾就,去河邊找鬼澜术。 笑死艺蝴,一個(gè)胖子當(dāng)著我的面吹牛猬腰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猜敢,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼姑荷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了缩擂?” 一聲冷哼從身側(cè)響起鼠冕,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胯盯,沒(méi)想到半個(gè)月后懈费,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡博脑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年憎乙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叉趣。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泞边,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疗杉,到底是詐尸還是另有隱情阵谚,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布烟具,位于F島的核電站梢什,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏朝聋。R本人自食惡果不足惜嗡午,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玖翅。 院中可真熱鬧翼馆,春花似錦、人聲如沸金度。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猜极。三九已至中姜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丢胚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工翩瓜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人携龟。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓兔跌,卻偏偏與公主長(zhǎng)得像锄列,于是被迫代替她去往敵國(guó)和親它呀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容