CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

ARコンテンツの開発方法を色々調べてみました

最近、色々な事情もあって、ARコンテンツを作る方法を調べています。AR/VRコンテンツ開発といえばUnityを使うことが多いかと思いますが、探してみるとUnity以外にも色々あることがわかりました。

思ったよりも多かったので、備忘録も兼ねて整理しました。

1. Vuforia

PTCという会社が販売しています。私が知る限りでは2013年頃から有名になった印象です。以下の紹介ページをみると、最近は工場などで使われることを想定しているようです。

www.ptc.com

開発者として何ができるかを知りたい場合、こちらのページで一通り確認できます。

Vuforia Engine Overview

iOS、Android、UWPネイティブも対応されていますが、随所でUnityとの連携が書かれているので、Unityとの相性が高いとみてよさそうです。

Vuforiaについてはいろいろ情報が多いので省略します。比較的新しい情報としては例えば以下が参考になります。

qiita.com

qiita.com

note.com

なお、開発するだけならば気にする必要はありませんが、企業として使用して自社アプリに組み込む場合はライセンスについて注意が必要のようです。

qiita.com

2. Spark AR Studio

Facebookが提供しているソフトウェアです。ARで表示したいエフェクトをUnityのようなGUI画面で作成できます。

sparkar.facebook.com

ダウンロードはこちらです。

顔認識が目立ちますが、Create New Projectを選ぶと、平面認識など他の認識機能もサポートしているとあります。しかし、自分で試した範囲では平面と関係なく3DCGモデルが表示されたので、何か使い方が違っているのかもしれません。

Feature of Spark AR Studio

平面認識を選んで少し触った感じです。任意の3DCGモデル (ここではfbx) を入れてみました。

An example of Spark AR Studio

右上のDevice Viewはいくつかの画角のデバイスを選べます。背景も選択できるので実際の見え方を事前にシミュレートできるようです。

手順はこちらに書いてあります。

Spark AR - Plane Tracker

実際に動作を確認するには、エフェクトを自分のFacebookアカウントと紐づけて公開するか、ローカル環境で確認するかの2通りがあります。

アップロードを選択すると、アップロードの進捗バーが100%になったあと、ブラウザでFacebookのログイン画面が出るのでログインすると、公開設定の画面になります。

Publish my AR effect on facebook

ローカル環境で確認するには、Spark AR PlayerというiOS or Androidアプリがあります。これはSpark AR StudioをいれたPCとスマートフォンを有線接続して、作ったエフェクトをスマートフォンで確認できる仕組みです。

今回はMacOS (10.15.7 M1 CPUではない)と iPhone8 (iOS14.2)で確認しました。iPhone側でSpark AR Playerアプリが起動した状態で、Macで開いたSpark AR Studioの左下の画面で、Sendボタンを押すと、iPhoneでAR表示を確認できます。

How to send app for Spark AR player

iPhoneで見た画面と、Spark AR Studioの画面を並べてみました。カメラに対して正面にオブジェクトを配置したことがiPhone側でも反映されています。

An example of AR contents on Spark AR Player

Spark AR Studio側で修正したら、再度Sendボタンを押すことでiPhoneの画面も更新されます。以下の例ではrotationのY軸を変更してみました。

An example of another rotation AR contents on Spark AR Player

なお、エフェクトをエクスポートすることはできますが、.arexportという拡張子になりました。他のツールで使うことは難しいのかもしれません。

Spark AR Studioは、顔認識のエフェクトとして調べるといろいろ記事が出てきます。手軽にFacebookやInstagram向けにエフェクトを作る方法として優れていそうです。

3. Adobe Aero

Adobeが公開しているARコンテンツを作るためのツールです。これはプログラミング言語をばりばり使う開発者というよりは、デザイナーの方向けとみた方がよさそうです。

公式ブログ (2019/11/20投稿) の説明を引用します。

Adobe Aeroは、拡張現実(AR)体験を作成できる新しいツールです。とにかく手軽にインタラクティブなAR体験をつくれることと、アドビのデザインツールとの相性の良さが特徴で、Adobe Dimensionのような3Dツールのアセットはもちろん、Photoshopのレイヤーも3D空間に配置することができます。

引用元:いよいよリリースされたアドビのAR体験制作ツールAdobe Aero。使い方のコツと次の一歩をMAX会場で聞いてみた | Adobe Blog

このブログにわかりやすく一通りの手順が書かれているので細かい説明は省略します。試してみましたが、スマートフォンだけでARコンテンツの作成が完結しました。

プリセットされた3DCGモデル or Adobe Creative Cloudにアップロードした自分の3DCGモデルを配置することができます。また、トリガーというブロックベースの指示をつけることで、簡単なアニメーションを追加できます。

An example of Adobe Aero

ちなみに、Adobe AeroはiOS/iPadOSのみがサポートされています。要件は以下に書かれています。この要件だと、iPhone8は対象外の気がしますが、とくに問題なくARコンテンツの作成ができました。逆に、iPad 6thでは平面検出を実行しかけたときにメモリ不足と表示されて使えませんでした。私の環境固有の問題かもしれませんので参考情報ということでご承知おきください。

helpx.adobe.com

また、こちらに詳しく書かれていますが、AdobeのDimensionというソフトでレンダリングした3DCGモデルも表示できるようです。

kai-you-tech.hatenablog.com

4. Sumerian

Amazonが提供しているAWSで動くAR/VRコンテンツ開発環境です。pdf形式で提供されている、Sumerianユーザガイド をみると一通りの使い方が載っています。P.1とP.2をみると、メインはVRコンテンツ開発環境のようです。

Amazon Sumerian は、ウェブで高品質なバーチャルリアリティ (VR) 体験を作成するためのツールのセットです。 //省略 Sumerian では、拡張現実 (AR) アプリケーションを作成することもできます。AR アプリケーションは、スマートフォンのカメラまたは AR 互換ヘッドセットを使用して、実際のグラフィックを重ねることができます。

VRの場合はAWS上に構築されたコンテンツをWebブラウザ経由で読み込むようです。ARの場合、箱となるiOSアプリを作り、XCodeプロジェクトの指定された場所のURLを自分のSumerian上のコンテンツURLと置き換えることでARアプリになるようです。

AR表示させるための手順の例として、下記の記事がわかりやすく書かれています。
qiita.com

こちらは、Sumerianが発表された当初にVRアプリ開発を試した方の記事です。
medium.com

5. Godot Engine

@korinVRさんのツイートでたまたま知ったツールです。

まだほとんど試せていませんが、公式サイトのマニュアルをみると、今のところはVRにフォーカスしているようです。Godot OpenXRという記載があるので、そのうちARも使えるようになっていくかもしれません。

docs.godotengine.org

2020年4月の以下の記事では、

GamesIndustry.biz ACADEMYが,2Dに特化した柔軟で直感的なエンジンでありながら,間もなく3Dの強豪になる可能性を秘めたGodotの詳細なガイドをお届けする。

と書いてあり、今後有名になる可能性がありそうだなと思いました。

jp.gamesindustry.biz

また、日本語ドキュメントがあり、日本での情報発信もありそうなので、そのうち色々使ってみたいと思っています。

docs.godotengine.org

qiita.com

6. おわりに

まだまだ探せば色々あると思いますが、今回だけでもARコンテンツの開発手段が色々あることが改めて確認できました。
AeroやSpark AR Studioは開発者が使うものほど細かいことはできないかもしれませんが、開発者以外でもARコンテンツが作れるようになるのは、ARコンテンツの敷居が下がるので良いことだと思います。

また何か情報があれば更新したいと思います。