當前位置:
首頁 > 科技 > 讓角色活過來!揭秘多人VR環境下如何利用有限追蹤數據生成全身動態

讓角色活過來!揭秘多人VR環境下如何利用有限追蹤數據生成全身動態

設備追蹤所能獲得的數據是有限的,這導致我們在VR中的形象通常就只是一雙飄浮著的手。然而,我們不可能和一個只有頭和手的遊戲角色聊天社交或者並肩作戰。利用有限的追蹤數據生成完整的全身角色動態,這對VR社交和多人遊戲至關重要。

P?rtel Lang是一個獨立遊戲開發者,致力於研究遊戲人物的動態系統構建。他成立了一家專門研究動作演算法的公司。今年,為了開發VR遊戲Dead and Buried,P?rtel Lang又領導研發了一套全新的VR運動解決方案,名為VRIK。

這篇文章介紹了VRIK開發過程中遇到的主要挑戰和相應的解決方法,包括如何利用有限的頭部和手部運動信息設計出可信的全身運動,如何設計脊柱、下肢和手臂的運動,如何處理角色的移動。

如何在多人VR遊戲中解決IK(Inverse Kinetics)問題

消費級VR產品的興起為遊戲的設計和程序構造帶了來許多新的挑戰,其中就包括關於角色的運動。我在們VR中看到的自己是什麼樣的?我們在VR中看到的別人又是什麼樣的?現在的動作追蹤技術僅僅局限於用戶的頭部和手部,那麼,我們應該如何呈現用戶的軀體?

現在市面上絕大多數的VR遊戲根本不去設計玩家的身體。然而,在多人VR遊戲中,玩家總要看到其他玩家,那就需要做出其他玩家的身體,總不能讓玩家看著隊友就一雙手和一個腦袋飄在空中吧。

這裡的難題在於,如何用僅有的動作追蹤數據生成合理可信的全身身軀,不會讓人覺得彆扭、覺得假,要能夠盡量保持玩家的沉浸感和臨場感。

這篇文章給出了一個新的反向運動學(inverse-kinematics,先確定子骨骼位置,反向推導出其所在骨骼鏈上n級父骨骼位置,從而確定整條骨骼鏈的方法)解決方案,叫做VRIK. 這個解決方案是為Oculus平台上一個多人在線第一人稱射擊遊戲Dead and Buried開發的。在這個遊戲中,需要完整呈現出玩家和其他玩家的遊戲化身。這篇文章將介紹在開發過程中遇到的主要挑戰和解決辦法。

從已有追蹤數據生成全身動態

VR頭顯和手部控制器可以提供這樣的數據:首先是玩家的位置,這是一個三維矢量;然後是頭顯和兩個手部控制器分別的旋轉信息,是一個包含四個信息的數據。但是,設備幾乎給不出什麼關於玩家軀幹姿勢的信息。通常來說,對於獲得的信息有幾種處理方式。反向動力學是一種常見的處理末端感受器(在這裡就是手和頭)位置信息,利用這些這些信息來生成整個關節鏈角度的技術。但是在現在的條件下,數據量不足以僅靠反向動力學技術本身生成的結果。

讓角色活過來!揭秘多人VR環境下如何利用有限追蹤數據生成全身動態

完全相同的控制器位置對應的不同姿態

僅僅憑藉頭部和手部的追蹤信息無法得出確定的位置,這意味著在處理這個任務時需要引入一些實際經驗。距離控制器佩戴位置越遠的身體部位,越容易出現計算錯誤從而破壞沉浸感。我們只能「猜」,但是我們要盡量利用手頭的信息,猜得聰明一點兒。在這裡,觀察人們玩遊戲時的動作能提供很多幫助和啟發。

要創造出好的動作處理方案,要注意以下幾個主要問題:

  • 找到最放鬆的姿勢。根據觀察,這意味著在能夠模擬大部分人體動作的同時,避免極端角度和長時間保持單一姿勢。在多人遊戲里,還要注意手勢和頭部姿勢的表達要自然。
  • 動作要好看,還要有Feel。維持動作的美觀和風格非常重要,要配合遊戲的主題,符合角色的身份,即使有些動作和玩家的真實動作不一致,也要保持遊戲角色動作的美觀。
  • 移動動態。控制器無法得到關於玩家下半部分軀體姿勢的信息,那我們怎麼知道應該往哪兒擱腳呢?是選模擬的演算法、程序性計算的演算法,還是使用某種混合解決方法?
  • 保持平衡。由於手和頭是和控制器綁定了,所以腳的位置和脊柱的彎曲特別重要,關係到最終的姿勢是否平衡。
  • 支持不同的身體比例。無論是玩家還是遊戲中的角色,樣子都是多種多樣。動作設計要支持不同的身體比例。
  • 處理無效的信息輸入。有時控制器信號會弱,或者玩家取下了一部分控制器然後暫時離開了,這時我們如何防止遊戲角色姿勢扭曲?

VRIK運動解決方案

目前還沒有現成的全身IK方案能夠滿足VR內容開發的具體要求。我們需要的處理方案不僅要達到一定的動作精度和整體質量,還必須高效,因為VR本身對CPU已經是比較大的負擔了。不僅如此,在多人遊戲中,每一個玩家角色的生成都高度依賴全身IK方案實時計算,因此VR對IK方案的性能要求和計算頻率需求都很高。每一個地方都要經得起細看,經得起與玩家真實的身體比較。

考慮到這些因素,我們決定要創造一個新的解決方案(VRIK)專用於處理三控制器信源數據。這是一個綜合了分析(analytical)和探索(heuristic)的混合演算法,可以實現兩種做法各自的優點。這個解決方案按序處理每個身體部分的位置,允許玩家對身體動態的完全控制。這是通過以下的步驟細節實現的。

第1步:脊柱

如上所述,這個方案需要一步一步處理不同的身體部分。因為頭部位置是定位的基準,所以這個方案將頭顯的位置和角度輸入作為所要達成動作的基礎要求。

首先需要確定脊柱和脖子的彎曲和旋轉角度。觀察人們的動態,我們可以得知通常人們在向上或向下看、轉向或者歪頭的時候,脊柱彎曲的程度。

在確定脊柱彎曲的時候,不僅頭顯的旋轉數據很重要,手部控制器的數據也非常有價值,因為它有助於我們猜測胸骨的最終角度。如果你試著舉起手,在手不動的前提下向左或向右轉頭,你會注意到胸部受到手位置的影響,從而進一步影響到脊柱旋轉的角度。舉起或者放下一隻手的時候也是這樣。儘管也可以在胸部不動的限制下做到這些動作,但是顯然放鬆脊柱,產生自然的彎曲,這樣的動作會舒服的多,這也就是我們想要達到的目標。

因此,在脊柱動態的計算中,頭顯獲得的數據是最重要的,可以確定角色在水平面上的位置和高度,同時手部控制器可以修正胸部旋轉的角度。

讓角色活過來!揭秘多人VR環境下如何利用有限追蹤數據生成全身動態

左邊是計算了手部控制器位置數據後生成的脊柱位置,右邊不考慮手部控制器位置信息

第2步:運動動態

角色的移動是動作處理方案要處理的最複雜的問題。在沒有任何下肢信息的條件下,角色動作要生動、靈敏,看上去要自然,不能像機器人(除非遊戲角色就是個機器人)。要是處理得不好,人物動態就會好像被頭拖著走的牽線木偶一樣。

Dead and Buried最初的動作處理方案是經典的八向度自上而下的動作控制:根據頭部定位器和遊戲角色頭部之間的水平距離變化來判斷是否發生了移動,如果距離變化超過了一定的閾值就觸發踏步行走的動畫。角色轉身也是同樣的原理。

但是,實踐中發現,對於像Dead and Buried這樣快速移動的射擊遊戲來說,這種方式太慢太不精確了。而且,轉向和踏步的動畫混合樹(blend tree,混合樹用於允許通過按不同程度組合所有動畫的各個部分來平滑混合多個動畫)是衝突的,而當時又沒有能實現同時轉向和踏步的很好的方式。所以,我們最終決定完全靠程序來計算人物移動,從而獲得對人物腳部的完全控制。

這一移動演算法以腳步位置為基準工作。角色的腳和踏步動作和位置綁定,除非踏步動作觸發,否則腳一律不動。然後,計算何時由哪一隻腳踏步、落腳點在什麼位置就成了最大的問題。真實的人類在移動會有一些橫步來保持平衡,所以演算法也要考慮到這一點。

一旦腳部和踏步動作綁定之後,由於我們通過手部控制器可以得知手部的位置,而脊柱的彎曲也已經確定了,我們就能比較準確地估計出角色建模的重心(CoM, center of mass)和壓力中心(CoP, center of pressure)。後者基本上是在左腳與右腳的正中,前者則可以通過快速估計頭顯和雙手控制器構成的三角形的形心來確定。

讓角色活過來!揭秘多人VR環境下如何利用有限追蹤數據生成全身動態

重心Center of Mass,壓力中心Center of Pressure,平衡矢量Balance Vector

我們需要把人物保持平衡的能力轉化為一個標量值,以作為衡量踏步動作發生的觸發器。這個標量值可以很高效地描述為重力矢量的反向與壓力中心到重心矢量的角度。這個角度越大,人物就越不平衡,所以當這個角度超過一定的閾值,踏步就觸發了。而這個踏步的方向就是這個平衡矢量在水平地面的正交投影。

同樣,在某一點上的轉向也有一個角度閾值。這裡要注意踏步的那隻腳不能踏另一隻腳,不能兩隻腳打架。純計算的移動方式讓我們可以利用從這一步位置到下一步位置之間的光線衍射(Ray-casting,對實現許多多邊形的碰撞產生的光線效果起加速作用)探測前進方向上的障礙物。在出發踏步之前確認路徑前方的狀況有助於實現好看並且符合邏輯的有效移動。

在現實生活中,除非失去了平衡,一般來說,人在邁步之前是不會左搖右擺的。通常人們在開始移動的同時就開始抬腳了。(雖然頭顯的移動會導致平衡標量值的變化)但我們卻不能僅僅靠頭顯移動的信息來判定踏步的發生,因為我們無法確定頭像的突然加速是因為玩家抬腳要走路了,還是玩家從掩體向外探了一下頭。但我們還是能夠把頭顯和手部控制器的運動速度作為一個預測工具,降低基於速度的平衡角度閾值來提高移動方案的靈敏度。

第3步:下肢

解決了脊柱和移動問題後,就可以把腳綁定到腳步位置了。最簡單的腿部IK是利用三個關節的數據算三角函數,速度很快而且能得出非常精確的解析解。這裡的主要問題是它只能處理三個關節,而且最終只能算出腳踝的位置。對於VR來說,把腳踝的位置錨定到腳步位置並不是一個很好的辦法,因為這樣一來遊戲角色就不可能踮腳,並且縮小了頭部的移動範圍。因此,VRIK運用了雙重三角計算(一次給出膝關節的位置解,然後是踝關節),這樣把腳趾而不是腳踝錨定到腳步位置上。

解決下肢問題之後,我們有可能會遇到頭的位置太高,腳沒辦法踩到地面的問題。這裡你必須決定是讓腳飄浮著,還是說把腳錨定住,讓頭的位置不固定。從我的經驗來說,最好還是固定腳。因為從第三方的視角看起來,腳飄在地面上看上去比頭部位置的偶爾的不精確要糟糕多了。因此,我們的運動方案移動了脊柱的位置,髖部的位置也隨之移動,從而腳趾可以達到預定的目標位置。

第4步:手臂

和下肢一樣,手臂也可以用三角計算的方式解決。這裡我們遇到最大的挑戰倒不是上臂或者小臂,也不是手,而是肩膀。人的手臂並沒有那麼大的移動範圍,你不能簡單地隨著手的方向來轉動肩部的骨骼。比如說,用左手從右肩拔出武器有時會導致肩膀向後側。不過,因為在前面,我們計算出了胸骨的位置和面向,我們就可以利用這一點來輔助上肢的計算。VRIK運用了一整套具體規則和角度調整來處理肩膀的運動,而且限制了肩膀的旋轉來保證肩膀的運動不會超出可信的範圍。

因為這套解決方案無法得到關於手肘的任何信息,所以對手臂的彎曲它只能猜測。但這個猜測建立在三個信息源之上:玩家在現實世界中的位置信息,手部控制器的旋轉角度,以及手部控制器與胸骨的相對位置。但實際上,手骨可以在不移動肘部的情況下轉動,所以這種猜測也不是完備的,但它還是能夠提供一個看上去比較自然和放鬆的結果。VRIK利用上述的三個信息來源和實踐經驗,構造了一個手臂轉動平面矢量,事實證明這能夠比較好地表現出大部分手勢,而且動作還能做得比較好看。

總結

VRIK更接近分析和探索式演算法的綜合,這一點不同於大部分全身IK運動解決方案,它們通常在本質上屬於探索式演算法(heuristic,又譯作啟發式)。VRIK的這種設計使得開發者可以根據VR開發具體需求的不同,在每一步插入定製規則和定製程序,而不會被演算法本身限制。就性能表現而言,VRIK可能超過了其他的全身IK運動解決方案。這個方案在與我們公司自己的Final-IK中的一個組成方案對比時已經好幾次產生了更優的效果。

VRIK在實現更真實的VR角色方面又前進了一小步。未來,我們計劃進一步改善這個演算法,加上內部衝突迴避機制,拉伸和擠壓機制,眼動機制和關節運動限制等。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 VRZINC 的精彩文章:

《蝙蝠俠:阿卡姆VR》的啟示:真男人不能短!
3D音效專家Nationalux即將登陸HoloLens
開發者深度訪談:VR世界中的魔法師們是怎樣戰鬥的?
三星一體機Exynos VR III曝光,支持4K+75fps

TAG:VRZINC |

您可能感興趣

環境的惡化讓地球生物大規模變異,未來它們變成什麼樣無人能預測
環境污染讓更多人患上癌症 野生動物也是這樣嗎
它們或是最強物種,極惡劣的環境依然能存活,一出生就是成年狀態
人類是從猿進化過來的,為什麼人類不能更好的適應地球環境呢?
在自然環境下,生物有可能進化出超過本身需要的能力嗎?
流浪貓的生存環境有多艱難?如果有機會,請給它們一個家
若存在外星生命,最可能比人類強大的他們,能在特殊環境中存活嗎
憑藉這一身實力,狼魚也成為了環境適應能力最強的海洋生物之一
環境污染對動物造成傷害的震撼照,人類請控制你自己!
女人在這五種環境下容易動情,你可要把握住了!
生活在一個舒適,經過特別設計的景觀環境之中,對人來說有多重要?
癌症有沒有可能是人類為適應環境的一種進化方式?原來這才是真相
面對陌生環境,機器人如何像人一樣自由穿行?
微塑料成危害環境的「隱形殺手」,可研究成果遠不能滿足監管需求
最容易被環境所改變的幾大星座,讓人難以相信是這三個。
生物進化的能力有多強?這種魚不會老去,進化後能在劇毒環境下生存
寧榮榮下跪的時候誰注意這個動作,暴露成長環境,難怪這麼驕橫!
這些被製成皮草的動物生活環境惡劣,它們受傷無人管甚至同類相食
給自己形成一個遠離惡緣的環境
華為屏下攝像頭專利現身,可根據使用環境適配UI