Search Unity

Unity MARS でのシミュレーションの仕組みを見てみよう

, 8月 14, 2020

Unity MARS のシミュレーションシステムは、拡張現実(AR)アプリ開発のテスト時間を短縮します。このシステムは、再生モードと編集モードの両方で、Unity エディターで平面やイメージマーカーの検出など、世界を理解する機能を提供します。本記事では、このシステムの詳細と、クリエイターがこのシステムを使用して、コンテキストに適応した AR 体験を迅速に反復作成する方法をご紹介します。

Unity MARS を使うと、現実世界にインテリジェントに適応する複雑な AR 体験を簡単に作成することができます。このオーサリングツールは、AR 開発者にとって最も一般的な 3 つの問題点を解決するために設計されました。膨大な確率空間の中にあるデータのオーサリング、実世界シナリオに対するイテレーションとテスト、そして環境にレスポンシブに適応するアプリの提供です。

Simulation は、Unity エディター内で AR デバイスが物理的な環境でどのように動作するかをプレビューする AR テストを可能にすることで、イテレーションにかかる時間の問題を解決します。Simulation では、現実世界を模倣した、または現実世界から取り込んださまざまな環境でのテストが容易になります。これにより、適応性とアクセス性に優れたアプリや体験を簡単に作成できるようになります。Unity MARS のプロキシおよび条件マッチングシステムと組み合わせることで、Simulation は、クリエイターに空間コンピューティングの限界を押し広げる力を与えます。

システムとしての Simulation は、概念的には別々の機能でありながら、相互に連携してイテレーション時間を大幅に短縮する 2 つのコアな機能に分解することができます。

  1. 編集モードで独立してシーンの実行時のプレビューを行う機能
  2. エディターで環境シーンを設定し、その環境に基づいた AR データを提供する機能

Simulation のこれらの部分がどのようにして AR 開発を良くするのか、詳しく見ていきましょう。

実行時プレビューのしくみ

Simulation では、編集モードでシーンの実行をプレビューすることができ、迅速なイテレーションをサポートし、現実世界のオブジェクトを表す柔軟なプロキシが現実世界でどのように動作するかを瞬時に理解することができます。プレビュープロセスの実行では、Simulation はアクティブなシーンのゲームオブジェクトをプレビューシーンにコピーします。これはコンテンツシーンと呼ばれます。そして、コンテンツシーンにある、プロセスの実行に含まれる各 MonoBehaviour に runInEditMode フラグを設定します。Simulation のシーンプレビューに対応した MonoBehaviour の書き方の詳細については、Unity MARS のドキュメンテーションを参照してください。

Simulation ビューを使用すると、開いている Unity シーンから分離して、このシーン実行時のプレビューと対話することができます。Simulation ビューは、環境シーン(次のセクションでは環境シーンについて詳しく説明します)の上にレンダリングされたコンテンツシーンを、三人称視点またはカメラの視点から表示するカスタムのシーンビューです。

Unity MARS では、Simulation プレビューのデフォルトの動作はインスタントモードと呼ばれるモードになります。このモードでは、Unity MARS が一度にすべてのデータに対してプロキシをマッチさせようとする実行プロセス全体が、1 つのフレームで発生します。この動作は現実的ではありませんが、プロキシとその条件を定義すると、即座にフィードバックが得られるという利点があります。

連続モード の Simulation プレビューを手動で開始および停止することもできます。このモードは、プレビューが停止するまで、コンテンツシーンの振る舞いがフレームごとに実行されるという点で、再生モードとより類似しています。連続プレビューでのアプリのインタラクションや振る舞いは制限されています。これは、物理や入力などの一部の Unity システムは、再生モードでしか動作しないためです。連続プレビューは、時間の経過とともに変化するデータにアプリがどのように反応するかを確認しながら、シーンの修正を素早く行うことができるので便利です。


Simulation システムは、アクティブなシーンに関連してコンテンツシーンの状態を追跡し、変更を加えても最新の状態を維持します。コンテンツシーンで実行されているコピーを持つオブジェクトのプロパティを変更すると、Simulation はその変更を検出し、その変更が
同期されていない、つまりプレビューが再同期されるまで最新の変更が適用されないことを通知します。再同期処理では、Simulation はコンテンツオブジェクトを破棄し、アクティブシーンの新しいコピーに置き換えてから、新しいコピーの実行を開始します。

Simulation には、プレビューを自動的に再同期するオプションがあります。そのため、プロキシに対して反復して修正を行い、変更した内容が Simulation ビューに反映されるのを即座に確認することができます。これは、標準のシーンビューだけでなく、Simulationビューでも動作する Unity MARS のビジュアルオーサリング機能と組み合わせることで、特に強力に機能します。環境のコンテキストでプロキシ条件を変更し、条件のパラメーターを調整することで結果がどのように変化するかを即座に確認することができます。コピーに費用がかかるような大規模で複雑なシーンでは、自動同期オプションを無効にして、必要に応じて手動で再同期することをお勧めします。

Simulation による AR データの提供方法

環境の構築が Simulation にとって重要な要素となります。環境とは、Simulation で実行されているアプリコンテンツとは別のオブジェクトのセットです。実際には、環境とは、Simulation ビューと再生モードのゲームビューの両方で、アプリのコンテンツに隠された形でレンダリングされる、独立した物理とライティングを持つシーンのことです。こうして分離してある理由は、エディターでのテストが AR デバイスでのテストにできるだけ近づけられるように、環境がエディターにおける「現実の世界」として機能するようにするためです。

データプロバイダーは、環境とコンテンツの間の重要なリンクです。他の種類の AR データプロバイダーと同様に、Simulation プロバイダーはアプリコンテンツと一緒に存在しますが、環境からの情報にもアクセスすることができます。実行プレビューを使用するには、これらのプロバイダーは再生モードと編集モードの両方で動作する必要があります。Simulation プロバイダーが環境情報を使用してデータを提供する方法はさまざまですが、Simulation が使用するデータソースには、合成データ、記録されたデータ、ライブデータの 3 つの主要なカテゴリがあります。

合成データ

合成データは、実世界のイベントから生成されるのではなく、人為的に作成されます。このデータは、環境シーンでインスタンス化されたプレハブから得られます。Unity MARS は、部屋、建物、屋外スペースなど、デフォルトの環境プレハブのセットを提供しています。また、独自のシミュレーションされた環境を作成することも可能です。

モーション トラッキング、ジオロケーション、平面検出、点群検出、画像マーカー検出、光推定などの合成データを使う AR 機能を備えた Simulation を発表しました。これらのデータのほとんどは、環境プレハブ内の合成オブジェクトから瞬時に提供されます。


また、Simulation は、シミュレートされたデータ発見のプロセスを通じて、モーショントラッキング、点群検出、平面検出のためのデータを作成することができます。シミュレートされた発見のプロセスでは、環境プレハブ(シミュレートされた「現実世界」)のコンテンツと Simulation のコンテンツシーン(シミュレートされた「デバイス」)のメインカメラの状態に基づいて、動的にデータが提供されます。モバイルデバイス上でのデータ発見を模倣するには、カメラが動いたときだけデータを検出し、カメラの視錐台に入っている環境の一部だけを利用して、シミュレートされた世界の理解を追加します。また、モバイルデバイスで行うように、「かたまり」のように成長する平面も作成していますが、これらの平面は(軸に沿う形で)上下、左右、前後を向いているものに限って作成しています。

記録されたデータ

Simulation では、AR セッションの録画を再生してデータを提供することもできます。こうした記録は、近日公開予定の Unity MARS コンパニオンアプリまたは Simulation 自体を使って作成することができます。また、Unity MARS では、フェイストラッキングデータの記録サンプルも提供しています。

記録されたセッションデータは、データタイプごとに 1 つのトラックを持つ Timeline アセットに格納されていま
す。環境内の Playable Director がセッション記録の Timeline を再生し、アプリコンテンツ内のプロバイダーオブジェクトはデータトラックにバインドされているので、実際のデータを提供することができます。セッション記録オブジェクトの詳細については、
Unity MARS ドキュメンテーションを参照してください。

セッション記録は Timeline として表現されるので、他の Timeline と同様に手を加えることができます。例えば、ループの動作を変更したり、データトラックの内容を微調整したりすることが可能です。


編集モードでは、Timeline ウィンドウで録音をスクラブすることもできます。スクラビングの重要な注意点として、
プロキシシステムとその他の Unity MARS の動作は、時間を遡って実行できないというものがあります。そのため、Simulation システムでは、時間のスクラビングを実行プレビューの再同期を必要とする変更として扱います。実行が再開されると、記録が新たに開始され、新しい時間に追いつくために実行がより高速なタイムスケールで実行されます。時間の再同期と互換性のある振る舞いの記述法の詳細については、Unity MARS ドキュメンテーションを参照してください。

ライブデータ

このデータはリアルタイムな実世界の出来事から得られるものです。Unity は Web カメラデバイスを介してライブカメラ画像を提供する機能を備えた Simulationをローンチしました。この場合、環境には、ビデオプレイヤーオブジェクトとカメラ画像のクワッドが含まれ、アプリコンテンツ内のデータプロバイダーが Raw テクスチャを提供します。このテクスチャからフェイストラッキングデータを取得するには、サードパーティのライセンスが必要です。

Unity MARS と AR 開発のレイヤー

Unity MARSは、AR Foundation、Simulation、またはカスタムプロバイダーからのデータを使用することができます。これらのデータはすべて、プロキシマッチングシステムで使用される Unity MARS データベースと一般的な AR 機能のためのレイヤーを含む抽象化レイヤーを通過します。このように抽象化しておくことで、アプリのコンテンツとデータを使用するシステムは、データがどのデバイスから来ているのか、あるいはデータが Simulation から来ているのかということを知る必要がなくなります。

Unity は Simulation が AR 開発のための強力な一般的なツールとなると考えています。今年中には、Unity MARS を使用しているクリエイターが、プロキシシステムを必要とせずに Simulation システムを使用できるようになる見込みです。Simulation を、独自の XR サブシステムとして、クリエイターは、開発中のあらゆる種類の XR プロジェクトに柔軟性と Simulation のサポートを得つつ、編集モードのプレビューとエディターの AR 機能を利用できるようになります。もちろん、Simulation を含むすべてのUnity MARS の機能は、常に AR Foundation で動作します。

Simulation と Unity MARS の詳細について

Unity の MARS ページから、Unity MARS の詳細な情報にアクセスしてください。また、Unity フォーラムで、Simulation に関連する深い議論や質問にぜひご参加ください。

 

Unity MARS を始める

 

3 replies on “Unity MARS でのシミュレーションの仕組みを見てみよう”

Your application content and the system using the data do not need to know what device the data is coming from or whether the data is coming from a Simulation?

Comments are closed.