Unity と MRTK を使った HoloLens 2 アプリ開発概要


Intro to Building Apps for HoloLens 2 Using Unity and Mixed Reality Toolkit

このセッションのまとめ
■ HoloLens 2 の新しい操作:指で押す、掴む、近遠での操作の違い
■ 基本的に全てMRTK v2にイベントかコントロールで実装
■ ライブデモで紹介
■ Manipulation プレハブでハンドリング可能に(v1のTwoHand相当)
細かい技術説明のセッションではないのでボタンの使い方参照程度

バルセロナでHoloLens 2のデモを行った Julia Schwarz さんと MRTKの開発チームの Andrei Borodin さんによる HoloLens 2のアプリ開発情報。Julia さんはHoloLens の研究開発チームで手での操作の研究開発をされていた方なんです。(なのでこのセッションではどういう研究をしてきたかという内容が中心)

2Dの世界から、HoloLens によってホログラフィックを現実世界に表示することができるようになり、HoloLens 2ではホログラムを自然に触って操作することができるようになります。

開発の基本はゲーム開発で使われているUnity。そしてMixed Reality Toolkit (MRTK)。MRTKは今は OpenVRやARKit, AR Core にも対応。

MRTKはでは、様々なコントロールや操作のための機能が提供されています。

特に、MR 固有機能への対応として、アイトラッキングや、空間認識、テレポーテーションなど様々機能が実装されています。

で、ここで、Julia さんが、バルセロナでのデモの様子について説明。でもで紹介した機能はMRTKはを使って実装することが出来ます。

でここからは、HoloLens 2のデザインのガイドラインについて紹介しますが、MRDocsにドキュメントがありますので、必ず参照しましょう。

新しい操作の基本の一つが、「指でボタンを押す」という操作。HoloLens 2 では3Dで入力し3Dで出力することが出来ます。ここで重要なのが音と画像との連携。指がどこを押しているのかホログラフィックと干渉したときに光らせることが大事です。

HoloLens2 はハンドトラッキングが出来、指に対してコライダー(衝突判定できるオブジェクト)を作ることが出来ますが、どの指で押しているかの判定は難しいものでした。そこで研究の結果我々は人差指にコリダーを持たせること事で自然な操作ができるようにしました。

そういった操作に対応できるように、MRTKのボタンは設計・実装されています。

そして新しい操作が「掴む」というという操作。これを実装するときは大きなオブジェクトに対しては操作用のハンドルが付いたキューブを用意するのがおすすめです。そうしない場合、人はリアルなものとなじように扱おうとするのでその対応は少し難しくなるでしょう。

そういった操作のためにも、音声や映像によって指とオブジェクトの相関関係がどうなっているのかフィードバックをすることが大事です。MRTKでは状態によっていくつかのビジュアル&オーディオパターンを提供しています。

MRTKではManipulationHandlerで機能を提供しています。非常に万能なオブジェクトで片手、両手での様々なオブジェクト操作に対応しています。

ManipulationHandler は近距離での直接操作と遠距離での遠距離操作にも対応しています。遠距離では、操作用のガイドラインが出てポインティング操作をすることが出来ます。

ちょうど、VRデバイスのモーションコントローラーでのガイドラインと同じような感じの線が手から伸びで操作します。

こういった操作用のオブジェクトの説明がすべて http://aka.ms/mrtkdocs にまとめられています。開発するときはぜひ参照して下さい。

後半は生実装デモ。Unityでの新規プロジェクトにボタンとスライダーを配置して操作できるようします。

Unityで新規プロジェクトを作ってMRTK v2をインポートします。ここでもう Unity Editor 上で実行できるのですが、Unity Editor 上で手のエミュレーションとフレームレートの表示が標準でついていることがわかります。 (Diagnostics の設定で消すことも勿論出来ます)

ここでボタンパネルのプレハブを挿入。ボタンを見るとBoxコリダーがあり、Pressable Button と Near Interaction Touchable スクリプトがあり操作できるようになっています。

Pressable イベントには タッチ、Press, Relase 各イベントが実装されて色やビジュアルがわかるようになっています。黄色いパネルが押されたときの反応するパネルになっていてその位置を前後に移動させることでボタンの反応する浅さを変更することが出来ます。

Unity エディターでの手の操作はキーボードの WASDで移動ができるのでそれを使って操作します。

続けてスライダーハンドルを掴んで操作しますが、掴む操作はキーボードでのスペースキーです。遠距離の場合はガイドラインが表示されて操作することが出来ます。各機能はPinch Slider オブジェクト直下に実装されていいます。

ちなみに、MRTKのコントロールを拡張するときは、MRTKv1 と違っていきなり変更ができなかったりします。なので一度Cloneして自分のプロジェクト上にコピーを作ってから設定を変更します。

マルチデバイス対応しているので、コントロールタイプを変更することもできるようになっています。

今度は、Mac上でUnityを起動して、ARCoreDeviceとSpectatorViewのプレハブをMRTKから追加します。

出来上がったプロジェクトで実行しますが、このようにスマフォとHoloLens2のアプリを連携して表示できるSpectatorViewの機能を実装することが出来ます。

最後に Azure Spatial Anchors について一言だけ説明 http://aka.ms/SpatialAnchors

MRTKとシェアリング技術は非常に重要です。http://aka.ms/MRTK

コメントを残す

WordPress.com Blog.

ページ先頭へ ↑