此教程相關的詳細教案,文檔,思維導圖和工程文件會放入 Spatial XR 社區(qū)。這是一個高質量知識星球 XR 社區(qū),博主目前在內擔任 XR 開發(fā)的講師。此外,該社區(qū)提供教程答疑、及時交流、進階教程、外包、行業(yè)動態(tài)等服務。
社區(qū)鏈接:
Spatial XR 高級社區(qū)(知識星球)
Spatial XR 高級社區(qū)(愛發(fā)電)
IK(反向動力學)有利于提升 VR 應用中的沉浸感,我們可以通過 IK 實現(xiàn) VR 中全身模型的追蹤。本篇教程將基于 Unity 的 XR Interaction Toolkit 和 Final IK 插件中的 VRIK 功能介紹如何模擬 VR 中人物上半身的運動,特別是手臂和手肘的姿態(tài)。
XR Interaction Toolkit 是 Unity 一款實用的 VR 開發(fā)工具包,具體的環(huán)境配置方法和使用方法可以參考我往期的教程。
Final IK 是 Unity 一款功能強大的 IK 插件,其中擁有適用于 VR 的 IK 功能(稱為 VRIK,Asset Store 鏈接:https://assetstore.unity.com/packages/tools/animation/final-ik-14290)
注:這個插件是付費的,但是 VRIK 的配置方法是非常簡單的。
本篇教程使用的 Unity 版本:2021.3.5
XR Interaction Toolkit 版本:2.3.0
Final IK 版本:2.2
(以上的版本其實無所謂,基本上都適用)
使用的 VR 設備:Meta Quest 2 (只要你的設備能支持 Open XR 的運行環(huán)境就行)
最終實現(xiàn)的效果:
- 人物模型的頭部能夠跟隨 VR 頭顯旋轉和移動
- 人物模型的手能夠跟隨 VR 手柄旋轉和移動,并且?guī)幽P偷氖直?,肩部運動
- 在現(xiàn)實中下蹲,人物模型也能下蹲
- 推動手柄搖桿能夠控制人物模型移動
??第一步:配置 OpenXR + XR Interaction Toolkit 的開發(fā)環(huán)境
這一步參考我之前的安裝配置教程 Unity VR開發(fā)教程 OpenXR+XR Interaction Toolkit (一) 安裝和配置
最終場景中有配置好的 XR Origin 就行:
人物移動的話參考我這篇教程:Unity VR 開發(fā)教程 OpenXR+XR Interaction Toolkit (三) 轉向和移動,原理是一樣的。
移動方式選擇 Continous Move 持續(xù)移動,這樣就能用手柄搖桿來控制人物模型的移動。
??第二步:導入人物模型
推薦 Humanoid 的模型,這樣 VRIK 能夠自動配置骨骼,否則需要手動配置骨骼,會比較麻煩。
?VRM 模型導入 Unity 的方法
有些小伙伴可能想使用 VRoid 制作的 VRM 模型。要想在 Unity 中使用,一種方法是將 VRM 模型先導入建模軟件,通過插件轉換成 Fbx 文件。另一種方法是通過 Unity 的插件,直接將 VRM 格式的文件轉換成 Prefab,我將介紹這種方法。
使用到的插件:
UniVRM https://github.com/vrm-c/UniVRM
SimpleURPToonLitOutlineExample(這是一個 URP Shader,如果你是 URP 項目,需要配合這個插件來轉換 VRM 文件,因為 UniVRM 沒有 URP Shader) https://github.com/simplestargame/SimpleURPToonLitOutlineExample
首先打開 UniVRM 的 Github 頁面,打開 Release 可以找到插件的包。
我這里選的是 VRM 1.0 的版本:
下載過后導入 Unity,導入成功后可以看到 Unity 上方的菜單欄多了這兩個東西:
項目文件夾會多出這三個文件夾:
如果你是 URP 項目,我們需要打開 URP Shader 的網址,同樣在 Releases 下載后導入 Unity。
導入成功后可以在項目文件夾找到這個文件夾:
找到 SimplestarGame/SimpleURPToonLitOutlineExample/Scripts/MaterialFactory.cs 這個腳本,用它來替換先前導入 UniVRM 中的 VRMShaders/GLTF/IO/Runtime/Material/Importer/MaterialFactory.cs 腳本。
現(xiàn)在,我們就可以將 VRM 文件復制到 Unity 項目文件夾:
然后在 Inspector 面板中勾選 Migrate To Vrm1,點擊 Apply
這時候模型就轉化成了 Prefab,上面附帶了一些 UniVRM 的腳本。
??第三步:配置 VRIK
?給模型加上 VRIK 組件
首先我們將人物模型拖至場景,給模型添加 VRIK 組件:
可以看到 VRIK 組件中的 Reference 已經自動幫我們引用好了人物的骨骼,這是因為我們的模型是 Humanoid 的。如果不是 Humanoid 就需要自己綁定了。
?將模型的頭部和手部的位置作為 VR 追蹤目標的子物體
VR 追蹤目標為現(xiàn)實中的頭顯和兩個 VR 手柄。在 XR Interaction Toolkit 中的 XR Origin 對應的就是 Camera Offset 下的這三個物體。
然后,我們回到人物模型上 VRIK 組件,鎖定頭部,左手,右手這三個物體:
這三個物體對應著 VR 追蹤的三個目標:頭顯,左手柄,右手柄。
我們找到這三個物體在人物模型中的位置,分別復制頭部,左手,右手的游戲物體:
復制后:
最后,我們先將這幾個復制體的 position 設為 0,再把頭部復制體,左手復制體,右手復制體分別作為 XR Origin 中的 Main Camera, LeftHand Controller 和 RightHand Controller 的子物體:
?添加 VRIK 的 IK Target
接下來,我們回到 VRIK 組件,找到 Sovler 中的 Head Target, Left Arm Target 和 Right Arm Target,把剛剛復制的頭部,左手,右手復制體拖過去:
這三個 Target 作為 IK Target,用于解算人物上半身的姿態(tài)。
現(xiàn)在,我們已經成功配置好了 VRIK。
理論上,其他的 VR SDK 也是類似的配置方法,需要將頭部,雙手的復制體作為該 SDK 中 頭部,雙手追蹤位置的子物體。
??調整 IK 位置和旋轉角度
這個時候如果運行程序,會發(fā)現(xiàn)雙手的位置可能并不是我們想要的,而且可能攝像機的位置會被模型的臉或者頭發(fā)擋住。這時候我們就需要調整剛剛復制的頭部,左手,右手的 IK Target,使上半身的 IK 達到我們想要的效果。我們可以在游戲運行的時候動態(tài)調整這三個 Target 的 position 和 rotation,達到滿意的效果后復制 Component, 退出運行模式后再粘貼復制的 Component Values
VRIK 上其實也有很多參數(shù)可以微調,大家可以自行嘗試,調整出自己滿意的 IK 效果,每個參數(shù)是什么意思可以參考這篇博客:
https://blog.csdn.net/love_c_s/article/details/123351153?spm=1001.2014.3001.5501
??使用 Twist Relaxer 緩解手腕扭曲的問題
配置好 VRIK 后,大家可能會遇到這個問題:手腕的轉動無法帶動前臂的轉動,手腕和前臂有點斷層的樣子,于是手腕稍微轉過一定角度后(比如將手腕面向自己),前臂基本不轉,導致手腕處的模型扭曲得很厲害。
這個時候,我們可以用 Final IK 中的 Twist Relaxer 組件來緩解這個問題。
首先找到人物模型中前臂的位置:
在前臂物體上添加 Twist Relaxer 組件,并且像下圖所示賦好值,將 VRIK 組件賦給 IK,前臂物體賦給 Transform 和 Parent,手的物體賦給 Children,然后將 Weight 改為 1, Parent Child Crossfade 改為 0.5:
現(xiàn)在運行程序,手腕嚴重扭曲的問題可以得到一定緩解:
雖然手腕轉過很大角度后還是會有一點扭曲現(xiàn)象,但是相比添加前已經緩解了許多,我們也可以微調下圖中的這三個參數(shù),達到自己滿意的效果:
配置完后,我們已經能夠實現(xiàn)以下功能:文章來源:http://www.zghlxwxcb.cn/news/detail-523902.html
- 人物模型的頭部能夠跟隨 VR 頭顯旋轉和移動
- 人物模型的手能夠跟隨 VR 手柄旋轉和移動,并且?guī)幽P偷氖直?,肩部運動
- 在現(xiàn)實中下蹲,人物模型也能下蹲
- 推動手柄搖桿能夠控制人物模型移動
但是現(xiàn)在模型行走的方式比較奇怪。如果你想實現(xiàn)比較好的腿部行走姿勢,可以接著看下一篇教程:VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(下):實現(xiàn)腿部行走動畫文章來源地址http://www.zghlxwxcb.cn/news/detail-523902.html
到了這里,關于VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):實現(xiàn)上半身的追蹤(附帶VRM模型導入Unity方法和手腕扭曲的解決方法)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!