Search Unity

Mixed and Augmented Reality Studio (MARS) for Unity は、次世代の空間コンピューティングアプリケーションを制作するためのオーサリングツールとランタイムシステムのスイートです。このスイートの鍵となる要素は、拡張現実(AR)デバイス上でのオーサリングとデータキャプチャーを可能にするコンパニオンアプリです。私達は、PC 上のエディターツールとデバイス上で使用するオーサリングアプリケーションの組み合わせが、AR コンテンツ制作の最も強力で便利な方法であると考えています。

Unity は Unite Berlin 2018 で MARS の発表を行い、続いて Unite Copenhagen でその進捗報告として、スマートフォン向けコンパニオンアプリの早期バージョンを実際にお見せしました。また今年のブログ記事では、ヘッドマウントディスプレイ(HMD)版コンパニオンアプリの開発を通して得た空間デザインに関する知見を共有させていただきました。より概要的な情報は MARS に関するページでご覧いただけます。本記事では、このアプリを制作するに至った理由と、このアプリが MARS の AR オーサリングワークフローの中でどのような機能を果たすかについてご紹介します。

文脈の中での編集

コンテンツのオーサリングにおいて理想的な状況は、クリエイターがあらゆるツールを利用できることです。MARS コンパニオンアプリを使用すれば、トラッキングされたデバイスを使用した 3D オーサリングが可能なだけでなく、ユーザーがこれをあらゆる場所や AR デバイスで(プロジェクト全体あるいは Unity エディターへのアクセスがなくても)行えるようにできます。例えば美術館巡回アプリの開発を行う制作会社は、物理的に美術館に行って作品の写真を撮影したり展示室をキャプチャーしたりする必要がありません。制作会社はクライアント(つまり美術館のキュレーター)とプロジェクトを共有でき、またクライアントは MARS コンパニオンアプリを制作会社のスマートフォン向けアプリストアからインストールし、必要なデータをキャプチャーしてクラウドに保存することができます。

離れた場所にいるユーザーが、実際のデータに照らし合わせて MARS プロキシを編集できます。

環境認識アプリケーションは、予測不可能で動的な環境を解釈しなければなりません。こうした制約に真っ向から対応するために、MARS には強力なシミュレーション機能のセットが搭載されています。これには合成環境、シミュレートされた AR データのリカバリー、AR データの録画・再生機能が含まれます。これらのツールは、データの制約をテストしたり再生モードで AR インタラクションをテストしたりするのに非常に役立ちます。しかし、最大の利点は、アプリの実際のデバイス上での見た目をリアルタイムで確認できることです。ユーザーは AR デバイス上で、実際の空間(専用の場所、あるいは任意の部屋)内にシーンをレイアウトすることができます。また、ライティング条件や特定の部屋のセットアップが原因でバグが発生した場合には、実際のデバイスデータがあることで、バグの再現と修正が行いやすくなります。

私達は、高度な技術的スキルを持たないユーザーにも使いやすく、かつ Unity デベロッパーにとって馴染み深いワークフローの制作を目指しています。ユーザーは、従来と同様のアセットを含む従来と同様のシーンを、従来の用語と(場合によっては)インタラクションのパターンを踏襲したツールを使用して作成できます。コンパニオンアプリ内のプロキシはアクティブなステートを持ち、子オブジェクトを持つことができ、コンポーネントのリストを表示します。ユーザーは「シーン」の保存/読み込みを行い、全てのアセットを「プロジェクト」内にグループ化します。完全なヒエラルキーとインスペクターにアクセスすることができませんが、将来的にはそうしたツールも EditorXR ランタイム機能セットに含まれる予定です。

コンパニオンアプリ開発の理由

Unity を使ったモバイル向け開発における最大のペインポイントのひとつはビルド時間です。これまでのビルド時間改善の経緯については、最近の Unite Now での講演でご紹介しています。これら全ての機能は、開発者が最終的なアプリケーションのイテレーションとテストをターゲットハードウェア上で行うために役立つものとなっています。MARS コンパニオンアプリを使用し、ターゲットデバイスの AR 機能を利用してコンテンツの特定部分のイテレーションとテストを行うことにより、より多くのチームメンバーが(開発中でも現実世界の文脈内でも、また Unity エディターを直接操作できなくても)プロセスに参加することができます。

MARS の Simulation ビュー

そして上記を実現するに当たって役立つのが、MARS コンパニオンアプリです。シーンのレイアウト担当者が(それがユーザーであれクライアントであれ、遠隔地のチームメンバーであれ)、環境のキャプチャーや録画データの作成を行ってそれをクラウドにアップロードし、それを Unity ユーザーがエディター内にダウンロードして作成物の確認を行うという流れが可能になります。エディター上では、アプリがバーチャル環境内で適切に機能するようになるまで制約を調整し、その編集をクラウド上に保存することができます。

コンパニオンアプリを Unity で開発することにより、私達は、あらゆるプラットフォーム・あらゆるユースケースにおいて顧客の皆様により柔軟に対応することができます。Unity では現在 Android・iOS・Magic Leap・Hololens 向けのコンパニオンアプリを開発中ですが、理論上は Unity のサポートしている全てのプラットフォームがこれらのコンパニオンアプリのプラットフォームとして機能します。Unity に対応していて現実世界のデータをキャプチャーできる全てのデバイスが、空間オーサリングのプラットフォームとなり得ます。

また、各プラットフォームには独自の強みがあり、理想的なオーサリング環境を実現するためには、各デバイスをその最大の強みを引き出す形で使用することが求められます。精密で複雑なワークフローの場合にはキーボードとマウスに勝るものはありません。一方で、存在感やスケール感を確認したり、環境認識の限界に対応するに当たっては、デバイス上で直接作業するのが最も適していることも分かりました。

また現在、その場でのフィードバックのさらなる高速化の実現に向け、XR Platforms チームが、エディターとデバイスの直接接続を確立してリアルタイム AR データのストリーミングを可能にする AR Remoting パッケージの開発を進めています。これらの機能は、オンライン化され次第、MARS の Simulation ビューとコンパニオンアプリに含める予定です。

機能の分類

MARS コンパニオンアプリのユーザーが実行できる主なタスクは、データキャプチャーと状況内オーサリングの 2 つに分類できます。これら両方のタスクには、エディターへのデータ送信とエディターからのデータ受け取りが含まれており、これはクラウドストレージ経由で行われます。つまり、世界中のユーザーが同じプロジェクトに一緒に取り組め、データがセッション間で維持され、ユーザー間で共有されるということです。Unity は、既存の Cloud Build サービスのアカウントとプロジェクトパーミッションを使用して、どのユーザーがどのデータにアクセス可能かを管理します。特定のプロジェクトのクラウド・ダッシュボードにアクセスできるユーザーは、自身の AR デバイスとエディターのどちらからでも、そのプロジェクトのコンパニオンアプリのデータにアクセスすることができます。Unity は QR コードを使用してプロジェクト ID を転送し、ユーザーは Unity アカウントまたは QR コード経由で共有される一時的なトークンを使用してアプリにログインできるようになります。ユーザーはオフラインで、あるいはリンクされていないプロジェクトに対して作業を行った上で、データを同期するか、同じリソースに加えられた編集間の競合を編集のタイミングに基づいてリゾルブすることができます。

データのキャプチャリング

データのキャプチャリングは幾つかのタスクによって構成されます。ユーザーは Environment モードを使用して静的環境スキャン(Magic Leap と HoloLens の場合は完全なメッシュ、ARKit と ARCore からは一式の平らなサーフェス)をキャプチャーできます。将来的には、サードパーティー製ソフトウェアをスマートフォン用に統合してメッシュスキャンなどの AR データを生成し、これらのアプリのカスタムビルドを作成してそれを記録することが可能になります。現段階では、OS の提供するデータを中心に取り組みを進めています。ARKit と ARCore の場合は、ユーザーが手動で部屋の角をなぞってシミュレーション環境内に壁を作成することも可能となっています。これらはデータとしてシミュレーションで利用することはできませんが、スキャンしたサーフェスのビジュアル的な文脈提供に役立ちます。

Simulation ビュー上の ARKit スキャン

Simulation ビュー上の Magic Leap スキャン

問題やインタラクションをテストするに当たって、動き回るユーザーとその環境のスキャンが必要な場合、アプリのユーザーが Data Recording モードを使用して経時的に変化する動画・カメラパス・環境のデータをキャプチャーすることができます。例えば単純な「ユーザーがサーフェスに近付く」部分の録画も可能ですし、スキャンニングプロセスの最初から最後までの完全な録画も可能です。開発者の皆様には、基本的なユーザーインタラクションを録画してエディター内で再生し、ユーザーが現実世界内でデバイスを扱った結果つくられた「粗の目立つ」データを、出来る限り細密に調整されることをお勧めします。当然ながら動画ファイルはかなり大きくなる場合もあるので、複数のアクションが含まれる長い録画よりも、特定のアクションに絞った短い録画を作成するほうが賢明です。また、回線の処理量を削減するために、録画・アップロードするデータストリームを選択することも可能です。

また、ユーザーは、AR Image マーカーを自身のデバイスのカメラでキャプチャーし、コンテンツの固定(アンカー付け)のために、画像上で特定の場所あるいは「ホットスポット」のアノテーションを行うこともできます。

Image マーカー用の写真をキャプチャーしてホットスポットのアノテーションを行う

今後の展望

私達は、EditorXR に関わるこれまでの経験から、VR シーン内に居ながらそれに編集を加えることが非常に有益であることを学びました。さらに、頭と手のトラッキングで可能になる自在な制御を利用することで、楽しみながらシーンを素早くレイアウトすることができます。また、テキストの操作や微調整などはマウスとキーボードで行うのが最も効率的であることも分かりました。この種のタスクは AR・VR では避けるのが一番です。MARS コンパニオンアプリには、ランタイムでのシーン編集をサポートするために作成された EditorXR の機能が搭載されています。現在、これらの機能を再使用可能なパッケージに展開して Runtime Authoring Framework の作成を進めています。トランスフォームの操作機能、インスペクター、シーンのシリアライズ化機能は、Unity エディター外でのオーサリング作業用に共有コードベースから搭載される予定です。

複数のデバイスに向けてワークフローをデザインしたことによって、予期せぬメリットが生まれました。MARS Create and Compare フローは、ユーザーがエディター内でアセットを直接 Simulation ビュー内にドラッグアンドドロップすると MARS が必要な制約を推測してくれるフローですが、これは、MARS コンテンツを HMD 向けにオーサリングする方法を検討する中で実現したものです。Magic Leap を使用する場合「オブジェクトを掴んで環境内の目標の位置に配置する」というのは非常に理に適っています。これはエディター内で行うのも同様に理に適っていますが、Unity で馴染みがあるのは「プレハブをシーンビューにドラッグアンドドロップする」操作のみです。今後、このコンパニオンアプリの機能を引き続き進化させてゆく中で、さらに別の形でも、空間デザインの考え方を 2D ツールに取り入れる方法を見い出すことができるかもしれません。

今後も、目前に迫る MARS の一般公開に向け、その機能やこれまでに得た知見を、開発の進行に合わせて共有して参ります。スマートフォン向けコンパニオンアプリのビルドは MARS 公開に併せて App Store と Google Play で 公開の予定となっていますので、クリエイターの皆様には、各種ワークフローをすぐにお使いいただけます。続いて HMD 版は今年中に公開の予定です。私達は、MARS は空間コンピューティング用のアプリケーションの開発に最適な方法であり、使用可能な全てのツールを使用していただくことで、クリエイターの皆様に最大のメリットをご提供できると考えています。

これは、まだまだ始まりに過ぎません。私達は、Unity エディター外でのオーサリングの可能性を拡大し、連携された、場所を問わないオーサリング環境への第一歩を踏み出せることを非常に嬉しく思っています。今後 Unity に開発を希望される機能がございましたら、ぜひお聞かせください。