今回は前回に引き続き 4月23日に参加した Unityシンガポール 主催のUnity AR Foundationの講座の実習パートのレポートです。AR Foundation の実習の内容を基に、Unity AR Foundation の設定方法 を画面イメージをまじえ説明しております。

Unity AR Foundationの設定方法 Part.1

AR Foundation_62

前回、Step 1から Step 3 (必要なパッケージのインポート、AR Sessionのオブジェクト追加とPlayer Setting、認識した特徴点の表示設定)まで説明しましたので、今回は Step 4からとなります。

【Step 4:認識した平面の表示設定】
AR Foundation_39

まず、Hierarchyビューから Create > XR > AR Default Plane をクリックして、AR Default Plane オブジェクトを作成します。これが現実の平面を認識した際に表示する平面オブジェクトとなります。
AR Foundation_40

次に、平面を認識した際の平面オブジェクトを分かりやすくするため色を付けます。Projectビューの Create > Material をクリックして、Material を作成します。名前をここでは PlaneMaterial とします。
AR Foundation_41

Projectビュー上の「PlaneMaterial」マテリアルをクリックし、Inspectorビュー上の Albedo を変更します。
 AR Foundation_42

Colorウィンドウが表示されますので、ここでは認識された床が見えるように 少し透明な赤色をセットします。(ここでは、RGBA(255, 0, 0, 100)。)
AR Foundation_43

Hierarchyビュー上の AR Default Plane オブジェクトをクリックします。Projectビュー上の今作成した「PlaneMaterial」Materialを Inspectorビュー上の Mesh Rendererエリアの Materials > Element 0 にドラッグ&ドロップします。
AR Foundation_44

この Hierarchyビュー上の AR Default Plane オブジェクトを Projectビュー上にドラッグ&ドロップして、Prefab化します。
AR Foundation_45

次に、Hierarchyビュー上の「AR Session Origin」をクリックして、Inspectorビュー上で Add Component ボタンをクリックします。そこから、「AR Plane Manager」を検索して追加します。
AR Foundation_46

先ほど Prefab化した Projectビュー上の「AR Default Plane」を Inspectorビュー上の AR Plane Manager コンポーネントの「Plane Prefab」へドラッグ&ドロップします。
AR Foundation_47
 
最後に、Prefab化したオブジェクトは、Hierarchyビュー上には必要はないので、右クリックして Deleteをクリックします。
AR Foundation_48


【Step 5:3Dオブジェクトを表示するC#スクリプトの作成】

AR Foundation_49

まず、新たな C#スクリプトを作成します。Projectビューから Create > C# Script をクリックします。
AR Foundation_50

できた C#スクリプトの名前をそのまま変更します。ここでは、「PlaceOnPlane」としておきます。
AR Foundation_51

この「PlaceOnPlane」をダブルクリックして、Visual Studio 等のエディタからスクリプトの中身を表示します。
そして、以下のようにスクリプトの中身を変更します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;

public class PlaceOnPlane : MonoBehaviour
{
    public GameObject prefabToPlace;
    public ARSessionOrigin aRSessionOrigin;
    public List<ARRaycastHit> hits;

    void Start()
    {
        hits = new List<ARRaycastHit>();
        aRSessionOrigin = GetComponent<ARSessionOrigin>();
    }

    void Update()
    {
        if (Input.touchCount > 0)
        {
            for (int i=0; i < Input.touchCount; i++)
            {
                Touch touch = Input.GetTouch(i);
                if (touch.phase == TouchPhase.Began)
                {
                    if (aRSessionOrigin.Raycast(touch.position, hits))
                    {
                        Pose hitPose = hits[0].pose;
                        Instantiate(prefabToPlace,
hitPose.position, hitPose.rotation);
                    }
                }
            }
        }
    }
}

C#スクリプトの変更を保存して、Unityエディタに戻ります。

Hierarchyビュー上の「AR Session Origin」をクリックして、今作成したC#スクリプト「PlaceOnPlane」を Projectビューから Inspectorビュー上へドラッグ&ドロップします。
AR Foundation_52

次に ARで表示する3Dモデルを作ります。ここでは簡単に Cube を表示させることにします。
Hierarchyビューから Create > 3D Object > Cube をクリックします。
AR Foundation_53

Hierarchyビューにできた Cubeオブジェクトを Projectビューにドラッグ&ドロップします。
AR Foundation_54

Prefab化したオブジェクトは、Hierarchyビュー上には必要はないので、右クリックして Deleteをクリックします。
AR Foundation_55

そして、最後にHierarchyビュー上の「AR Session Origin」をクリックして、Inspectorビュー上の Place On Planeエリアの「Prefab To Place」に Projectビューから「Cube」Prefabをドラッグ&ドロップします。
また、Place On Planeエリアの「AR Session Origin」には Hierarchyビューから「AR Session Origin」オブジェクトをドラッグ&ドロップします。
AR Foundation_56



【Step 6:モバイルデバイスでテスト実行】

では、AR Foundation の設定は終了したので、モバイルデバイスでテスト実行してみましょう。

まず先に USBケーブルで Androidモバイルデバイスを接続させておきます。
メニューから File > Build Settings... をクリックします。
AR Foundation_57

Build Settings画面から「Build And Run」ボタンをクリックします。
AR Foundation_58

すると、apkファイル名の入力画面が表示されます。ファイル名はなんでもけっこうです。Saveボタンをクリックします。
AR Foundation_59

そして、ビルドと Android端末へのインストールが始まります。
AR Foundation_60

インストールが終わると自動的にARアプリが立ち上がってきます。

モバイルデバイスのカメラを床に向けて円を描くように動かします。すると床を認識し、特徴点に黄色いドット、床面に半透明の赤色のプレートが表示されます。
その認識され赤色になった床面をタップしてみましょう。ARオブジェクト、白色のCubeが現れました。
AR Foundation_64

 
【おまけ】

現在、3Dオブジェクトが白色の Cubeですが、それを自分の好きなものに変更すればどのような 3Dオブジェクトも ARオブジェクトとして利用できます。
今回は自分で3Dモデリングしたシンガポールのセントーサ島にいるマーライオンに変更してみました。
今回の記事の最初の写真や以下の写真がそうです。家の前で撮りましたが、宇宙怪獣マーライオンが地球侵略に来たみたいで少し怖い写真となってしまった。
AR Foundation_63


Sponsored Link