しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

MRTK vNext アルファ版のチラ見

※ これは 2018/08/18 Unity 2018.2.3f1、Mixed Reality Toolkit vNext Alpha v2018.7.0.0 時点の情報です

最新版では動作が異なる可能性がありますのでご注意ください

Mixed Reality Toolkit の次期バージョン vNext のアルファ版がプレリリースしていました

github.com

詳しいことは下記でも紹介されていますが、せっかくなのでチラ見!

qiita.com

※ 必要環境は下記の通り

環境 必要条件
Unity 2018.1 以降が必須、2018.1.9f1 推奨
C# ランタイム .NET 4.x API 指定必須
プラットフォーム UWP ビルドサポート必須
Windows SDK 10.0.17134 以降
Visual Studio 2017 以降
Windows 10 Fall Creators Update 以降

.NET 4.x 指定必須のため C#6 が使えるように!

まだアルファ版だからか unitypackage はなく 圧縮ファイルしか用意されていないので、素直に zip をダウンロードして展開

とりあえず最新の Unity 2018.2.3f1 でおもむろに展開後のディレクトリを開くといつものバージョン更新確認

Continue ボタンで自動グレードアップ

プロジェクトビューを適度に開くとこんな感じ

HoloToolkit から MixedRealityToolkit に刷新

旧版と並べてみると結構大胆に整理されているのがわかります

新しい構成の方が少し抽象化され階層がふかくなったおかげですっきりしています

すでに Unity と提携強化し Google 提供のネットワーク API に置き換わる予定の UNET が残っているのは気になりますが・・・

旧版でメニューから設定していた Configure 系の設定は、Unity 推奨の Scriptable Object に置き換わったみたいです

Prefab ほど重くなく、設定の複製や一部だけ変更して調整するのに向いているので Scriptable Object に移行したんでしょうね

Assets/MixedRealityToolkit-SDK/Profiles 配下にありました

プロファイル名 主な設定項目
DefaultMixedRealityConfigurationProfile MRTK の全体設定、各種プロファイルへの参照がまとまっている
DefaultMixedRealityBoundaryVisualizationProfile 現実の安全範囲境界の VR 空間上の表示設定など
DefaultMixedRealityCameraProfile カメラの設定
DefaultMixedRealityControllerConfigurationProfile モーションコントローラーのトラッキング設定など
DefaultMixedRealityInputActionsProfile アクションコマンドで参照する数値制約の設定
DefaultMixedRealityInputPointerProfile 表示ポインターの設定
DefaultMixedRealitySpeechCommandsProfile 音声操作用の設定

とりあえず何かサンプルを動かしてみるため、Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scenes/BoundaryVisualization.unity を開いて実行

vNext だと UnityEditor 上で実行するだけでも MixedReality ポータルが立ち上がりシミュレーター上で操作ができました

・・・ただ、Boundary のサンプルは現実世界の部屋の境界が設定されないとデモができないらしい

シミュレーターでは境界のセットアップができないのでサンプルデモがなんのことやら状態

本来なら下記のように境界に合わせた可視化がされるはずです

https://user-images.githubusercontent.com/3580640/42352488-a50b413e-806f-11e8-9fea-2b4a1a3e6152.png

このあと HoloLens 実機にインストールしようとビルドするとエラーになってしまいました

D:\1_Tools\VisualStudio\2017\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets(44,5): error MSB3073: �R�}���h ""D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\\IL2CPP\build\il2cpp.exe" --libil2cpp-static --compile-cpp -architecture=x86 -configuration=Debug -platform=winrt -outputpath="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\\build\bin\Win32\Debug\GameAssembly.dll" --data-folder="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\\build\bin\Win32\Debug\\" -cachedirectory="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\\build\obj\il2cppOutputProject\Win32\Debug\\" -generatedcppdir="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\\Source" --additional-defines=WINDOWS_UWP --additional-defines=UNITY_UWP --additional-defines=UNITY_WSA_10_0 --additional-defines=UNITY_WSA --additional-defines=UNITY_WINRT --additional-defines=PLATFORM_WINRT -dotnetprofile=unityjit -verbose --map-file-parser="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\\IL2CPP\MapFileParser\MapFileParser.exe"" �̓R�[�h -532462766 �ŏI�����܂����B [D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\Il2CppOutputProject.vcxproj]
UnityEngine.Debug:Log(Object)
Microsoft.MixedReality.Toolkit.Internal.Extensions.<StartProcessAsync>c__AnonStorey3:<>m__2(Object, DataReceivedEventArgs) (at Assets/MixedRealityToolkit/_Core/Extensions/ProcessExtensions.cs:87)
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

MixedRealityToolkit appx build Failed! (ErrorCode: 1)
UnityEngine.Debug:LogError(Object)
Microsoft.MixedReality.Toolkit.Internal.Build.<BuildAppxAsync>c__async0:MoveNext() (at Assets/MixedRealityToolkit/_Core/BuildAndDeploy/UwpAppxBuildTools.cs:192)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(ProcessResult)
Microsoft.MixedReality.Toolkit.Internal.Extensions.<StartProcessAsync>c__async0:MoveNext() (at Assets/MixedRealityToolkit/_Core/Extensions/ProcessExtensions.cs:37)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(ProcessResult)
Microsoft.MixedReality.Toolkit.Internal.Extensions.<StartProcessAsync>c__async1:MoveNext() (at Assets/MixedRealityToolkit/_Core/Extensions/ProcessExtensions.cs:109)
UnityEngine.UnitySynchronizationContext:ExecuteTasks()

Unity の方もガンガンバージョンアップするし、まだアルファだしこの辺はまだまだすんなりとはいかなそうですね