1. HOME
  2. ブログ
  3. AR
  4. UnityによるAR開発

ブログ

BLOG

AR

UnityによるAR開発

 Unityとは、ユニティ・テクノロジーズ社が開発したゲームを作るためのソフトウェアのことです。しかし、3Dに強いというUnityの特性から、近年は特にAR(拡張現実)関連の開発で注目されています。AR分野も飛躍的に成長しており、Unityを使ってAR開発できるスキルを持つことは、ビジネスチャンスにつながるかもしれません。本記事では、Unityを使ったAR開発について、その方法や手順などを取り上げてみたいと思います。

UnityとAR開発

 Unityを使ったAR開発が可能であることを述べましたが、Unityを使った開発方法は一般化しているといえます。AR開発専用のSDKも存在するほどです。SDKとは、ソフトウェア開発に必要なツール群、APIのライブラリ、サンプルコード、ドキュメント類などをひとつのセットにしたもので、開発の効率化につながるものです。Unityを使いこなしてAR開発できれば、自分のオリジナルゲームも作成できるかもしれません。

Unityとは

 Unityは、C++で作成されたゲームエンジン(開発用プラットフォーム)で、3Dゲーム開発やxR(VR、ARなど仮想現実系)開発や、コーディングせずに3Dゲーム開発が可能という手軽さから人気を博したソフトウェアです。また、上級者はさらに、拡張用言語(C#)でスクリプティングを行えば多彩な機能を活用できます。

 このUnityの特徴大きく分けて4つあります。1つは、無料であることです。もちろん有料版もありますが、無料版でもクオリティーの高いゲーム開発ができます。

 2つ目は、プログラミングの専門知識はいらないことです。プログラミングを知らなくても、ステージを設置したり、キャラクターを動かすことはできます。

 3つ目は、Unityで開発したゲームはマルチプラットフォームに対応でき、iPhoneやAndroidといったスマートフォンアプリ、PlayStationやWii Uなどにも導入できます。

 そして4つ目は、アセットストアが充実していることです。アセットストアとは、ユーザーが作成したプログラムの部品などを売買できるプラットフォームで、活用すればゲーム開発の効率化につながります。

UnityによるAR開発で使用するツール

 UnityによるAR開発で使用される主なツールをご紹介します。

①Vuforia

 UnityによるAR開発では最もオーソドックスといえる開発環境です。Vuforia(ヴューフォリア)はサポートするデバイスが豊富にあります。また、使用するデバイスに応じて仕様が自動的に切り替わる優れものであり、開発者の負担が小さいことも利点です。さらに、マーカー機能が使いやすくオブジェクトを水平に設置できる機能もあって、開発初心者のエンジニアにも取っ付きやすい仕様になっています。

②ARcore

 Google社の開発した、Android・iOS向けAR開発ツールで、スマートフォンのカメラを通してARを実現します。仕様は異なりますが、機能面ではARkitと似ています。

③ARkit

 Apple社の提供するAppleデバイス用のAR開発ツールで、カメラを通じて現実世界の拡張を行う「視覚型ARキット」の代表といえます。iPhone向けのAR開発ツールとして普及してきました。iPhoneのみでARを実現できる手軽さから人気となっています。

④AR Foundation

 ArkitやArcore、その他の複数のxR開発ツールを内包した開発環境です。複数のツールを使うためのインターフェースを提供しているだけなので、AR Foundation自体にAR開発機能があるわけではありません。AR開発で用いられる多彩なツールを、一元的に管理・使用できます。

Vuforia、ARcore、ARkitの比較

 物体認識の精度に関して言えば、認識精度はそれぞれ同じレベルといえます。ただ、色味や安定性、GPS機能などを含めると、Vuforiaが他よりも比較的性能が良いといえます。

 対応端末について、Vuforiaは、Windows、iOS及びAndroidに対応しています。ARcoreは、AndroidとiOSに、ARkitはiOSのみに対応しています。対応するOSに違いがあるだけでARkitとARcoreは機能はほとんど同じです。もっとも、ARkitは、People Occlusion、物体認識、Body Trakingなどで先駆的な機能を持っています。

Unityで開発できるARアプリの種類

 続いて、Unityで開発できるARアプリにはどのようなものがあるのか解説します。

1 現実世界をシミュレーションできるアプリ

 ARアプリでは、現実世界をシミュレーションすることもできましが、UnityでもこのようなARアプリを作ることができます。このアプリが特に多様される建築分野では、建設現場をバーチャル空間に再現するシステムをUnityで作成し、リアルタイムで設計情報や資材・重機、作業員の位置情報を把握し、業務の効率化につなげています。また、不動産業界でもよくこのシミュレーション機能が使われます。

2 現実世界にある物体の中身が透けて見えるアプリ

 現実では目には見えない「物体の中身」が見られるアプリです。仮想的なデータから物体の中身を構築し、それを現実の物体に重ね合わせることで実現します。

3 現実世界に仮想世界の物体を表示させるアプリ

 仮想世界にしかいない物体を、現実世界に存在するように表示させるアプリです。UnityとAR開発用キットを使うことで、簡単に作成できます。「ポケモンGO」もこのアプリの一種です。

Unityを使ったAR開発のステップ

 UnityとARについてご紹介してきました。ここでは、Unityを使ったAR開発の手順について解説します。AR開発で定番のVuforiaを利用した初期手順についてご説明します。

ステップ1 Vuforiaのインストールと設定

 まず、Vuforiaのサイトにアクセスし開発者アカウントを作成します。アカウントを作成してログインした状態で画面上部の「Downloads」をクリックします。次の画面で「SDK」を選択し、Unity向けのバージョン「Add Vuforia Engine to a Unity Project or upgrade to the latest version」をダウンロードします。

 ダウンロード終了後、再びVuforaのサイトにアクセスし、次はライセンスキーの登録を行います。このライセンスキーは、Vuforiaのバージョンなどの認識に必要なものです。公式サイトの画面上部から「Develop」を選択し、License Managerからライセンスキーを登録をします。登録時に表示されるコードは必ず保存しておきましょう。

ステップ2 プロジェクトの作成

 インストールと初期設定を行い、それが完了したら、プロジェクトを開始します。「Vuforia Studio」から画面右上の「+」マークを選択し、新しいプロジェクトを作成します。プロジェクトを作成した後は、ライブラリやデータベースの登録・ダウンロードを必要に応じて行います。データベースに登録した画像をもとに、次のステップで述べるAR実行確認を行うため、データベースには任意の画像を登録します。なお、ここでの説明は、バージョンによっては異なる場合もありますが、基本的には公式サイトの手順通りに進めることができれば問題はありません。

ステップ3 AR表示を実行させる

 Vuforia側の設定が完了したら、Unity側の画面も起動します。ARカメラから「Vuforia Behaviour」の「Open Vuforia Engine configuration」をクリックします。ここで、先ほどのライセンスキーを入力し、認証を行います。また、ステップ2でVoforiaデータベースに登録した画像を印刷し、Unity側でデバイスのカメラに写します。AR開発の初期手順として、カメラ画像に仮想的なオブジェクトが重なって表示されていれば完了です。これで、ARを実行できる状態になりました。

Unity以外のAR開発向けプログラミング言語

 Unity以外のプログラミング言語の経験がある方向けに、Unity以外でAR開発が可能なものをご紹介します。

①Java

 大規模な基幹システムに多用されるJavaでも、Android端末上で動くARアプリなどを開発することができます。
 また、JavaでAR開発をする場合、ライブラリとしてはARCoreを利用することが多いです。さらに、Javaは豊富なライブラリがある点も魅力です。必要な処理に対して、ライブラリの提供がされると自分でコーディングをする負担が減り、高い生産性となるのです。また、ライブラリは、iOSの開発言語のswift、Andoridの開発言語の一つであるKotrin、クロスプラットフォームのUnityにも対応しており、一旦コードを書けば様々なプラットフォームで動作可能です。

②JavaScript

 Webアプリケーションの印象が強いJavaScriptでもAR開発が可能です。
 JavaScriptでAR開発をするフレームワークとしては、WebARが挙げられます。このWebARは、ブラウザ上でARを実現する技術で、ユーザーがインストールする必要なく、すぐに使い始めてもらえることも強みです。ただし、UnityではUnity2018.3以降サポート外となり、JavaScriptは使えないことに注意が必要です。

③C#

 Unityを使ってゲーム開発をする場合の定番がこのC#です。ゲーム開発の分野では、UnityとC#で行われることが多いのが現状です。
 UnityでゲームなどのAR開発をする際に、ゲーム空間内で発生するさまざまな現象を自分でコーディングする必要がありますが、そのときに使える言語がC#です。以前はJavaScriptを使うこともできたのですが、Unity2018.3以降C#に一本化され。C#が唯一の選択肢となりました。

 なお、C#は、NET Frameworkと呼ばれるフレームワークでオブジェクト指向のプログラミングができますし、構文はJavaに似ていることから、オブジェクト指向がわかる人や、Javaをやっていた人にとって習得は比較的簡単です。

④C・C ++

 CやC++を使って、AR開発を行うこともでき、特に有名なフレームワークは、DirectXやSiv3Dといったものです。このうちSiv3Dでは、最短で2行のコードを書くだけで、3Dアプリケーションを動かせます。また、Siv3D の作者は、最先端の C++ 普及のために精力的に活動している人物で、Siv3Dの学習をすれば自ずと最新のC++の技術も学ぶことができます。
 また、C++の特徴として処理が高速なことです。AR開発では、カメラに映った現実世界に仮想の物体を重ね合わせて表現したり、それをリアルタイムで処理し続けます。このような作業は、サーバーへの負荷が大きくなりがちです。負荷が過大であることから、結果的に処理が遅くなり、描画が滑らかでないなどの不都合も起きます。しかし、C++は高性能であるため、このような不都合も解消できます。

まとめ

 以上、Unityの概要やUnityで開発できるアプリ例、実際の開発のステップなどをご紹介してきました。Unityは、3Dに強いことから、AR(拡張現実)関連の開発が盛んになってきています。Unityを使ってAR開発できるスキルを持つことは、ビジネスを広げることにもつながります。Unityを利用したAR開発にはSDKを使うことが多いため、まずは主要なSDKの使い方を習得してみることから始めてみても良いかもしれません。

AR開発を依頼するなら

エネセーブではAR開発を得意としております。
AR開発をご検討の方は、是非以下よりお問い合わせ下さい。

関連記事