見出し画像

ARクリエイター向け開発ツール「Unity MARS」をさわってみた

今回はUnity社から提供されている「Unity MARS(Mixed and Augmented Reality Studio)」という、最新のARコンテンツの開発ツールをさわってみました。

Unity MARS ってなに?

AR開発において大変なことは大きく2つ…。

1.「変数が無限にある」問題
ユーザは動き回りますし、部屋の内装もずっといっしょとは限りません…そういった課題がAR開発にはついてまわります😖
2.アプリのテストがたいへん問題
多種多様なデバイスと多数の場所でテストをはじめ、1の問題のように人混みや天候などの変数を考慮すると、事前に徹底的にテストできないという問題が起こります😫

こういった課題を解決するために生まれたのがUnity社の「Unity MARS」です。

何ができるのか

まずはこちらのEditor上でのデモをご覧ください。

まるでスマホ越しにARを体験するかのように平面を認識し、認識した平面上にオブジェクトを表示、さらにはロボットを操作して宝石を回収するゲーム体験まで全てがEditor上で完結しています。

実際にAndroid端末にデプロイしたものがこちらです。
シミュレート時の動作と遜色ない様子が見て取れます。

加えて、このシミュレート空間は様々な空間のシミュレートに対応しています。下記のようにボタン1つで様々な空間上でシミュレートを行うことができます。

画像1

バージョン情報
・Unity 2019.3.10f1
・MARS version 1.0.1

MARSの導入方法

現在45日間のフリートライアルが可能のようです。
「フリートライアルの期間を利用して実際に機能を検証し、その目で支払う価値があるか見極めてほしい」と公式のフォーラムでも回答がありました。

I understand that $600 can be onerous for some budgets, but for most of the folks we talked to who were making projects where MARS would slice entire months off the dev cycle, it was worth the price.

In any case, you have a 45 day free trial to see if MARS is really worth the cost. If it turns out it isn’t that valuable to you and your project, but you have other AR-related workflows or systems that are more important, please let us know—our roadmap is largely dictated by you, the users.

引用元:Unity

利用には、申請フォームから利用申請を行います。
フリートライアル後には "年額600ドル" もしくは "月額50ドル" の2つのプランが用意されています。

画像2

支払方法などを入力した後、アカウントに紐付いているメールアドレスに Package のダウンロードリンクが届きます。
Package のダウンロードリンクを開いて、Unity MARS を導入していきます!

画像3

ちなみに、「Seatの割り当て」書かれたリンクを開くと、組織で利用する場合の設定方法が確認できます。

準備1.テンプレートのインポート

今回は Unity MARS の Package に含まれるテンプレートシーンをベースに機能を見ていきます。

Editor 上から Window → Package Manager と進みます。
Samplesを下記画像を参考にインポートします。

画像4

インポート後、下記パスのシーンを開きます。
Assets/Samples/MARS/1.0.1/MARS Sample Templates/Templates/Game/Game_Simple.unity

ひとまず試したいときは、通常の ARFoudation をビルドする流れと同様です。
【参考リンク】:ARFaundationさわってみた

いくつかの機能を試してみる

Unity MARS のいくつかの機能を試していきます。

機能1.Proxy

Proxy(プロキシ)とはシーン内のゲームオブジェクトを実世界のオブジェクトとして代替できる機能です。

A Proxy is a GameObject in a Scene that acts as a stand-in for a real-world object that your app can detect and use, such as a table, a face, or a cat.
引用元:Unity

Proxy では "1m×1mの平面を認識した際に平面の上にオブジェクト表示する" という機能を実装したい場合、 "1m×1mの認識した平面をシーン内でオブジェクトとして扱う" ことができます。


さらに、1m×1mの平面を認識した際に~ の後に続く処理もProxyの設定で関連付けることが可能です。

この機能のおかげで、Editor上でのシミュレートが可能になっています。

機能2.Replicator

Replicator(レプリケーター)を使えば、先ほど Proxy を利用した場合の例で挙げた、1m×1m の認識した平面が多数存在した場合であってもそれぞれをシーン内でオブジェクトとして扱い、Proxy の設定で任意の処理を関連付けることができます。

You can instruct your app to associate a single instance of a prefab with a particular Proxy or Proxy Group that your app discovers. However, to associate multiple instances of a prefab with numerous matching objects in the real-world, you can use a Replicator.
引用元 : Unity

下記画像は検知した水平方向の平面上に青い宝石を配置するという処理に Replicator を付与したシミュレート結果です。

画像5

機能3.Condition

"1m×1m の平面を認識した際に平面の上にオブジェクト表示する" という処理の 1m×1m の平面を認識の部分を担うのが Condition です。

今回利用したサンプルシーン内では、Alignment Condition と Is Plane Condition が設定されており、Alignment Condition で認識時の向きの設定を行い、Is Plane Conditon で平面として機能するように要求しています。

画像6

1m×1mという条件も設定することは可能です。
Plane Size Conditionを利用すれば、平面として認識する最小サイズ、最大サイズを設定できます。

画像7

機能4.Action

"1m×1mの平面を認識した際に平面の上にオブジェクト表示する" という処理の平面の上にオブジェクト表示する部分を担うのが Action です。

Show Children On Tracking Action で平面を認識した際にオブジェクトを表示、Show Children In Bounds Action で平面からはみ出たオブジェクトを非表示にしています。

画像8

ちなみになぜ、Show Children になっているかというと、平面としてシーン上に表示したいオブジェクトの子階層にその平面に関連して処理を行いたいオブジェクトを配置する構造となっているからです。

画像9

さいごに

今回はサンプルシーンをベースに Unity MARS の機能を見ていきました。
しかし、まだまだ試せていない機能が大量にあります。

Unityステーションで Unity MARS に関する非常に丁寧な解説を行われているので、もっと深く機能について知りたい方は要チェックです!

もし「この機能よかったよ」「おすすめだよ」というものがあればぜひ教えてください👀
それではまた。

Unity MARS導入セミナー(7月8日号) – Unityステーション


この記事が気に入ったらサポートをしてみませんか?