i-school - 3Dスライダーゲーム 発展1
 製作してきたゲームを、AR(拡張現実)機能に対応させていく手順を学習します。

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

 AR は開発のための前提条件として、PC で製作したものであっても、スマホ端末(デバイス)でしか起動できません
そのため、PC において開発は行いますが、対応するスマホ端末がないと起動テストもできない状態になります

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

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

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

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


発展1 ーAR 環境の構築ー
 1.AR Foundation / AR Core XR Plugin / ARKit XR Plugin のインポートとビルド設定
 2.3Dプロジェクトの AR 化の準備



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

 ・AR 環境の構築



1.AR Foundation / AR Core XR Plugin / AR Kit XR Plugin のインストールとビルド設定

1.AR Foundation をインストールする


 新規にプロジェクトを作成する際に AR ゲームとして作成する場合、現在の Unity であれば、AR に必要な機能を準備した状態でプロジェクトを開始できます。
その場合には、Unityhub にてプロジェクトを新規作成する際に、AR テンプレートを選択して、プロジェクトを起動します。
このテンプレートは最初はインストールさせていないため、ダウンロードすることで Unityhub 内で選択できる状態になります。


Unityhub テンプレート選択



 今回は利用しませんが、手順として覚えておいてください。



 今回の場合は、製作済のゲームのプロジェクトを AR 化していくので、まずは最初に AR に必要な機能をインストールすることから始めます。

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

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


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

 この中にある ARFoundation パッケージをインストールしてください。



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





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


<参考サイト>
Unity の AR Foundation フレームワーク
https://unity.com/ja/unity/features/arfoundation
ARFoundation パッケージ
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 パッケージをインストールしてください。


<ARCore XR Plugin>



<ARKit>



 それぞれの端末において AR 環境を提供してくれる機能になります。

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


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


 こちらの設定手順も、Androif(AR Core XR Plugin) か、iOS(AR Kit XR Plugin) かによって異なります。

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


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

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

 Android のタブを選択します



 最初に Resolution and Presentation の中で端末画面の向きの設定を行います。
今回のゲームは画面が横向きですので、Landscape を選択します。Auto Rotation は利用してもしなくても構いません。






 続いて、OtherSettings 内の設定を2つ行います。

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






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






 最後に、同じ ProjectSettings 内の XR Plugin Management を選択し、下記の画像のようにチェックを入れます。





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

 なお、AR テンプレートを使って新規作成したプロジェクトは、この手順もすべて完成している状態で提供してくれますので便利です。


2.3Dプロジェクトの AR 化の準備

1.カメラについて


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

 ただし、PC でのデバッグの際に必要になりますので、まずは Main Camera ゲームオブジェクトのスイッチを切っておいてください
両方のカメラが一緒に動いていると、AR の機能が認識されません


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 ゲームオブジェクトの機能の説明


 ゲームに 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つアタッチされています。


<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.ビルドを行う


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

 Build ボタンをおして、任意の場所とファイル名を設定し、ビルドを実行してください。
初回は時間がかかります。ビルドに成功すると、Windows であれば、APK ファイルが作成されます。

 そちらを自分のデバイスにインストールすることで、実機での AR のテストを行うことが出来ます。

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


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



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



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




 インストールが完了したら、ゲームを起動してください。アプリとしてデバイス内に追加されています。
 AR が正常に動作している場合、ゲームの起動後にカメラの許可を求められます。このメッセージが出てくることを確認してください。

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


<カメラの許可>




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

 次以降の手順で、ゲームの内容を AR 向けに変更していきます。



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

 => 次は 発展2 −カメラの自動切り替え機能の実装− です。