【UE4】OculusQuestのHandtracking導入手順(Android開発環境構築も含む)※Quest2の動作確認済み

※10/15日追記 Quest2用ではプロジェクト設定のPlatform > Android でPackage For  Oculus Mobile devicesをQuest2に設定すれば動きます。

EpicGamesLauncherのUE4では現時点ではQuest2での動作はできませんでした。

※10/15日追記 UE4.26Preview3でのビルドを確認しました。プロジェクト設定をこの記事と同じようにすれば問題なく動きます。

ハンドトラッキングも使えるようになってたので、ハンドトラッキングやりたい場合でもエンジンビルドの必要がなくなりました。

f:id:shiratori00:20201015014252p:plain

 

現時点でUE4でハンドトラッキングを使用するためには、エンジンソースコードをビルドする必要があります。

 

公式のハンドトラッキング導入に関してはこちら

developer.oculus.com

 

developer.oculus.com

 

まずハンドトラッキングの機能が入った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開発環境構築に関しては下記のリンクの場所にあります。

docs.unrealengine.com

 

まずAndroidStudioをダウンロードします。バージョン指定がありますが、別に最新のバージョンでも問題なかったので、気にせず下記の場所からダウンロードします。

https://developer.android.com/studio

 

インストールが終わったらAndroidStudioの初期設定を行います。この時完了時にPCの再起動が必要になります。

再起動してきたらもう一度AndroidStudioを開きます。必要なバージョンのSDKやNDKをダウンロードしてきます。

起動時に右下のConfigureからSDKManagerを選択して開きます。

f:id:shiratori00:20200618070426p:plain

 

開いたら必要なSDKやらツール等をインストールしていきます。

まずQuestは25らしいので7.1.1が必要になります。

f:id:shiratori00:20200618071713p:plain

 

また、ツールはNDK、Google USB Driver、Android SDK Platform-Toolsあたりがあるといいと思います。

自分はとりあえずこの状態で動いたので参考にしてもらえると。

f:id:shiratori00:20200618071710p:plain

チェックボックスにチェックを入れ終えたら右下のApplyを押してください。するとインストール画面前に承認画面が入るので、中央下あたりにあるラジオボタンでAcceptを選択してからインストールを開始してください。

 

インストールが終わったら閉じてください。

 

そして、再度先ほど作ったUE4プロジェクトを開きます。

一応ランチャーにもその他というバージョンでプロジェクトがしれっと入ってるので、そちらからでもいいですし、直接.uprojectファイルをダブルクリックで起動しても構いません。

 

Oculus公式のQuestのQuickスタートは下記の場所にあります。

developer.oculus.com

 

プロジェクト設定を開きます。まずPlatformsのAndroidのカテゴリを選択してください。

SDKライセンスを承認してください。

Targetバージョンと最低Targetバージョンを25に設定します。

Enable Fullscreen Immersive on KitKat and above devices.にチェックを入れます。

f:id:shiratori00:20200618221304p:plain

 

Package for Oculus Mobile devices でプラスを押してOculusQuestを選択します。

その下のRemove Oculus Signature Files from Distribution APKにチェックを入れます。

f:id:shiratori00:20200618215322p:plain

次にPlatformsのAndroidSDKカテゴリに移動します。

ここではダウンロードしたSDK・NDK・JDKのパスを指定します。

スクショのパスは独自で決めたもので、初期設定では

C:\Users\ユーザー名\AppData\Local\Android\ あたりだったはずです。

JDKは初期設定なので参考にどうぞ。

SDKAPIレベルには android-25

NDKのAPIレベルにはandroid-21を指定します。

初期ではlatestですが、SDKを複数入れている場合、ビルドに失敗したので指定しています。一つならビルドが通るかは未検証です。

f:id:shiratori00:20200618215805p:plain

PluginsのOculusVRカテゴリに移動します。

MobileのHand Tracking SupportをControllers and Hands か HandsOnlyに設定します。

f:id:shiratori00:20200618221256p:plain

 

プロジェクト設定は以上です。

次はPawnを作成します。

Sceneコンポーネント一つにCamera、MotionControllerComponentを二つ、OculusHandComponentを二つです。詳しい階層構造は下のスクショを参考ください。

f:id:shiratori00:20200618225628p:plain

MotionControllerとOculusHandCompoentは右手と左手用に設定をそれぞれ変更してください。

下のスクショは右手版になります。SkeletonTypeとMeshTypeを親のMotionControllerの手と同じ側にすればいいです。

あとQuestは6DoFなので、FloorLevelでとりあえず初期化しておく必要があります。

していないと、アプリ起動時の位置が初期位置になるので、立ったまま地面に埋まるとかそういうことが起こります。

f:id:shiratori00:20200619001016p:plain

 

あとはGameModeを作ってDefaultPlayerに設定するか、直接レベル上に配置してInputを受け取れるようにしてください。

 

PCにQuestをつなげて起動をすればハンドトラッキングができると思います。

 

 

ちなみに、OculusHandComponentのInitializePhysicsにチェックを入れるとBlock系のあたり判定を生成してくれるようになり、物を殴り飛ばしたりできるようになります。