Unityに関連する記事です

 AR(拡張現実)機能の実装例を学習します。
AR 時のデバッグ方法、平面感知機能などについて学習を行います。



手順1 ーAR 環境の構築ー

 新しい学習内容は、以下の通りです。

 ・AR 環境の構築 ーAR Foundation / XR Plugin Management / AR Core XR Plugin / AR Kit XR Plugin のインストールと AR 用設定方法ー
 ・AR Session ゲームオブジェクトと AR Session Origin ゲームオブジェクトの機能の説明



設計


 平面感知の機能を利用し、感知した地点をタップした際にプレハブになっている3Dのゲームオブジェクトを生成します。
このゲームオブジェクトにはマテリアルを利用して画像を添付し表示させます。

 この手順を5回に分けて学習します。
最初の3回は AR用プロジェクトの設定とデバッグ機能などの事前準備、残り2回は平面感知機能の実装になります。


Game ビュー画像(エディター)



 
 こちらが完成したら、発展形として、タップした時点ですぐにゲームオブジェクトを生成するのではなく、
まずスクロールビューを開き、その中にあるサムネイル画像を選択できるようにします。
そして、選択した画像が添付されたゲームオブジェクトを生成するように改良します。

 この改良手順ではスクリプタブル・オブジェクトといったデータベースの作成方法と利用方法、
Canvas 内のスクロールビューとスクロールビュー内に複数のサムネイルを自動的に生成する方法など、多くの技術を学習します。
簡単な内容ではないため、とりあえず制作して終わり、ではなく、繰り返しの学習をお勧めします。


実機




AR 用プロジェクトの作成方法と対応デバイス


 Unity の場合、最初から AR としてゲームを製作していく以外にも、完成しているプロジェクトを AR に対応させていくこともできます。

 AR は開発のための前提条件として、エディター(PC)で製作したものであっても、スマホ端末(デバイス)でしか起動できません
そのため、PC において開発は行いますが、対応するスマホ端末がないと起動テスト(デバッグ)もできない状態です
現在開発中の ARFoundation 5 シリーズにおいては、エディター上でのデバッグが可能になるシミュレータ機能が実装されます。



 Android 端末の場合には、Windows PC が必要になります。

 iOS 端末の場合には、Mac が必要になります。

 例えば、Android 端末を持っているが、PC は iOS(Mac) を利用しているような場合には、PC での開発は可能ですが、実機テストは出来ません
逆の場合も同様です。

 PC とデバイスの両方の開発環境が整っていることを確認してから、環境の構築を行います。



 現在の状況により、ここから先の手順が異なります。
新しく AR 用のプロジェクトを作成してから始める場合には、【1.AR テンプレートを利用してプロジェクトを作成する】を進めてください。
既存のプロジェクトを AR 化させたい場合には、【2.既存のプロジェクトに AR 機能を追加する】を進めてください。



 新規プロジェクトを AR ゲームとして作成する場合、現在の UnityHub であれば、AR 用のテンプレートが用意されています。
こちらを利用すれば、必要な機能を準備した状態で AR のプロジェクトを開始できます。


1.UnityHub より AR テンプレートを利用してプロジェクトを新規作成する


 Unityhub を起動し、プロジェクトの新規作成を選択後、AR テンプレートを選択して、プロジェクトを作成します。
このテンプレートは最初はインストールさせていないため、ダウンロードすることで Unityhub 内で選択できる状態になります。

 UnityHub のバージョンにより画面が異なりますので、ご自分のバージョンに置き換えて操作してください。


Unityhub テンプレート選択(UnityHub 2.x.x)



Unityhub テンプレート選択(UnityHub 3.x.x)



 AR テンプレートを選択すると、Unity が自動的に起動し、AR 用の機能をインストールしてプロジェクトを作成します。


2.AR 機能がインストール済であることを確認する


 Unity エディターが開くと、AR テンプレートの紹介ポップアップウインドウが開きます。
ドキュメンテーションの紹介などが記載されています。確認の上、ウインドウ内の Close ボタンで閉じてください。


<AR テンプレートの紹介ポップアップウインドウ>




 画面右側の Inspector タブの右側には Tutorials タブが追加されています。
こちらも不要の場合には、右上のメニューより Close Tab でタブを閉じてください。
この Tutorials タブも他のタブと同じようにいつでも開くことが出来ます。


<Tutorials タブ>




 実際に AR 機能が追加されているかは、PackageManager、および Project フォルダ内の Packages フォルダから確認できます。

 エディターの左上にあるメニューより Window → PackageManager を選択して PackageManager を開きます。
左側の項目内の Features 内に AR 項目があり、選択すると ARFoundation 以下、複数の AR 機能がインストール済であることを確認できます。

 各機能については、次の手順で解説していますので、後程確認しておいてください。


<PackageManager AR>




 PackageManager でインストール済の機能は Project フォルダ内の Packages フォルダにも表示されています。


<Project フォルダ内の Packages フォルダ>



 PackageManager と Packages フォルダの両方で確認する癖をつけておくとよいでしょう。



3.ヒエラルキーとゲームオブジェクトを確認する


 最初に表示されているシーンは SampleScene です。シーン名は通常のプロジェクトを新規作成した場合と同じですが、
ヒエラルキーにあるゲームオブジェクトの種類が異なっています。


<ヒエラルキー画像>



 AR 用のゲームオブジェクトとして AR Session Origin と AR Session の2つが追加されています。
AR Session Origin には子オブジェクトとして ARCamera ゲームオブジェクトが含まれています。
これらには AR に必要なコンポーネントが、役割に応じてアタッチされています。各ゲームオブジェクトの説明は後述します。


AR Session Origin



 AR Session Origin は新規作成することも可能です。
AR テンプレートを利用して最初から用意されている場合、新規作成するよりも多くのコンポーネントがアタッチされています。



AR Session



 こちらも新規作成可能です。
AR Session の方は AR テンプレートを利用しても、利用していなくてもアタッチされているコンポーネントは同じです。

 またカメラについては AR 用のカメラが ARCamera ゲームオブジェクトとして用意されているため、MainCamera ゲームオブジェクトがありません。



 このように AR テンプレートを利用してプロジェクトを新規作成すると、すぐに AR 用の開発が可能な状態でスタート出来ます。

 次は、既存のプロジェクトに AR 機能を追加する手順ですので、追加の手順自体はスキップ可能ですが、
PackageManager によってインストール済の各 AR 用の機能説明もしていますので、一読するようにしてください。



 AR のテンプレートを利用した場合には、この ARFoundation などの AR 用のパッケージのインストールは不要です。

 既存のプロジェクトに AR 機能を追加する場合、PackageManager を利用して、
AR Foundation / XR Plugin Management / AR Core XR Plugin / AR Kit XR Plugin のインストールを行います。


1.AR Foundation と XR Plugin Management をインストールする


 Unity のプロジェクトを起動し、左上のメニューから Window => Package Manager を選択してください。
PackageManager ウインドウが開きます。

PackageManager ウインドウ
https://docs.unity3d.com/ja/current/Manual/upm-ui....


 PackageManager が開いたら、ウインドウ内の左上にあるパッケージスコープドロップダウンメニューより、Unity Registry を選択してください。
ウインドウ内の表示が、Unity にインストール可能なパッケージの表示に切り替わります。



 この中にある ARFoundation パッケージをインストールしてください。
AR テンプレートで制作している場合には、このパッケージがインストール済になっていますので確認してください。




 自動的に、XR Plugin Management パッケージもインストールされます。





 ARFoundation パッケージは、PC において製作した AR のゲームを、Android 用の ARCore にも、iOS 用の ARKit にも対応させてくれる機能(フレームワーク)です。
各端末に応じてパッケージを使い分けて開発せずとも、ビルドを行う際に、この ARFoundation が自動的に端末に応じた出力を行ってくれるようになっています。



 なお現時点(2023.2月)においては ARFoundation のバージョンは 4.2.2 ですが、プレビューとして 5.0.0 もリリースされています。
ただし、5 シリーズのバージョンの場合には扱うコンポーネントの種類が変わるため、この教材では現行バージョンである 4 シリーズで作成しています。


<参考サイト>
Unity の AR Foundation フレームワーク
https://unity.com/ja/unity/features/arfoundation
ARFoundation パッケージ(4.2 バージョン)
https://docs.unity3d.com/Packages/com.unity.xr.arf...
RIGHTCODE 様
【Unity】ARFoundation入門〜機能解説から平面検知の実装まで〜
https://rightcode.co.jp/blog/information-technolog...


2.AR Core XR Plugin / AR Kit XR Plugin のインストールをする


 この手順は、所有している端末のプラットフォームが Android(Windows) か iOS(Mac) によって変わります

 Android で AR 機能を実行するためには、ARCore XR Plugin パッケージをインストールしてください。

 iOS で AR 機能を実行するためには、ARKit XR Plugin パッケージをインストールしてください。

 どちらも、ARFoundation のバージョンと同じバージョンが提供されています。
今回の場合であれば ARFoundation 4.2.2 ですので、ARCore なども 4.2.2 のバージョンが自動的に表示されます。


<ARCore XR Plugin>



<ARKit XR Plugin>



 それぞれのプラットフォームにおいて AR 環境を提供してくれる機能になります。


<Unity 公式マニュアル>
ARCore XR Plugin
https://docs.unity3d.com/ja/current/Manual/com.uni...
ARKit XR Plugin
https://docs.unity3d.com/ja/current/Manual/com.uni...


3.既存プロジェクトの AR 化の準備


 先ほどインストールした機能を利用して、既存のプロジェクトに AR 用のゲームオブジェクトを追加します。


1.カメラについて

 AR では、AR 専用のカメラを利用することで、ゲーム画面と現実世界とを融合しています。
そのため、Main Camera ゲームオブジェクトは AR 機能においては利用しません

 ただし、PC でのデバッグの際に必要になりますので、次の手順では Main Camera ゲームオブジェクトをスクリプトでオン/オフ制御します

 両方のカメラが一緒に動いていると AR の機能が認識されませんので覚えておいてください。
AR テンプレートを利用した場合には最初から MainCamera ゲームオブジェクトはありません。


2.AR Session ゲームオブジェクトと AR Session Origin ゲームオブジェクトを作成する

 AR の機能を利用するためのゲームオブジェクトが用意されていますので、そちらを2つ、作成します。

 ヒエラルキーの空いている場所で右クリックをしてメニューを開いて、XR => AR Session を選択します。
AR Session ゲームオブジェクトが作成されます。このゲームオブジェクトには、AR Session スクリプトと AR InputManager スクリプトが最初からアタッチされています。
これはそのままで問題ありません。


<AR Session ゲームオブジェクト>




 次も同じ手順で、ヒエラルキーの空いている場所で右クリックをしてメニューを開いて、XR => AR Session Origin を選択します。
AR Session Origin ゲームオブジェクトが作成されます。このゲームオブジェクトには、AR Session Origin スクリプトが最初からアタッチされています。
また、子オブジェクトとして AR Camera ゲームオブジェクトが配置されています。

 これらもそのままで問題ありません。
後程、AR Session Origin ゲームオブジェクトの方は、コンポーネントやスクリプトを追加します。


<ヒエラルキー画像>



<AR Session Origin ゲームオブジェクト>



<AR Camera ゲームオブジェクト>



 この2つのゲームオブジェクトにより、AR の機能が有効化されます。


3.AR Session ゲームオブジェクトと AR Session Origin ゲームオブジェクトの機能の説明


 ここから先は【1】【2】どちらの手順であっても進めてください。



 ゲームに AR 機能を実装するためには、シーン内にある2つのゲームオブジェクトにアタッチされているコンポーネントを含める必要があります。
この2つのゲームオブジェクトにアタッチされているコンポーネント群によって、Unity のゲーム世界と現実世界とを橋渡しをしてくれています。

 AR Session は、AR シーンのライフサイクルをセッションという単位で管理する、AR 機能を構成するメインとなるコンポーネントの1つです。
一緒にアタッチされている ARInputManager は AR などの入力情報を XRInputSubsystem として利用できるようにしているコンポーネントです。

 AR Session Origin は端末のカメラを通して、読み込まれた現実空間の情報を、Unityシーンの「位置・方向・大きさ」に変換するためのコンポーネントです。
この AR 用の座標情報を Session Space といい、Session Space においては、AR Session Origin ゲームオブジェクトの位置が原点位置となります。
 
 AR Session Origin ゲームオブジェクトの子オブジェクトである AR Camera ゲームオブジェクトが、AR 空間でのカメラの役割を担います。
そのため、通常の Camera コンポーネント以外にも、AR 用のコンポーネントが3つアタッチされています。

 下記に公式マニュアルのリンクを添付しておきます。
ARFoundation のバージョンごとにマニュアルが用意されていますので、今回は 4.2 バージョンのマニュアルを紹介します。


<Unity 公式マニュアル>
Class ARSession
https://docs.unity3d.com/Packages/com.unity.xr.arf...
Class ARInputManager
https://docs.unity3d.com/Packages/com.unity.xr.arf...
Class ARSessionOrigin
https://docs.unity3d.com/Packages/com.unity.xr.arf...
Class ARCameraManager
https://docs.unity3d.com/Packages/com.unity.xr.arf...
Class ARPoseDriver
https://docs.unity3d.com/Packages/com.unity.xr.arf...
Class ARCameraBackground
https://docs.unity3d.com/Packages/com.unity.xr.arf...

 
 特に設定が必要な項目はありませんが、これら複数のコンポーネントによって AR シーンが作成されることを覚えておいてください。


4.ビルド用の設定を行う


 設定手順は、Android(AR Core XR Plugin) か、iOS(AR Kit XR Plugin) かによって異なります。
また AR テンプレートを利用している場合にはスキップできる項目もあります。

 ここでは Android の場合の手順を掲載しておきます。
iOS の場合には、こちらのサイトの手順7〜10を参考にしてください。



 Unity Editor の左上のメニューより、File => Build Settings を選択してウインドウを開きます。

 ウインドウ内の左下にある PlayerSettings を押してください。ProjectSettings ウインドウが Player に選択された状態で開きます

 Android 用の設定を行うため、Android のタブを選択します
指示があるまでは、【1】【2】のどちらの手順であっても設定してください。



 最上段にある Company Name を設定します。初期では Default Company となっていますので、こちらを任意の名前に変更します。
ただしスペースを利用した場合、次の手順で警告が出てしまうので、スペースは空けずに名前を設定してください。
 
 この画像ではスペースをわざと空けていますが、このようにはせず、スペースを空けずに設定しましょう。






 続いて、上記の Company Name に関連する OtherSettings 内の設定を2つを行います。

 最初に Resolution and Presentation の中で端末画面の向きの設定を行います。
今回作成するゲームは画面が縦向きですので、Portrait を選択します。Auto Rotation は利用してもしなくても構いません。
こちらはその都度、ゲームの画面に合わせて設定してください。






 続いて、Identificastion 内の Override Default Package Name にチェックが入っていますので、
その下の空白になっている Package Name 内にゲームの識別名設定を行います。(赤いエラーが出ている部分です)





 書式が決まっていますので、画面の注意書きにもあるように com.[YourCompanyName.YourProjectName] となるように設定します。
例えば、Company Name が YourCompanyName、Project Name が MyProject_AR の場合には、下記の画像のように設定します。





 なおここで Company Name や Project Name にスペースが含まれていると Console ビューに警告が出ます





 そして強制的にスペースが省かれた形で PackageName が修正されて設定されます。






 最後に、ProjectSettings 内の左側にある項目から XR Plugin Management を選択し、
Android の場合には ARCore、iOS の場合には ARKit に、下記の画像のようにチェックを入れます。




 
 AR テンプレートを利用している場合は、ここまでで設定は完了です。
既存のプロジェクトに AR 機能を追加した場合には、次の手順で追加の設定を行います。



 追加で OtherSettings 内の設定を2つ行います。

 Graphics APIs から Vulkan を削除します。
これは Vulkan が AR の描画に対応していないためです。






 次に、Minimum API Level を7.0以上に変更します。
これは、API Level 7.0 以上でないと AR に対応していないためです。






 以上でビルドの設定は完了です。


5.ビルドを行う


 Unity Editor の左上のメニューより、File => Build Settings を選択して、ウインドウを開きます。
プラットフォームが Windows, Mac, Linux である場合、ご自分の所持している端末に合わせて Android か iOS のいずれかに設定します。
設定したいプラットフォームをクリックして青く選択された状態にし、その状態で右下にある Switch Platform ボタンを押すと設定できます。




  ↓

 Unity のアイコンが移動して、プラットフォームの設定が完了します。






 続いて Scenes In Build 内に現在のシーンを追加し、Build 対象にします。
Add Open Scenes ボタンを押すと、現在エディターで開いているシーンが追加されます。





 この後、自動的に Build ボタンを押せるようになる場合と、シーンを追加しても Build ボタンが押せない場合があります。
Build ボタンが灰色で押せない場合には一度 Build Settings ウインドウを閉じ、再度、開き直してください。
そうすると押せるようになります。





 Build ボタンか、Build And Run ボタンをおして Build します。
端末を PC と接続できるのであれば、Build And Run ボタンを押してください。
接続している端末でゲームが実行されます。

 iOS の場合には Build And Run を実行すると XCode が立ち上がり、その後、接続している端末でゲームが起動します。



 Build の場合には、任意の場所とファイル名を設定します。
初回は時間がかかります。ビルドに成功すると、Build の場合には、Android 用の APK ファイルが作成されます。
そちらを自分のデバイスにインストールすることで、実機での AR のテストを行うことが出来ます。

 インストールの方法ですが、Google ドライブなどの PC とデバイスとで共有できるサービスに APK ファイルを置いてください。
PC 内にある APK ファイルを Google ドライブに入れる事で、デバイスから Google ドライブにアクセスしてダウンロードとインストールが行えます。


<インストール確認(初回)>



<インストール確認(インストール済で2回目以降)>



<正常にインストール後の画面>



 インストールが完了したら、ゲームを起動してください。アプリとしてデバイス内に追加されています。



 ゲームが起動し、AR が正常に動作している場合、ゲームの起動後にカメラの許可を求められます。このメッセージが出てくることを確認してください。

 許可するを選択すると、AR 用のカメラが立ち上がります。


<カメラの許可>




 現時点では、AR のカメラが起動する部分まで確認ができれば大丈夫です。



  以上でこの手順は終了です。

 => 次は 手順2 AR空間に画像付きのオブジェクトを生成する です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます