1. HOME
  2. ブログ
  3. IT技術
  4. 【Unity】ARFoundation入門~機能解説から平面検知の実装まで~
【Unity】ARFoundation入門~機能解説から平面検知の実装まで~

【Unity】ARFoundation入門~機能解説から平面検知の実装まで~

ARFoundationとは?

今回は、Unity を使った AR 開発の導入部分について、解説していきたいと思います!

ARFoundation とは、Unity が開発している、AR 開発用のフレームワークです。

イメージ的には、iOS と Android で別々の実装をしなくてもいい、というとても便利なもの。

iOS でビルドするときは ARKit で、Android でビルドするときは ARCore で動作するようにしてくれます。

では早速、見ていきましょう!

ARFoundationの導入

まずは、ARFoundation を使用するためのセットアップをしていきましょう!

ここでは、「Unity2019.4.9f1」「iOS ビルド環境」で進めていきます。

ビルド環境は、Android でも操作に違いはありません。

プラグインのインストール

3D プロジェクトを立ち上げて、必要なプラグインをインストールしていきます。

Window → Package Manager」から進めていきましょう!

プラグインのインストール

次に、Package Manager ウィンドウから、以下の3つをインストールしていきます。

  1. ARFoundation
  2. ARkit XR Plugin
  3. ARCore XR Plugin
Package Manager ウィンドウから3つをインストール

ARFoundation をインストールすると、必要なプラグインが、同時にインストールされます。

ARkit と ARCore は、必要に応じて、どちらか片方でも構いません。

( ARkit は iOS、ARCore は Android )

シーンのセットアップ

次に、シーン内のセットアップをしていきましょう!

まずは、デフォルトで Hierarchy に入っている、Main Camera を削除します。

今、Hierarchy には、Directional Light だけがある状態です。

次に、「AR Session」と「AR Session Origin」を加えます。

手順は、まず Hierarchy 上で右クリック して、「XR → AR Session、AR Session Origin」と進みます。

シーンのセットアップ

これで、ARFoundation で開発するための準備が完了しました!

AR SessionとAR Session Origin

先ほど追加した2つの項目は、AR 開発において欠かせないものです。

では、この2つについて、簡単に説明していきます。

ARSession

AR シーンには、ARSession コンポーネントを含める必要があります。

ARSession は、AR のライフサイクルを制御するコンポーネントです。

Session は、AR 環境の「プロセス」という意味もあり、AR シーンのプロセスの管理をすると言った方が、イメージしやすいかもしれません。

ARSession Origin

ARSesion Origin も、AR シーンには欠かせないコンポーネントです。

デバイスを通して、読み込まれた現実空間の情報は、Session Space で管理されます。

Session Space の情報を、Unityシーンの「位置・方向・スケール」に変換するのが、ARSession Origin です。

また、現実空間では、シーンが開始されたときのデバイスの位置が座標の原点となります。

ですが、Unity シーンでは、ARSession Origin が原点となるのです。

デフォルトで、「ARCamera」が子オブジェクトに含まれていて、それが AR アプリでのカメラになります。

人によるかと思いますが、この ARCamera のタグを、MainCamera に変えておくと便利かもしれません。

ARCamera のタグを、MainCamera に変えておく

平面検知を実装しよう!

セットアップが終わったら、現実空間の平面を検知して、そこにオブジェクトを配置してみましょう!

今回は、タップした平面上の位置に、オブジェクトを配置するようにしていきます。

オブジェクトは、お好みで作ってもらって構いませんが、ここでは赤いキューブを使用します。

使用するオブジェクトは、Prefab を作成し、Hierarchy からは削除しておいてください。

また、オブジェクトを作る際は大きさに注意してください。

Unity シーンでの1ユニットは現実空間では1メートルになります。

平面検知を実装しよう

ARPlane ManagerとARRaycast Managerの追加

Unity で、平面検知をするのに、コードを書く必要はありません。

ARPlane Maneger コンポーネントを、ARSession Origin に加えるだけで、自動的に平面検知を行ってくれます。

今回は、Raycast を使用するので、ARRaycast Manager コンポーネントも必要になります。

それでは、ARPlane Manager と、ARRaycast Manager を加えていきましょう。

  1. ARSessionOrigin を選択
  2. Add Component
  3. AR で検索
  4. ARPlane Manager, ARRaycast Manager

の順に進めていきます。

ARPlane ManagerとARRaycast Managerの追加

ARPlane Maneger コンポーネントを見ると、ARPlane Prefab の項目が空になっています。

ARPlane は、検知した平面を、デバイス上で可視化するのに必要なものです。

次は、これを作って、ARPlane Manager にアタッチしましょう。

まず、Hierarchy 上で右クリックをして「XR → AR Default Plane」の順に進めていきます。

Hierarchy 上で右クリックをして「XR → AR Default Plane」の順に進めていく

AR Default Plane のプレハブ化は、ARPlane Manager の ARPlane Prefab の項目にアタッチします。

AR Default Plane のプレハブ化は、ARPlane Manager の ARPlane Prefab の項目にアタッチ

ここまでできたら、平面が検知され、画面上に表示されるようになります。

スクリプトの作成

検知された平面に、オブジェクトを配置するコードを書いていきましょう!

ここでは、「SpawnManager」という名前のスクリプトを、以下のように作成しました。

タッチした場所に、すぐにオブジェクトが生成され、そこから動くことがないようなコードが書いてあります。

ですが、Touch.phase によって処理を変えると、オブジェクトの生成の仕方を変えることもできます。

AR シーンで、Raycast を使用するときは、Physics.Raycast ではなく ARRaycastManager.Raycast を使用する点に注意してください。

また、Raycast の最後の引数にある TrackableType は、XR でデバイスが追跡可能なオブジェクトのタイプを指定します。

このスクリプトでは、ポリゴンを用いて、平面と Ray の衝突を追跡するようになっています。

コードを書き終えたら、シーンに戻って、できたスクリプトを ARSession Origin に追加しましょう。

そしたら、RedCube の項目に、作っておいたプレハブをアタッチしてください。

RedCube の項目に、作っておいたプレハブをアタッチ

Build Settingを変更する

最後に、Build Setting を変更していきましょう。

この章では、iOS と Android に分けて、説明していきます。

以下は、ProjectSettings の Player 項目の内容です。

iOSの場合

まずは、Other Setting を開き、以下の順で進めていきましょう。

  1. Require ARKit Support にチェック
  2. Target minimum iOS Version を、11以上に変更
  3. Architecture を ARM64 に変更
iOSの場合

Require ARKit Support にチェックを入れると、Camera Usage Description に、自動でコメントが追加されます。

Require ARKit Support にチェックを入れると、Camera Usage Description に、自動でコメントが追加される

Androidの場合

Android の場合は、まず Other Setting を開き、Minimum API Level を7.0以上に変更してください。

Androidの場合

次に、Graphics APIs から Vulkan を削除します。

Graphics APIs から Vulkan を削除

以上で、セッティングは完了となります!

実機で確認してみよう!

Build Setting まで終わったら、ビルドをして、実機で動かしてみてください。

以下のような動きがみられれば、成功です!

実機で確認してみよう

さいごに

今回は、ARFoundation 入門として、機能解説から平面検知の実装までを紹介していきました。

思っていたほど、むずかしくはなかったのではないでしょうか?

では今回も、最後まで読んでいただきありがとうございました!

この記事が、ARFundation を使ってみようという方にとって、少しでもお役に立てれば嬉しいです!

こちらの記事もオススメ!


書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア