iOS 13ベータでARKit 3を動かすメモ

先日のWWDC 2019で発表されたARKit 3、大幅に機能拡張されて衝撃を受けました。

ARKit 3の新機能のサンプルをUnityから動作させることができるので手順をメモしておきます。

iOS 13 / iPadOS 13 / Xcode 11のインストール

ARKit 3はiOS/iPadOS 13の機能になりますので、実機にどちらかのインストールが必要です。
Apple Developer Programに参加して、Downloadからインストールイメージをダウンロードしておきます。
(無料の会員でもダウンロードは可能です)

また、Xcode 11ベータもダウンロードして、インストールしておきます。

なお、インストールにmacOS 10.15ベータは必要ありません。

iTunesを起動して、デバイス画面の「アップデートの確認」をOptionキーを押しながらクリックすると、イメージを指定するダイアログが出てくるので、先ほどダウンロードしたiOS/iPadOSのイメージを指定します。(バックアップなどは事前に取っておいてください)

復元が始まると初期化されると思いきや、iOS 12の時に使っていたアプリや設定は引き継がれたままiOS 13になりました(いつもそうなるとは限りませんし、iOS 12に戻す場合にも備えてバックアップは取っておいてください)

サンプルプログラムのダウンロード

ARKit 3のサンプルプログラムですが、AR Foundationを使用して作成されています。これまでのARKitは、ARKitのSDKをBitbucketからダウンロードして使用していましたが、今回からはAR Froundationに統合されたようです。AR Foundationは、ARKitやARCoreといったプラットフォーム依存のAR技術をラッピングしつつ同一のコードで作成できる仕組みで、Unity Package Managerから入手することができます。

Unityが進めている、AR開発を機種依存無しでできるようになるパッケージ「AR Foundation」を触ってみました。 AR Fo...

なお、最新の情報に関しては下記のフォーラムで議論されています。

AR Foundation 2.1で、ARKit 3の一部の機能がサポートされたと記載があります。

また、Unity 2018.4を使っている場合はAR Foundation 2.1.0は利用できないが、1.5.0を使用すればよい旨の記載もありました。

サンプルプログラムプログラムは下記になります。

Example content for Unity projects based on AR Foundation - Unity-Technologies/arfoundation-samples

cloneしてみると、プロジェクトで使用されているUnityは(6/9時点で)2019.1.5f1でしたので、素直にインストールしましたが、2019系でしたらば動くのではないかと思います。
また、2018.4を使用している場合は、Asset以下のファイルから適宜コピーして、Package ManagerでAR Foundation 1.5を入れれば動かすことはできると思うのですが、試していないので詳しくは不明です。

Unity 2019.1.5f1で開いた場合、Package Managerでは既に
・AR Foundation 2.2.0
・ARKit XR Plugin 2.2.0
がインストールされた状態でした。

実機確認

あとはBuild SettingsでiOSに切り替えてビルドして、Xcode 11で開いて実行すれば実機で動かすことができました。

NDAのため実機のスクリーンショットは載せられないのですが、Scene/HumanSegmantation 以下のBody Tracking関連のサンプルは非常に精度が高くて驚きました。(A12以降のチップでしか動かないらしいです)

おまけ(シーン切り替え)

こういうシーンがたくさんあるサンプルを動かす時に、シーン切り替えの機能を毎回作ってしまう気がするので、単純ですがスクリプトをメモしておきます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
 
public class ScneneChange : MonoBehaviour
{
    void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
 
    public string[] scenes;
 
    void OnGUI()
    {
        foreach (string scene in scenes)
        {
            if (GUILayout.Button(scene, GUILayout.Width(250), GUILayout.Height(50)))
            {
                SceneManager.LoadScene(scene);
            }
        }
    }
}

新しいシーンを作って、空オブジェクトにアタッチして、インスペクタにシーン名(Build Settingsの一覧と同一のもの)を入れて、作ったシーン自体も登録してScene一覧の一番上に移動させておきます。すると、シーン切り替えボタンが表示されます。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク