Search Unity

Project MARS(Mixed and Augmented Reality Studio/複合・拡張現実スタジオ)は、より質の高い、世界中のどこにいても実行可能な空間エクスペリエンスやゲームを作成するクリエイターのために設計された、Unity の新しいツールセットです。本機能は、2 つの部分(Unity 拡張機能と、電話端末および AR ヘッドマウントディスプレイ〈HMD〉用のコンパニオンアプリケーション)から構成されています。

私たちは今、コンピューターの世界における目覚しい転換点を迎えています。ユビキタスセンサーや高速プロセッサーの出現により、1960 年台から様々な形で描写・表現されテストされてきた空間コンピューティングのビジョンが実現されつつあります。私たちはついに、環境の情報を取り込み、それを使って面白い事が行える、様々な柔軟で小さいコンピューターを手に入れました。

Unity は長い間、ゲームやシミュレーションのためのデジタル環境を作成するために使用されて来ましたが、こうした環境は、ひとつのウィンドウを通して、自分自身はソファに腰掛けたまま、周辺機器を使ってアバターに広い世界を走り回らせるという形でしか体験できませんでした。バーチャルリアリティー(VR)によって人々がウィンドウの中に足を踏み入れられるようになったことで私たちは未来へと一歩近付き、複合現実(MR)によって、デジタルな物体(オブジェクト)がウィンドウの向こう側の現実世界に飛び出すことが可能となりました。

すべての分野のクリエイターが、MR 体験の制作に Unity がどれほど役立ち得るかを学んでいます。アニメーション、物理、ナビゲーションなど、デジタル環境用に開発されたあらゆるシステムをそのまま、現実世界で実行でき、また現実世界の現象に反応できるアプリケーションのテストと構築に使用することができます。

しかし、Unity Labs の Authoring Tools グループが AR/MR のユースケースの詳細な調査を通して学んだのは、「アプリケーションを現実世界で機能させるだけでなく、現実世界の情報をエディター内により多く取り込めるようにしなければならない」ということです。何が現実で何が現実でないかを Unity に伝え、XR アプリケーションのデザイン、開発、テストをより行いやすくするための、簡単な方法が必要とされているのです。

世界中のどこにいても実行できる質の高い空間エクスペリエンスやゲームを作成するクリエイターのために設計された Unity の新しいツールセット「Project MARS」をご紹介します。「MARS」は「Mixed and Augmented Reality Studio」の頭文字を繋げたものです。MARS は 2 つの部分(Unity 拡張機能と、電話端末および AR ヘッドマウントディスプレイ〈HMD〉用のコンパニオンアプリ)から構成されています。

2018 年の Unite Berlin で Project MARS の発表が行われました。本記事ではベータ版のリリースに先駆けて、初回の発表以来開発を進めてきた本ツールセットと新機能についての概要をお届けします。

MARS の主な機能と MARS によって解決される課題

Simulation ビュー

 

Simulation ビュー は、MARS の提供する最も重要な新機能のひとつです。MR/AR アプリケーションの特筆すべき特徴のひとつは、定義が必要な空間が 2 つ(Unity のワールド空間と現実世界の空間)あることです。Simulation ビューでは、オブジェクトを配置して、シミュレートされた現実世界空間でイベントのテストを行うことができます。これはエディター内に新しく追加される専用ウィンドウとして提供され、現実世界やシミュレートされた世界のデータ(録画された動画、ライブ動画、3D モデル、スキャンなど)を入力し、そのデータの上にアプリケーションを直接レイアウトすることができます。このウィンドウには、安定した AR アプリケーションを現実世界で実行しながら確認、プロトタイプ、テスト、ビジュアライズするためのツールと UI が含まれています。

Simulation ビューの機能は簡単に説明できるものですが、その開発に当たっては、私たちが「シミュレーションギャップ」と呼んでいる現象に対応するために、複雑なシステムを作成する必要がありました。シミュレーションギャップとは、コンピューターがデジタルオブジェクトに関して持っている完全な情報と、部分的で不完全なデータしか検知できない現在のデバイスやセンサーとの間の差異のことです。私たちはこれを解決するために様々な方法(シミュレーションによるサーフェスデータの特定から、Unity の安定したクエリシステムまで)を用いています。これに関しては、今後のブログ記事でさらに深く掘り下げた説明をお届けします。

Simulation Device ビュー

 

Simulation Device ビューは、Simulation ビューの「裏面」機能です。Unity エディター内で環境をシミュレートするというだけでなく、ここでは環境内を動き回るデバイスもシミュレートできます。この視点によって、モバイル AR デバイスでアプリケーションを体験する大部分のユーザーと同様の体験を、簡単に行うことができます。このビューによって、異なる空間で AR アプリケーションが正常に機能するかどうかを(ひとつひとつ物理的にテストすることなく)確認することが可能となるだけでなく、AR アプリケーションの開発におけるイテレーション時間が大幅に短縮されます。キーボードとマウスを使用してカメラをデバイスのように操作することも可能ですし、デバイスでコンパニオンアプリを実行して現実世界のデータをエディター内にストリーミングすることも可能です。

現実世界の概念を定義する新しい方法

MARS には、現実世界のオブジェクトをワークフロー内で形容し、定義付け、ビジュアライズするための一連の新しい項目が提供されています。Condition(条件)がオブジェクトを定義し、複数のオブジェクトがシナリオを定義します。

まず Condition の設定から開始します。これは各種の特徴(オブジェクトのサイズ、GPS 位置、形状など)を定義するものです。

次に、一式の Condition によって定義される Real World Context(現実世界の状況)を設定します。例えばテーブルを定義したい場合、Surface Size([例]「このサーフェスは最低 1m x 1m である」)、Alignment([例]「このサーフェスは水平面である」)、Elevation([例]「このオブジェクトは地上から最低 1m の高さにある」)などの Condition が使用できます。

これらの Condition においては、ユーザーが置かれる空間のバリエーションに対応し得るだけの曖昧さと余裕を持たせることが重要なので、空間的 Condition の多くは最小と最大の範囲で定義されます(例えば「このサーフェスのサイズは 1m x 1m から 3m x 3m の間である」など)。これらの空間的 Condition は、エディター内で範囲のビジュアライズと調整を行うためのシーンギズモを描画します。

上記の例の多くは、サイズ、高さ、ジオロケーションなど、オブジェクトの空間的プロパティに関するものですが、Condition は空間的なものである必要はありません。例えば時刻や天気などの Condition(「このコンテンツは晴天の日にのみ発生する」など)も定義することができます。

より複雑で特殊な挙動を作成する場合は、これらの Real World Context をグループにまとめて、より大きなシナリオを定義することができます。例えば AR 動画ストリーミングアプリを制作したい場合、プレイバック制御をコーヒーテーブルに置き、動画ライブラリを本棚に置き、バーチャル画面を部屋の中で最も大きな壁に配置したりすることが可能です。まずこれらの Real World Context(テーブル、本棚、壁)のそれぞれを定義した上で、それらすべてをこの(複数の現実世界のオブジェクトを含む)部屋の定義に(ひとつのグループとして)含めます。

もちろん、こうした現実世界の定義のすべての段階において、定義しているオブジェクトがユーザーの環境内に存在しない可能性があることを考慮する必要があります。例えば上記の例で、ユーザーが本棚を持っていない場合でも、アプリケーションが正常に機能し、より単純な条件にスムーズに適応できるようにしなければなりません。これに対応すべく提供されているのが Fallback イベントです。これを使用すると、次善のシナリオと最悪のシナリオ([例]ユーザーの環境にサーフェスが 1 つしか検知されない場合)を定義することができます。この「最善 → 許容範囲内 → 最低限」の階層構造によって、最善のシナリオ(開発者がアプリのデザインに当たって想定した環境と概ね類似した環境をユーザーが慎重にマッピングしたケース)における「極めて文脈に則した挙動」と、最悪のシナリオ(ユーザーの環境が開発者の想定から広くかけ離れていたり、十分なスキャンがされていない場合)における「機能的挙動」との、バランスを取ることが可能となります。

要約すると、Conditionは個々のプロパティを定義し、一式の ConditionReal World Context を定義し、一式の Real World Contexts が開発者が想定する環境全体あるいはその一部を定義するということになります。これらの要素によってアプリに「最善 → 許容範囲内 → 最低限」という(状況に関する)階層構造の定義を行うことが可能になっています。

また、お使いのテクノロジースタックに適合する固有の特性を Trait Condition または命名されたプロパティで定義できます。お使いのデバイスやソフトウェアによって、部屋のセマンティックオブジェクトから 3D マーカー、位置アンカーまで、何でも命名可能です。Unity ではこの機能に関して出来る限りの柔軟性を維持し、将来的な環境データ技術にも AR Foundation が対応するプロパティのタイプにも問題なく使用できるようにしています。現在私たちは「床」「壁」「天井」などの Trait を使用していますが、今後はこれに一般的なオブジェクト(「猫」「犬」など)やプロパティ(「木」「草」など)の様々な Trait が使用可能になる見込みです。この分野に関しては進化が著しく、月ごとにエキサイティングな新情報が公開されているので、私達はそのすべてに対応できるようにする必要があります。

特定(検知)すべき対象、そしてオブジェクトを配置すべき場所の条件が定義できたら、オブジェクトの配置をより精密に設定することも可能です。Landmark のシステムを使用することで、適合する Real World Context のどこに、どの角度でオブジェクトを配置するかを、より高い精度で設定できます。

高度なデータ操作

Reasoning API は高度な機能であり、(部分ごとではなく一度にデータを認識する)MARS の環境認識と連動可能な、ユーザーの記述するスクリプトです。この API によって、高度な推論を作成し、データを組み合わせたり、作成したり、変化させたりすることが可能です。

典型的な例としては、空間をスキャンした際に検知された最も低くて大きい平面を床として推論できることが挙げられます。HoloLens などの一部のデバイスはデフォルトで床を提供しますが、それ以外のセンサーやテクノロジースタックは提供しません。Reasoning API を使用すれば、入力を組み合わせて、現実世界をより良く把握し、より面白いイベントを作ることができます。また、このコードはのアプリのロジックに影響されません

コンパニオンアプリ

現実世界を Unity エディターに取り込むために費やした大きな労力も、現実世界データと相性の良いポータブルデバイスを活用してこそ意味を成します。AR デバイス向けの MARS コンパニオンアプリは、このために開発されました。第一弾のイテレーションはモバイル電話端末向けです。アプリを Unity Cloud 内でプロジェクトに接続して、3D ステッカーを貼るのと同じくらい簡単にアセットをレイアウトできます。Condition を作成し、動画やワールドデータを録画し、それらすべてをそのままエクスポートしてエディター内に戻すことができます。これも、現実世界とデジタル世界の繋がりを完成させるためのステップのひとつです。

今後の計画

アルファ版のアクセス

MARS は現在クローズドアルファ版ですが、Unity では、空間アプリケーションの限界を押し広げる熱意あふれるチームをパートナーとして募集しています。MARS を実際的な使用シーンでテストしていただき、最も役に立ちそうなツールや機能をお知らせいただくことで、Unity ロードマップの優先順位の決定にご協力ください。すでに MARS の基盤は確立されていますが、皆様が素晴らしいエクスペリエンスを創造するために本当に役立つ機能を開発したいと考えています。

謝辞

Project MARS は、Microsoft、Magic Leap、Google、Facebook のソフトウェアおよびハードウェア関連パートナーの皆様をはじめ、様々な可能性(位置ベースのバーチャル体験から自動車のビジュアライゼーション、空間シミュレーター、建築のプレビジュアライゼーション、革新的なモバイル AR ゲームなど)を開拓するその他多くの企業様がご提供くださったアイデアや情報をもとに開発されています。ご協力くださったすべての企業様に感謝申し上げます。そして、初めての地理空間システム統合に際して開発に協力してくださった Mapbox に深く感謝申し上げます。ありがとうございました。

また私たちは、Unity の Mixed Reality Research グループが構築した基盤をの上に開発に取り組み、XR Platform チームと密に連携を取っています。同チームの制作した AR Foundation と XR Interaction Toolkit は、MARS 開発に当たっての堅強な基盤を提供しました。

さらに MARS について学び、より広範なリリースに向けて最新のニュースを受け取りたい方は、メーリングリストにご登録ください。また、Project MARS ウェブサイトもぜひご覧ください。

コメント受付を終了しました。

  1. Great job guys with the MARS project! Really promising! Looking forward to test the beta version when it comes out!
    I do have couple of questions though.
    1- Would I be able to connect real-time data from a kinect sensor (cloud data) to automatically generate the floor/walls and 3D objects like a chair or a box at the right place within the 3D world to match the real life 3D cloud? All in real-time?
    2- Do we have any estimate for when the beta will be released?

    Amazing work!

    Cheers,

    1. 1. Not exactly. You can take in 3D meshes, point clouds, or models and put them in the simulation view, and tag them with semantic data. You can also bring in a live camera feed. But we don’t have Kinect support directly streaming to the sim view at this time.
      2. No public date for the beta, but contact us directly at mars@unity3d.com if you’d like access to the private alpha.

  2. Felix Herbst

    10月 4, 2019 1:18 am

    I get “Invalid length for field value” in the form for both “Have you made an AR app before” and “What would be the #1 feature”. Can’t sign up (or have to put the text somewhere else).

    1. Felix Herbst

      10月 4, 2019 1:26 am

      Additionally, I’m not allowed to have URLs in the field where you ask about projects. You make it really hard to fill in this form :)

    2. So sorry about that! Please email us directly at mars@unity3d.com. :)

  3. Matt ARaction

    10月 2, 2019 9:40 pm

    Hi Unity team!
    MARS sounds cool, but there is a fundamental question about its concept that is not clear to me after reading this post. Will MARS focus on
    a) AR apps that work in any user environment, so e.g. in your living room as well as in mine;
    or
    b) Persistent AR experiences that work exclusively at one specific real world location (including solutions for re-localisation / area description files / 3D scanning and mapping the environment);
    or
    c) both?

    If persistent AR is on your agenda, we would love to help you with testing and improving MARS. Please contact us via https://www.ar-action.com/contact/

    1. Jono Forbes (MARS UX)

      10月 3, 2019 11:41 pm

      Hi Matt! Yes, MARS is focused on _both_ adapting your app to lay itself out in any environment, and also persistent location-specific authoring – we’ll dig more into that in future posts. They aren’t separate workflows, because even if you do have an accurate scan of a location that you intend your app to relocalize in, there will still be unknown dynamic elements (people, movable chairs, cars, weather, time…) that your app can respond to. So we try not to think of it as either procedural or static, but often some combination of both.
      I’ll ping you on that contact form :)

  4. project MARS is cool! anyway, where is DOTS sample project?

    1. Isaac Surfraz

      10月 3, 2019 10:50 am

      This is not a feature request forum, please use the forums for feedback and feature requests rather than using the blog posts and effectively spamming + attempting to derail discussion.