2020
05.01

【World MR News】Yoon氏によるスペシャルセッション「MRTKアップデート」――「HoloLens ミートアップ@ cluster vol.1」レポートその④

World MR News

HoloLensアプリ開発の有識者が登壇し、VR/MRに向いたアプリの得意やHoloLensアプリ開発に関する様々な裏話などを披露するイベント「HoloLens ミートアップ@ cluster vol.1」が、4月22日に開催された。

こちらではその中から、杉浦司氏、宮浦恭弘氏、Yoon Park氏のセッションの模様をお届けする。

「これからはじめるAzure Kinect」by 杉浦司氏

TMCNの杉浦司氏からは、「これからはじめるAzure Kinect」というテーマでセッションが行われた。『Kinect』が最初に登場したのは、XBoxの周辺機器としてだった。ゲーム機向けであったが、Color CameraとDepth Sensorが付属しており、CVやロボット界隈では大きな衝撃が走った。

Xboxの世代が変わっていくのに合わせて、『Kinect』自信もV2へと進化を遂げている。大きく変わったところは、Depth Sensorの方式が「Time Of Flight」になったところだ。その理由には、センサーを作っていた会社がアップルに買収されるなど様々な理由があったようである。

そして、ついに日本でも発売開始になったのが『Azure Kinect』だ。Depth Sensorの方式に変化はないが、全体的に小型になり、センサーの精度も向上している。

『Azure Kinect』の開発に使用するSDKは、ふたつにわかれている。ひとつは「Azure Kinect Sendor SDK」だ。こちらは、『Azure Kinect』からColorやDepth、赤外線やIMUなどのセンサー系のデータを取得するためのものだ。また、Point Cloudへの変換などの機能も含まれている。『Azure Kinect』で大きく変わった点のひとつとして、こちらのSDKがオープンソースで公開されているところである。

『Azure Kinect』でもうひとつ変わったところは、クロスプラットフォームで動くようになったところだ。以前はウィンドウズだけしか公式にはサポートしていなかった。現在はLinuxでも動かすことができる。最近ARMサポートされるようになり、Jetsonなどのボード上でも動かせるようになった。開発言語は、基本的にはCとC++、C# Wrapperが入っている。

もうひとつ「Azure Kinect Body Tracking SDK」というSDKが用意されいてる。こちらは人物の情報を取得するためのものだ。人物の領域や姿勢などが取得できる。ちなみにこちらはクローズドのライブラリーになっているが、クロスプラットフォームで動かすことはできる。

Body Tracking自体は以前の『Kinect』にもあったが、『Azure Kinect』では方式がDeep Learningをベースにした姿勢推定になっている。これにより、人の前後が取得できたり、壁に付いている状態でも取得できるようになったりした。ただし、精度はまだまだというところなので、今後の進化に期待したいところでもある。

▲Jetson Nanoでも動くので、大きなPCを持ち歩かなくてもよくなった。

「HoloLens2 TutorialをMobileARで動かす」by 宮浦恭弘氏

今回のイベントでは2度目の登壇となる宮浦恭弘氏からは、「HoloLens2 TutorialをMobileARで動かす」というテーマでセッションが行われた。

マイクロソフトのMixed Reality公式ドキュメントのなかに、チュートリアルという項目がある。そこには、『HoloLens2』向けのものも含まれている。まだ実機を持っていない人の方が多いと思うが、エミュレーターやUnityのエディター上で動かすなど試す方法はいくつかある。また、AR Foundationでも動かすことができる。

チュートリアルの中には、月面着陸機を飛ばすというものがあるが、それをAndroid上で動かして操作することも可能だ。

MRTK V2では、クロスプラットフォームで動かす前提でモジュールなどが構成されている。その中のひとつに、試験的ではあるがAR Foundation対応が入っている。こちらはV2.2から入っており、V2.3.0からはXR Platformにも対応している。

このXR Platformとは、Unityが推進しているライブラリーで、Unity上で作られているクロスプラットフォームの仕組みである。このあたりが繋がるようになると、ほとんどのVRデバイスでMRTKを使用した開発が行えるようになる。

MRTK V2では、様々な設定をInspector上でパラーメーターを変更して動かすような形になっている。V2.3.0からは、UnityARという形でAR Foundation対応しているため、実質的にはカメラの設定でUnityARを使用するという形にして、AndroidやiOSでビルドすればOKだ。

実際にチュートリアルを動かしたいときは、書かれている手順に従い最後にカメラの設定だけAndroidやiOS向けにしてデプロイすればいい。

「MRTKアップデート」by Yoon Park氏

本イベントの最後に登壇したのは、マイクロソフト Principal UX Designer at Mixed Reality Design TeamのYoon Park氏だ。今回は「MRTKアップデート」というテーマでセッションが行われた。

MRTKでは、UnityでMixed Realityエクスペリエンスを作成するための基本的なコンポーネント、共通インタラクション、UIコントロールを提供している。MRTKの中には様々なコンポーネントがあり、それらを使ってMixed Realityエクスペリエンスを作ることができる。その上で、実験的なフィーチャーも追加されている。

マイクロソフトにはふたつのオープンソースプロジェクトがある。MRTKは、基本的なフレームワーク、インプット、UXコンポーネントを提供している。もうひとつのMRDLでは、MRTKのコンポーネントを使用した実験的なフルサンプルアプリが共有されている。

続いてMRTKのアップデート情報だ。「UI ToolBox」は、UIコンポーネントのライブラリーのような画面で簡単に参照して見つけることができる機能である。これにより、プレハブの名前を知らなくても、簡単に追加することができる。また、UIコントロールのドキュメントへのリンクも合わせて提供されている。

続いては「Button」だ。「Button Config Helper」という新しいスクリプトが追加された。これにより、アイコンのテキストを簡単に変更することができるようになった。

 

「Button Config Helper」をFontとしてアイコンを利用する場合は、TextMesProのフォントテクスチャーを生成する。ユーザーのWindows/Fontsフォルダーの中にHoloLens MDL2 Assetというフォントがある。こちらには、有用なアイコンが入っている。こちらのフォントをUnityにインポートして、TextMesProのFont Asset Creatorというツールを使い、アイコンのテクスチャーを生成することができる。

このときに必要になるコードは、MRTKのButton documentationからコピーすることができる。

続いて新しい「Toggle Buttons」だ。既存のものに加えて、チェックボックス、スイッチ、ラジオボタンが追加された。ラジオボタンでは、グループとして使用することもできる。

「Toggle Buttons」を使用するときに一番重要となるのは、インタラクティブスクリプトの中で「ToggleReceiver」というレシーバーを追加することだ。これにより、Toggleの状態にアクセスできるようになる。

続いては、リファクトリングされたスクリプトについて。最も利用されているBoundingBoxとManipulationHandlerがリファクトリングされた。BoundingBox.csはBoundsControl.csに、ManipulationHandler.csはObjectManipulator.csに変わる。当然のことながら、以前のスクリプトも保持される。

これらのスクリプトを比較してみるとほぼ同じだが、ObjectManipulatorはphysicsに正しく反応するようになった。以前はオブジェクトを掴んだときに、空間メッシュに正しく反応していなかった。新しいObjectManipulatorでは、しっかり空間メッシュに衝突するようになっている。

続いては「Solver」について。様々なポジショニングを保持できる機能が、MRTKで提供されている。そこに「TapToPlace」という新しいスクリプトが追加された。元々HoloToolKitで提供されていたものだが、それがMRTKでも利用できる。

続いて「Hand Menu」。こちらは『HoloLens2』で最も人気のあるボタンのひとつで、素早くメニューを呼び出して利用することができるコンポーネントだ。「Hand Menu」は、HandConstrainPalmUp.csを使用するが、このスクリプトの中にある「Palm up」というセクションを見ると「Require Flat Hand」というオプションがある。こちらは誤検知を防ぐためのものだ。

そこに新たに「Follow Hand Until Facing Camera」というオプションが追加された。これをオンにすると、もっと自然な動きに対応することができる。

続いては、Hand Menuのデザインがインドラインについてだ。腕を上げてその位置を維持するのは、疲れてしまう。短いインタラクションですむ小さなメニューのときはあまり関係ないが、長時間の操作が必要なUIパネルの場合、手から切り離してワールドロックすることをオススメしている。

Yoon氏のチームが見つけた問題のひとつに、誤ったアクティベーションがある。オブジェクトを操作するときに、不必要にメニューが表示されてしまう場合がある。それを防ぐために、新しく「Graze Activation」というオプションを追加している。

こちらにチェックを入れておくことで、手を見るまでメニューが表示されなくなる。

続いては「Progress Indicator」だ。こちらは元々MRTKに含まれていたが、使い方を示すために「Progress IndicatorExample Scene」を追加している。

続いては「Holographic Remoting + Hnad & Eye-Tracking」についてだ。一般的なMRは、UnityからVisual Studioにビルドして、デプロイを行っている。MRTKのInput Simulationを使うと、もっと簡単に様々なインタラクションのテストが行える。

USBケーブルでリモーティングが行えるようにもなった。映像のクォリティとスピードも安定的になる。こちらを利用する方法は、『HoloLens』でWi-Fiをディスコネクトし、「Holographic Remoting Player」アプリを実行すると、169から始まるIPアドレスが取得できる。このIPアドレスを利用することで、USBケーブルからリモーティングが可能になる。

続いては「Scrolling Collection」について。こちらは、ハンドトラッキングの入力により、3Dや2Dのオブジェクトをスクロールすることができるコンポーネントだ。「Hnad Coach」は、アプリの中でアニメーション3Dハンドでユーザーに素早くガイドするときに便利である。

最後は「Scene Understanding」についてだ。こちらは、『HoloLens2』の新しい機能でMRTKにインテグレーションしている。『HoloLens2』のOSレベルから提供されているものだ。そのため『HoloLens1』では動かない。

PhotoWords 高島おしゃむ
コンピュータホビー雑誌「ログイン」の編集者を経て、1999年よりフリーに。
雑誌の執筆や、ドリームキャスト用のポータルサイト「イサオ マガジン トゥデイ」の
企画・運用等に携わる。
その後、ドワンゴでモバイルサイトの企画・運営等を経て、2014年より再びフリーで活動中。