2018年12月9日日曜日

[HoloLens Advent Calendar 2018] 9日目 Mixed Realty Tookit Unity vNext2018を利用し、Air TapでCubeを落とすHoloLensアプリを作ってみた

お疲れ様です。ZuQ9->Nnです。
この記事は、HoloLens Advent Calendar 2018、9日目
2018/12/09 の内容です。

Mixed Realty Tookit Unity vNext2018
日本語でも何人か記事をだされていますが、
2018/12/09現在では、ようやくAlphaを出てBataになったばかり
まだまだ、開発真っ最中といった印象です。

今回は、Mixed Reality Toolkit 2018.9.0 (vNext Beta) を利用し、
HoloLensアプリの最初の第一歩ともいえる、CubeをAir Tapで落とすアプリを作成していきます。

なお、Mixed Reality Toolkit 2018.9.0 (vNext Beta) を利用するには
Unity 2018.1以降、.NET 4.xが必須となります。

今回、僕はUnity 2018.2.10f1 (64-bit)を利用して作成しました。

まずは、GitHubのreleaseページより
MixedRealityToolkit-Unity-2018.9.0-Beta.unitypackageをダウンロードします。

Unityで新規でプロジェクトを作成し、
MixedRealityToolkit-Unity-2018.9.0-Beta.unitypackageをインポートします。
ちなみに.NET 4.xの設定は、unitypackageをインポートすると自動で設定されます。
インポートができたら、 UnityのメニューにMixedRealityToolkitのメニューが表示されます。

 MixedRealityToolkitのメニューからConfguerをクリックすると
Hieraichyに、MixedRealityToolkit、MixedRealityPlayspaceが自動追加されます。

MixedRealityPlayspaceを展開しMainCameraを選択すると、
InspectorにGaze ProviderのScriptが既にアタッチされています。
これは、Gazeつまり視線を扱うためのスクリプトです。

Main Camera、Gaze ProviderのCusor Prefabのプロパティに
MixedRealityToolkit-SDK > Features > UX > Prefabs > Cursorsの
DefaultCursorをアタッチメント

さらにGaze ProviderのGaze TransformプロパティにMainCameraをアタッチメント


HieraichyのCreate > 3D Object > Cubeを選択しCubeを作成

 Cubeを見えやすい位置に配置してください。(僕は、x : 0,  y : 0,  z : 3)に配置
 DefaultCursorの色が白だったので、白いCubeに白いGazeが当たっても認識しずらかったので
僕は、適当な色(R : 0, G : 201, B 255)のMaterialを作ってCubeにアタッチしましたが、
この作業は、必須ではありません。

CubeのInspectorからAdd ComponetでRigdbodyを追加します。

RigdbodyのIs KinematicのチェックをONにします。

CubeにMixedRealityToolkit-SDK > Features > Input > Handlersの
PointerClickHandlerのScriptをアタッチメントします

次にProject ViewのCreateからC# Scriptを選択し、新規のScriptを作成します。

名前は何でもよいですが、ここではAirTapEventとしました。

AirTapEventの内容は下記です。
AirTapEventをCubeのInspectorにアタッチメントします。

CubeのInspectorから、PointerClickHandlerスクリプトの
On Pointer Clicked Action Eventを展開し
Action InputをSelectにします。

さらに、+ボタンを押して、Unity Eventを表示ます。

Unity EvenにHieraichyのCubeをドラッグ&ドロップでアタッチメント

Unity EventのNo founctionのドロップダウンを開いて
AirTapEventのFallDown()メソッドを選択します。

操作は以上で、これでBuildしHoloLensにアプリをDeployすれば
今までのToolkit同様にAir TapでCube を落とすことができます。

残念ながら、いままでのToolkitで出来ていた
Unity Editor上でShiftボタンを押しながらクリックすると
Air Tapが確認できる機能は、現在のところvNextでは提供されておらず、
実機での確認が必須となっています。

実機で動かすとこんな感じになります。

現在見ている限りでは、Mixed Reality Toolkit Unity vNext 2018.8.0.0 Alpha 2の時点で存在していた
Spatial Mapping、Spatial UnderstandingやSpatial SoundのためのSpatialフォルダ、
そしてsharingのためのsharingフォルダが削除されたのが気にかかったのですが、
元々vNext 2018.8.0.0 Alpha 2でも、それらのフォルダにはREADMEしか存在しませんでした。
また、HoloLens用のExampleもほとんど存在せず、使い方を模索しなくてはなりません。
おそらく、これらの機能は、今後追加で提供されると思います。

一応、.unitypackageだけではなくsorce code版もダウンロードして確認しましたがやはり、ありませんでした。
vNext2018は、かなり以前のToolkitからの変更も大きく 対応は大変になるかと思います。
どうせやるなら早いうちにと思ったのですが、やっぱり早すぎたのかもしれません。

最後に、今後のHoloLens開発をやるうえで、かならず、
Toolkitのバージョン情報を確認して検索しないと、
情報が古くて役に立たなくなることが多くなるかとおもいます。
どうぞ、HololLens Developerの皆さんは、お気を付けください。