どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

Mixed Realityなるものをいじってみる

ARやらVRやらが世の中で騒がれ始めて結構経ちますが、何やらMR(Mixed Reality)なるものがあるようです。 なんとなく興味がでてきたのでちょっとだけ入門してみたいと思います。

デバイスとしてはHoloLens 2というデバイスがMRデバイスとして該当するようで、これを使うとMRを体験できるみたいです。

www.microsoft.com

ということで、今回はHoloLens 2の開発者向けチュートリアルを眺めてみたのでそのメモです。

MR is 何?

そもそもMRってなんじゃい??ってなったので調べてみると、説明としてはこんな感じのようですね。

Mixed Reality は現実世界とデジタル世界を組み合わせたものです。 これは、人間、コンピューター、環境の相互作用における次の進化であり、これまでは想像することしかできなかった可能性が引き出されます。 Mixed Reality の概要 - Mixed Reality | Microsoft Docs

見た感じ、現実空間デジタルの世界を投影それらと相互作用する世界観をMRと呼ぶようです。

次に、ホログラムってなんじゃい?ってなったので見てみると、

HoloLens を使用すると、ホログラムつまり自分の周囲に表示される光と音で構成されたオブジェクトを、実際のオブジェクトであるかのように作成できます。 ホログラムは、視線入力、ジェスチャ、音声コマンドに応答し、周囲の現実世界のサーフェスと対話できます。 ホログラムを使用すると、世界の一部であるデジタル オブジェクトを作成できます。 Mixed Reality の概要 - Mixed Reality | Microsoft Docs

と書いてあります。 これだけ読むと、現実空間に配置された実際の物体かのようなデジタルのオブジェクトをホログラムと言っているようです。

へー、すごい。(小並感)

使ってみる

なんとなく、世界観はわかったところで本題に入ります。 適当にいじって遊んでみたいと思います。 とはいうものの、このデバイス、お値段なんと 3,500ドル(約37万円)と、普通の人にはとてもじゃないですが買えません*1。 なので、シュミレータを使って、模擬的に遊んでみたいと思います。

ドキュメント

マイクロソフトのドキュメントはこちらです。

docs.microsoft.com

環境構築

どうやらMRアプリ開発には大きく4種類の方法があるようで、

  • Unity
  • Unreal Engine
  • JavaScript
  • Native

となっています。

ただ、本記事執筆現在では、ほぼUnityで開発する方法一択のようです。 ということでUnityを使って開発をするという体で進めていきます。

ツール一覧

どうやらこの辺を見ると必要なものがわかるようです。

docs.microsoft.com

  • Windows 10
    • この時点でWindowsで開発する縛りになります(←当たり前)
  • Visual Studio 2019
  • Windows 10 SDK
  • HoloLens 2 エミュレーター

そんでもってUnityについても推奨環境があるようです。 最近のUnityはUnity HubというUnityの複数のバージョンを管理するアプリケーションがあるので、そちらを使うといくつもUnityのバージョンをダウンロードしたりしなくて済みそうです。

docs.microsoft.com

Unityは、バージョンが違うだけでアプリがビルドできなくなったりするので、バージョンはちゃんと確認して合わせましょう。 (私は一度やらかしました…)

本記事執筆時現在ではUnity 2019.2.x系を使うことが推奨されています。

具体的なインストールに関しては、こちらの記事を参考にさせていただきました。

qiita.com

チュートリアル

さて、本格的にやっていきたいと思います。チュートリアルはこちらです。*2

docs.microsoft.com

1.概要と目標 / 2.プロジェクトと最初のアプリケーションの初期化

まずはプロジェクトを作ってみましょうといった内容でした。 ここで各種ツールが正しく動作していれば、一通りビルドまで体験できます。

ここは本当にやるだけなので省略。

3.ユーザー インターフェイスの作成と Mixed Reality Toolkit の構成

この辺りからUIっぽくなってきました。 おそらくHoloLens関係でかなり多用するであろうボタンについて取り扱っています。

実際にやるのは

  • ボタン押下時/離脱時の挙動の定義の仕方
  • ボタンの整列
  • 3次元テキストの配置

を取り扱います。

イメージはこんな感じです。

4.動的なコンテンツの配置とソルバーの使用

今度はソルバーという概念について取り扱いです。チュートリアルの解説によればこんな感じですね。

MRTK では、ソルバーとは、UI 要素がシーン内で、あなた、ユーザー、他のゲーム オブジェクトを追跡できるようにするために使用される、スクリプトと動作のシステムです。 また、特定の場所にすばやくスナップして、アプリケーションをさらに直感的にするために使用することもできます。 入門チュートリアル - 4. 動的なコンテンツの配置とソルバーの使用 - Mixed Reality | Microsoft Docs

Mixed Realityでは現実空間にデジタルな物体を投影します。 そのため、ユーザーは現実世界を自由に動き回ることができます。

ここで問題になるのが、デジタルなUIをユーザーの動作に合わせて追従させたい場合が出てくる場合です。 ユーザーの動きに追従してUIが移動したりすることを可能にするのが「ソルバー」と呼ばれるもののようです。

なんかオブジェクトがついてきます。

手首を追っかけて箱がついてきます。

5.3D オブジェクトの操作

今度はユーザーがオブジェクトを直感的に操作できるようにします。

この他伝わりにくいですが、サウンドエフェクトなんかも取り扱います。

6.高度な入力オプションの探索

一応高度な入力として

  • 音声入力
  • パンジェスチャ
  • アイトラッキング

があるようです。

2Dのスクロールはこんな感じでした。

3Dのスクロールはこんな感じです。

視線追跡でオブジェクトの操作をするとこんな感じらしいです。

このあとの、「7.月着陸船サンプル アプリケーションの作成」はやる前に力尽きたので、気が向いたらまた今度やることにします。

感想

なんとなく成り行きでMixed Realityについて勉強してみました。 ゲームの世界はあまり詳しくないんですが、やってみると奥が深くて結構楽しいですね。

チュートリアルなんで、やれば普通に動くのは当たり前なんですが、それでも面白いです。 普段のプログラミングとはまた違ったプログラミングの方法なのがなんか新鮮でした。 あとはデバイスがないと、なんか全然凄さわかんないんで、実機使ってなんかやるのは機会があればそのうち。。。

「今までこんな事やってこなかったのに、なんで今になってこんなことやってんの?」だって? それはこっちが聞きたいっすよ…

*1:どうやらサブスクリプションも今後は出るらしいので、それであれば月1万円ちょっとくらいで使用できるようです(それでも高いですけど)

*2:どうやら初代HoloLensのチュートリアルとは別物らしいです。難しい… https://docs.microsoft.com/ja-jp/windows/mixed-reality/holograms-100