今回は前回に引き続き 4月23日に参加した Unityシンガポール 主催の「Unity AR Foundation」の講座の実習パートのレポートです。AR Foundation の実習の内容を基に、Unity AR Foundation の設定方法 を画面イメージをまじえ説明しております。
【 Unity AR Foundationの設定方法 Part.1 】
【 Unity AR Foundationの設定方法 Part.1 】
前回、Step 1から Step 3 (必要なパッケージのインポート、AR Sessionのオブジェクト追加とPlayer Setting、認識した特徴点の表示設定)まで説明しましたので、今回は Step 4からとなります。
【Step 4:認識した平面の表示設定】

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

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

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

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

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

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

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

先ほど Prefab化した Projectビュー上の「AR Default Plane」を Inspectorビュー上の AR Plane Manager コンポーネントの「Plane Prefab」へドラッグ&ドロップします。
【Step 5:3Dオブジェクトを表示するC#スクリプトの作成】

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

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

この「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ビュー上へドラッグ&ドロップします。

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

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

Hierarchyビューにできた Cubeオブジェクトを Projectビューにドラッグ&ドロップします。
Hierarchyビューから Create > 3D Object > Cube をクリックします。

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

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

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

【Step 6:モバイルデバイスでテスト実行】
では、AR Foundation の設定は終了したので、モバイルデバイスでテスト実行してみましょう。
まず先に USBケーブルで Androidモバイルデバイスを接続させておきます。
メニューから File > Build Settings... をクリックします。

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

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

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

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

では、AR Foundation の設定は終了したので、モバイルデバイスでテスト実行してみましょう。
まず先に USBケーブルで Androidモバイルデバイスを接続させておきます。
メニューから File > Build Settings... をクリックします。

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

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

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

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

Sponsored Link