關於VR開發中的穿牆問題隨想

  在VR開發中,用戶將以第一人稱的視角進入虛擬世界,即用戶同時身處兩個座標系:1. 現實世界座標系(如房間的座標系),用戶的身體處於這個座標系 2. VR世界座標系,用戶的感官處於這個座標系,即用戶以爲我處於這裏。blog

  而如何同步這兩個座標系HTC VIVE已經幫咱們解決了。由HTC VIVE開發的應用,在應用剛初始運行階段,將用戶所處的現實世界的位置和VR世界裏的位置進行一次匹配,而後以此爲基準來同步二者的關係,將現實中的移動經過空間定位映射到VR空間裏的移動。遊戲

  可是這也產生了一個問題。在傳統的二維屏幕的遊戲中,一旦遊戲角色走到牆體,能夠用碰撞體擋住,不讓其繼續穿牆運動。而VR應用卻不能阻擋用戶的穿牆行動,緣由是VR空間裏的移動是根據人在現實世界裏的走動來同步,只要個人房間夠大,我就能夠一直朝着一個方向走下去,而VR世界裏的攝像機也將一直朝一個方向運動,這樣勢不可免將形成穿牆等問題,這並非咱們想要的結果。開發

 

那麼要如何解決這個問題呢?同步

這裏有兩個想法:用戶體驗

1、軟硬件結合。現實也造一堵和虛擬世界對應的牆,但這基本不符合實際(Haha~),Pass掉。硬件

2、強行阻止VR虛擬角色繼續前行。方法

而第二種方法又有兩種解決方式:im

1. 位移補償: 虛擬角色在碰撞到牆時還繼續往前走時控制其進行反向位移補償或者將整個場景都往其運動方向進行移動補償。項目

2. 碰撞體。和傳統的遊戲同樣採用碰撞體阻止其繼續前行,但碰撞體的強行插入將可能形成抖動。img

這兩個辦法其實就是強行讓兩個世界座標的位移映射失效。雖然能夠達到不穿牆的效果,可是又會帶來新的問題。

1. 用戶的感覺:什麼鬼?爲何我在原地踏步?周圍的東西爲何有種輕飄飄的感受?看來我必定是要昇天了~

2. 兩個世界座標系的原點產生偏移。

那麼爲何會產生偏移呢?

下面用一張圖來解釋:

  這個問題在通常狀況下可能不大,但當處於一個較小的房間而又頻繁撞牆時,因爲偏差的積累,問題就產生了。我人已經在牆邊了,須要交互的物體卻還在離牆更遠的地方,這可叫我如何是好?

 

綜上:如何不讓用戶穿牆又能夠規避缺陷:

1. 在有穿牆限制的同時提供手柄的瞬移功能,就不存在座標系偏移形成的沒法交互的後果。但仍然難以解決用戶原地踏步感受不良的問題。

2. 沒有穿牆限制,在接近牆繼續向前走時,經過UI或其餘方式對用戶進行提示:禁止繼續往前走。在牆外佈置一些空的場景,若用戶執意要穿牆,走出去看不到什麼新鮮的東西,也不會再嘗試了,應該不會有人這麼無聊吧,haha~

其實我是比較傾向使用第二種的,畢竟用戶體驗更天然、連貫性更好!具體採用哪一種就要根據實際項目需求了。

 

  換個思路想,阻止不了穿牆也未必是件壞事,由於咱們能夠利用它來放置一些彩蛋,好比在一個沒法打開的木桶裏放置一些意外的驚喜,說不定用戶感受會更好~若是我把頭探出牆外忽然看到一個鬼臉對我說:"Catch you!"」那我必定會很「驚喜」的。

相關文章
相關標籤/搜索