くじらDのブログ

主に3DCGやUnity関連の開発メモ

MicrosoftのMRTK(v2.2.0)をiPhone Xsで試してみた

Microsoftの MRTK とは

 

Microsoftが開発してる“Mixed Reality Toolkit”。

もともとはHololensとかWindowsMRでの利用を目的としてるんだけど、v2からはiOSAndroidでも使えるようになっているそうなので、さっそく試してみた。

 

f:id:ninotk:20200108010716j:plain

 

 

 

MRTKについての詳細は下記をご覧いただくのが一番良いです。

https://docs.microsoft.com/ja-jp/windows/mixed-reality/mrtk-getting-started

 

ちなみに動作イメージはこちら


MicrosoftのMRツールキット v2.2.0をiPhoneXsで試してみた

 

【開発環境】

Mac(OS 10.15.2)

Unity 2019.1.14f1

iPhoneXs(13.3)

 

※一度Unity 2019.2.7f1で実行しようとしたところ、ビルド中にフリーズしたり、プロジェクトの再起動ができなかったりと不具合が多かったので、2019.2.7f1のバージョンでは作成しないことをオススメします。

 

まずは新規Projectを取得し、プラットフォームをiOSにSwitchしておきます。

 

UnityPackageのダウンロード

必要なUnityPackageを下記ページからダウンロードしておきます。

https://github.com/microsoft/MixedRealityToolkit-Unity/releases/tag/v2.2.0 

Microsoft.MixedReality.Toolkit.Providers.UnityAR.2.2.0.unitypackage

Microsoft.MixedReality.Toolkit.Unity.Foundation.2.2.0.unitypackage

Microsoft.MixedReality.Toolkit.Unity.Examples.2.2.0.unitypackage

 

 

Unity側のARFoundationの設定

まずは、UnityでiOSAndroid開発を行うために必要なARFoudation関係を入れます。

[Window][PackageManager]と進んでいき、下記パッケージをインストールしましょう。

 ・ARFoundation(2.1.4)

・ARKit XR Plugin(2.1.2)

・ARCore XR Plugin(2.1.2)

 

f:id:ninotk:20200108003932j:plain

ARFoundation

f:id:ninotk:20200108003954j:plain

ARKit XR Plugin

f:id:ninotk:20200108004013j:plain

ARCore XR Plugin



 

 

UnityPackageをインポートする

(ARFoundation前にインポートしても問題なしです)

 

続いてGitHubからダウンロードした3つのパッケージをプロジェクトにインポートします。

 

f:id:ninotk:20200108004057j:plain

 

いきなりエラーが…!

ここは焦らず、対処しましょう。

 

エラーの内容を確認すると「SpatialTracking」が存在しません。という旨のエラーの文ですので、

その「SpatialTracking」を手動で設定します。

 

 

f:id:ninotk:20200108004128j:plain

 

 

まずは下記の箇所の設定ファイルをInspectorで確認します。

/Assets/MixedRealityToolkit.Staging/UnityAR/Microsoft.MixedReality.Toolkit.Providers.UnityAR

 

アセンブリ定義「Assembly Definition References」の項目が3項目ありますが、ここにSpatialTrackingを追加します。

 

「UnityEngine.SpatialTracking」は、下記にあります。

/Packages/com.unity.xr.legacyinputhelpers/Runtime/TrackedPoseDriver/

 

階層を追って探すのは面倒なので、「Spatial」とPackages内を検索すればすぐ出てきます。

「Assembly Definition References」に「SpatialTracking」をアタッチし、Applyします。

 

 

ここまでくればエラーが消えます。

Apply後、設定に少し時間がかかります。

 

 

MRTKのコンフィグ設定 

f:id:ninotk:20200108004344j:plain

完了すると、MRTKのコンフィグウィンドウが表示されます。

諸々必要な設定を行ってくれますので、そのままApplyします。

 

この設定後、XRSettingsのVirtualRealtySupportedがONになってしまうので、手動で解除します。

 

 

これで初期設定は完了です

 

サンプルプログラムを操作 

いくつかのサンプルの中で一番サンプルとして見せやすい「HandInteractionExalple」を試してみましょう。

 

Assets/MixedRealityToolkit.Examples/Demos/HandTracking/Scenes/

 HandInteractionExamples.Sceneを開きます。

 

シーンを開くと、TextMeshProのインポートウィンドウが開きます。

上のボタンでインポートしましょう。

(インポートしない場合については、試していないのですが、取り急ぎインポートして動いているので、素直にインポートしても大丈夫だと思います。)

 

※Examleの方はインポートしなくても良いです。

f:id:ninotk:20200108004312j:plain

カメラシステムの設定

デフォルトではHololens2などの設定がされているので、iOSAndroid用のカメラ設定に変更しましょう。

Hieralchyの「MixedRealityToolkit」を選択し、Inspectorから設定をカスタマイズします。

 

f:id:ninotk:20200108004452j:plain

 

「Copy&Customize」を選択し、新規のProfileを作成し、Cloneします。

MixedRealityToolkitのCameraを選択し、「CameraSystemType」の下を今作成したProfileに変更します。

 

 

f:id:ninotk:20200108004522j:plain

 

(僕の設定の仕方がよくなかったのか、「Copy&Customize」選択時に開くウィンドウで作成したProfileだと表示されなかったので、この欄の右側のCloneボタンからもう一度Profileを作成しました。)

 

f:id:ninotk:20200108004559j:plain

新規作成したProfileを選択すると、「CameraSettingProvider」がアクティブ状態になり、設定変更が可能になります。

「Add Camera Setting Provider」を選択して、新規のカメラ設定を追加します。

 

 

f:id:ninotk:20200108004627j:plain 

デフォルトでは、「Windows MixedReality Toolkit Camera Settings」になっているので、

「Unity AR Foundation Camera Settings」に変更します。

ウィンドウを開いて、Typeを「Windows.MixedReality.Toolkit.Experimental.UnityAR」に変更し、「UnityARCameraSettings」を選択します。

 

 

Xcodeビルド

あとは、Xcodeに書き出すだけ。

書き出しの前に、2点だけ修正しておくことがあります。(これやっておかないとXcodeからアプリに書き出すときにエラーがでます。

 

・PlayerSettings → OtherSettings → Strip EngineCode のチェックを外しておく

・ProjectSetting → XR → ARKit の ARKitのRequirement を作成しておく

f:id:ninotk:20200108004649j:plain

Strip EngineCode のチェックを外しておく

f:id:ninotk:20200108004718j:plain

ARKitのRequirement を作成しておく


 

 

これで書き出すと、サンプルプロジェクトをiPhoneで動作させることができます。

 

参考サイト

https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/CrossPlatform/UsingARFoundation.html