【UE4】OculusQuestのHandtracking導入手順(Android開発環境構築も含む)※Quest2の動作確認済み
※10/15日追記 Quest2用ではプロジェクト設定のPlatform > Android でPackage For Oculus Mobile devicesをQuest2に設定すれば動きます。
EpicGamesLauncherのUE4では現時点ではQuest2での動作はできませんでした。
※10/15日追記 UE4.26Preview3でのビルドを確認しました。プロジェクト設定をこの記事と同じようにすれば問題なく動きます。
ハンドトラッキングも使えるようになってたので、ハンドトラッキングやりたい場合でもエンジンビルドの必要がなくなりました。
現時点でUE4でハンドトラッキングを使用するためには、エンジンソースコードをビルドする必要があります。
公式のハンドトラッキング導入に関してはこちら
まずハンドトラッキングの機能が入ったUE4のエンジンソースコードをOculusのGithubからCloneしてきます。
エンジンソースコードは下記のリンクの場所にあります。
https://github.com/Oculus-VR/UnrealEngine/tree/4.25
Cloneした後は普通にUE4のエンジンソースコードのビルド手順をとります。
また、ビルドする際にVisualStudio2017を使用します。2019でできるかは未検証です。
手順自体はReadmeに書いてあるので簡単に。
・Setup.batを実行
・GenerateProjectFiles.batを実行
・UE4.slnをVisualStudioで開く。
-ソリューション構成:DevelopmentEditor
-ソリューションプラットフォーム:Win64
・に設定しUE4ターゲットをビルド
ソースコードのビルド自体はいろんな人が開設してるので、詳しい内容などは適宜調べてください。
UE4が開くことができたら適当にプロジェクトを作ってください。
Blankでモバイルターゲットのプロジェクトで構いません。
作り終わったら一旦閉じます。
Androidの開発環境が必要になるので、そちらを構築します。
公式のAndroid開発環境構築に関しては下記のリンクの場所にあります。
まずAndroidStudioをダウンロードします。バージョン指定がありますが、別に最新のバージョンでも問題なかったので、気にせず下記の場所からダウンロードします。
https://developer.android.com/studio
インストールが終わったらAndroidStudioの初期設定を行います。この時完了時にPCの再起動が必要になります。
再起動してきたらもう一度AndroidStudioを開きます。必要なバージョンのSDKやNDKをダウンロードしてきます。
起動時に右下のConfigureからSDKManagerを選択して開きます。
開いたら必要なSDKやらツール等をインストールしていきます。
まずQuestは25らしいので7.1.1が必要になります。
また、ツールはNDK、Google USB Driver、Android SDK Platform-Toolsあたりがあるといいと思います。
自分はとりあえずこの状態で動いたので参考にしてもらえると。
チェックボックスにチェックを入れ終えたら右下のApplyを押してください。するとインストール画面前に承認画面が入るので、中央下あたりにあるラジオボタンでAcceptを選択してからインストールを開始してください。
インストールが終わったら閉じてください。
そして、再度先ほど作ったUE4プロジェクトを開きます。
一応ランチャーにもその他というバージョンでプロジェクトがしれっと入ってるので、そちらからでもいいですし、直接.uprojectファイルをダブルクリックで起動しても構いません。
Oculus公式のQuestのQuickスタートは下記の場所にあります。
プロジェクト設定を開きます。まずPlatformsのAndroidのカテゴリを選択してください。
SDKライセンスを承認してください。
Targetバージョンと最低Targetバージョンを25に設定します。
Enable Fullscreen Immersive on KitKat and above devices.にチェックを入れます。
Package for Oculus Mobile devices でプラスを押してOculusQuestを選択します。
その下のRemove Oculus Signature Files from Distribution APKにチェックを入れます。
次にPlatformsのAndroidSDKカテゴリに移動します。
ここではダウンロードしたSDK・NDK・JDKのパスを指定します。
スクショのパスは独自で決めたもので、初期設定では
C:\Users\ユーザー名\AppData\Local\Android\ あたりだったはずです。
JDKは初期設定なので参考にどうぞ。
初期ではlatestですが、SDKを複数入れている場合、ビルドに失敗したので指定しています。一つならビルドが通るかは未検証です。
PluginsのOculusVRカテゴリに移動します。
MobileのHand Tracking SupportをControllers and Hands か HandsOnlyに設定します。
プロジェクト設定は以上です。
次はPawnを作成します。
Sceneコンポーネント一つにCamera、MotionControllerComponentを二つ、OculusHandComponentを二つです。詳しい階層構造は下のスクショを参考ください。
MotionControllerとOculusHandCompoentは右手と左手用に設定をそれぞれ変更してください。
下のスクショは右手版になります。SkeletonTypeとMeshTypeを親のMotionControllerの手と同じ側にすればいいです。
あとQuestは6DoFなので、FloorLevelでとりあえず初期化しておく必要があります。
していないと、アプリ起動時の位置が初期位置になるので、立ったまま地面に埋まるとかそういうことが起こります。
あとはGameModeを作ってDefaultPlayerに設定するか、直接レベル上に配置してInputを受け取れるようにしてください。
PCにQuestをつなげて起動をすればハンドトラッキングができると思います。
ちなみに簡単な入力も特にとってないハンドトラッキングはこんな感じ。マテリアル反映されないのはよくわからんので要検証。#UE4Study pic.twitter.com/rfSlxLZYg4
— 白鳥隆士 (@shiratori1221) 2020年6月15日
ちなみに、OculusHandComponentのInitializePhysicsにチェックを入れるとBlock系のあたり判定を生成してくれるようになり、物を殴り飛ばしたりできるようになります。
標準のOculusHandのPhysics適用版。物を持つのは難しいので、いい感じにやる必要性はあるが、殴り飛ばすのは楽ちん#UE4Study pic.twitter.com/OT8yNtA2BR
— 白鳥隆士 (@shiratori1221) 2020年6月18日