はじめに
OX ENGINEER STUDIOでクライアントエンジニアをしている林です。
本記事では、Unreal Engine5(以下UE5)でQuest2を使用してハンドトラッキングを実装する方法について記載します。
動作確認はQuest2で行いましたが、Quest3でも同様にハンドトラッキング出来ます。
目標
以下の動画のようにUE5でハンドトラッキングが可能になります。
事前準備
①:MetaXRプラグインのダウンロード
UE5でのQuest2のハンドトラッキングには、UE5向けのMetaXRプラグイン(以下MetaXR)が必要です。
Unreal Engine 5 Integration
MetaXRは、UE5のバージョンに合ったものを使用します。
例えば、投稿時点(2024/11/27)最新のMetaXRのバージョンは71.0ですが、これに対応するUEのバージョンは5.4.4です。
このMetaXRはUE5.1.1では使用できません。
また、2024/10/02にUE5.5がリリースされましたが、MetaXRはまだ対応していません。
以下にUEのバージョンに対応するMetaXRを記載します。
UE 5.1.1 | UnrealMetaXRPlugin.54.0 |
UE 5.2.1 | UnrealMetaXRPlugin.57.0 |
UE 5.3.2 | UnrealMetaXRPlugin.65.0 |
UE 5.4.4 | UnrealMetaXRPlugin.71.0 |
MetaXRをダウンロードしたら、<UE5のインストールフォルダ>\Engine\Plugins\Marketplace に解凍します。
(UE5.3の例: C:\Program Files\Epic Games\UE_5.3\Engine\Plugins\Marketplace)
Marketplaceフォルダが無い場合は作成します。
Marketplaceフォルダに、以下のようにMetaXRフォルダが配置されていればOKです。
②:UEプロジェクトにMetaXRを追加
次に、UE5のプロジェクトを作成し、 MetaXRを追加します。
バーチャルリアリティのテンプレートからプロジェクトを作成します。
MetaXRの追加方法は、UE5のバージョンによって異なります。
- UE5.1.1、UE5.2.1、UE5.4.4
メニューの「編集」→「プラグイン」を開き、「インストール済」のタブからMetaXRにチェックし、プロジェクトを再起動します
- UE5.3.2
メニューの「編集」→「プラグイン」を開き、「インストール済」のタブからMetaXRにチェックします
「ビルトイン」のタブから「OpenXR」「OpenXREyeTracer」「OpenXRHandTracking」のチェックを外し、プロジェクトを再起動します
プロジェクトを再起動すると、以下のような警告が出る場合があります。
「無視」または「ガイドラインを削除」を選んで問題ありません。
ここまで準備出来たら、1度VRプレビューでVR表示出来るか確認します。
UE5.3.2でVR表示できず、プレビューが以下のような画面になった場合は、プラグインの設定が誤っている可能性があります。
③:Quest Linkでのハンドトラッキングの有効化
Meta Quest Linkアプリで「開発者ランタイム機能」を有効にします
実装
VRPawnを開き、ハンドトラッキング用のコンポーネントを追加します。
コンポーネントの追加方法は、UE5のバージョンによって異なります。
- UE5.1.1、UE5.2.1
左手
MotionControllerLeft に Oculus XRHand Componentを追加します
コンポーネントの名前は LeftOculusXRHand に変更します
LeftOculusXRHand の詳細→Hand Properties→Skeleton TypeとMesh Typeを Hand Left に変更します
MotionControllerLeft の下にある HandLeft の詳細→レンダリング→Visibleのチェックを外します
右手
MotionControllerRight に Oculus XRHand Componentを追加します
コンポーネントの名前は RightOculusXRHand に変更します
RightOculusXRHand の詳細→Hand Properties→Skeleton TypeとMesh Typeを Hand Right に変更します
MotionControllerRight の下にある HandRight の詳細→レンダリング→Visibleのチェックを外します
- UE5.3.2、UE5.4.4
左手
MotionControllerLeftGrip に Oculus XRHand Componentを追加します
コンポーネントの名前は LeftOculusXRHand に変更します
LeftOculusXRHand の詳細→Hand Properties→Skeleton TypeとMesh Typeを Hand Left に変更します
MotionControllerLeftGrip の下にある HandLeft の詳細→レンダリング→Visibleのチェックを外します
MotionControllerLeftGrip の詳細→モーションコントローラー→ Motion Sourceを Left に変更します
右手
MotionControllerRightGrip に Oculus XRHand Componentを追加します
コンポーネントの名前は RightOculusXRHand に変更します
RightOculusXRHand の詳細→Hand Properties→Skeleton TypeとMesh Typeを Hand Right に変更します
MotionControllerRightGrip の下にある HandRight の詳細→レンダリング→Visibleのチェックを外します
MotionControllerRightGrip の詳細→モーションコントローラー→ Motion Sourceを Right に変更します
ここまでの変更が完了したら、ハンドトラッキングが可能になります。
コントローラーがアクティブだとハンドが表示されないので、動作確認する際はコントローラーに触らず、手をQuestの前にかざすとハンドトラッキングが認識されやすいです。