ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

MR DevDaysに参加して HoloLens 2のアプリ開発をしてきました

2019年5月2日、3日に レドモンドのマイクロソフト本社にてMR DevDaysというイベントが開催されました。 名前の通りMRに関する開発セッションやアプリ開発体験ができます。今回は2019年内に発売予定のHoloLens 2のアプリ開発を行ってきました。 セッションは下記ですが、英語は...なのでハンズオンラボにてアプリ開発を進めていました。

docs.microsoft.com

TL:DR

  • あくまでの開発中のHoloLens 2なので、製品版では変わることがあります。
  • ホロラボで開発したものを中心に4つほどHoloLens 2化。テストアプリとして新規に5つほどテストデプロイしました。
  • 総じて順当進化で良い。アイトラッキングは良い、ハンドトラッキングはもう少し良くなって欲しい。

f:id:kaorun55:20190502112909j:plain

目次

Kinect編

blog.kaorun55.com

注意事項

  • 今回はあくまでの開発中のHoloLens 2なので、製品版では変わることがあります
  • 必ずしも現行のHoloLensに比べてよくなってる部分ばかりではありません
  • 過度な期待はせず、製品が発売されたらぜひ自分の目と体で確かめてください

今回、MRCなど画面の投稿は禁止されているので、見た目については想像にて補完ください。

ハードウェア

確かにかぶりやすい。 フリップアップもじゃまにならず、そのままコードを書いているとつけてることを忘れるほど。ただ、前に出っ張るので、壁とかにあてそう。動く機構がついたので、全体的にはHoloLens 1よりも扱いに気を付けないといけない気がします。

f:id:kaorun55:20190502113219j:plain f:id:kaorun55:20190502113459j:plain

アプリ開発

ドキュメント

MRTK

github.com

ハンズオン資料

ここから

docs.microsoft.com

開発環境

開発環境はこちらを参照してください。 前提として、CPUが変わったのでアプリはARMまたはARM64でビルドしないと動作しません。エミュレーターはx86で動作環境がことなるのでネイティブプラグインなどは注意してください。

Getting your app ready for HoloLens 2 - Mixed Reality | Microsoft Docs

Unityは2018.3および2019.1がサポートされています。 Unity 2019.1を使用した場合の違いはARMおよびARM64でのビルドが可能(2018ではARMのみ可能)、LI2CPPビルドのみ可能(.NETビルドは不可)

項目 Unity 2018 Unity 2019
プラットフォーム ARM ARM, ARM64
対応ビルド .NET, IL2CPP LI2CPP

Visual Studioは2017が推奨されていますが、Visual Studio 2019でもビルド可能です。ARM64ビルドはVisual Studio 2019でのみ可能となります。

HoloLens 2での新機能

  • ハンドジェスチャー(人差し指先の認識、手の関節の認識)
  • アイトラッキング(目の追跡、光彩認証、IPDの自動調節)

調査事項

既存のHoloLens 1アプリをHoloLens 2で動作させる

既存のHoloLens 1アプリをHoloLens 2に移植する。 最初はかなり多いシナリオかと思います。今回はホロラボで開発したものを中心に4つほどHoloLens 2化しました。

開発時

  • Unity 2018/2019で開く(MRTKのエディタースクリプトなどがエラーになるのでエラーをなくす。今回はエディタースクリプトだけだったので削除して対応)
    • 既存のUnity 2017とVisual StudioでARMビルドすれば、そのまま動作する可能性あり(検証し忘れたので記録)
  • Vuforia は(現状)ARM用DLLがないので移植できないかも
  • Unityでビルド、VSでARM向けにビルド
  • HoloLens 2にデプロイ

実行時

  • HeadのGazeはHand Gazeに自動変換
    • 今後のアップデートでMRTK側でHand Gaze、もう一つ何か、従来のHead Gazeの3種類のうちから選択可能になるとのこと
  • 単純に処理性能と視野角が広がってるので、ポーティングするだけで、体験が改善するアプリは結構ありそう

x86エミュレーション

Lenovo C630のようなPCのWindows 10 on ARM環境では、x86(Win32)でビルドした実行ファイルがそのまま動作します。 これはWindows 10 on ARM環境でx86のエミューレーションを行っており、本来はCPUアーキテクチャが異なるため実行できないx86の実行ファイルをARM環境で動作させることができます。なお、x86エミュレーションは32bitアプリのみでx64のような64bitアプリのエミュレーションはできません。

この機能はHoloLens 2にはないようで、x86でビルドしたアプリの配置や、パッケージのインストールはエラートなります。 そのため、既存のHoloLens 1アプリをHoloLens 2で実行させる場合は、ARMでビルドをし直す必要があります。

性能について

おおよそ2倍ほど性能あがってる可能性があります。

  • HoloLens v1 で 7-9FPSほどで動作していたアプリがHoloLens v2 では 16-20FPS
  • HoloLens v1 で 30-40FPSほどで動作していたアプリがHoloLens v2 では 60FPS安定

アプリからのメモリ使用量

ARM(32bit)、ARM64(64bit)にかかわらず、アプリから使用できるメモリ量は2GBのようです。

  • HoloLens 1 - x86 → 900MB
  • HoloLens 2 - ARM32 → 2048MB
  • HoloLens 2 - ARM64 → 2048MB

所感

  • 付け心地はとてもいい。フリップアップも慣れると気にならない。
  • 性能向上が倍ほど見込めるのは意外だった(視野角が広がったのであまり期待してなかった)。
  • アイトラッキング、光彩認証など、目にかかわる部分は非常に良かった。
  • 半面、ハンドトラッキングは操作性に難あり(慣れの問題?)。近距離では指先のタッチ、中距離以降はGazeとAirTapなので操作が切り替わると混乱する。など
  • HoloLens 1アプリのポーティングもそれほど難しくない
  • HoloLens 2専用アプリについては、Hololens 1と別物として考えたほうが良い(UI/UX、視野角などが変わるので)

Twitterなどからもらった質問事項

ハンドトラッキングの範囲

このくらい

視線のスクロールについて

思った以上に自然にできた

ARM64でのビルド

Unity 2019 + MRTK v2 + ARM64でのビルドは一応実機動作まではOK

Depthへのアクセス

リサーチモードのみ

充電用のUSB-CはUSBホストを持っている?

持っているらしいけど、ドライバのインストールができないので、その制約がクリアできれば使えそう

Holographinc Remotingについて

現状、Hololens 2側のアプリがないためできない

MRC(Mixed Reality Capture)での録画

HoloLens 1と同様に可能