🕶️

Unity PolySpatialを使ってApple Vision Pro向けアプリを開発する

2024/02/05に公開

キービジュアル

概要

いよいよApple Vision Pro、発売されましたね。MESONでは今後、Apple Vision Proの開発に力を入れていきます。第一弾として「SunnyTune」という、天気を体感できるアプリを開発し、Apple Vision Proのローンチに合わせてリリースしました!

SunnyTune

https://prtimes.jp/main/html/rd/p/000000055.000032228.html

空間コンピューティング時代における新しい体験作りを今後もしていきたいと思っています!


X(旧Twitter)のポストを見ても、Apple Vision Proは好意的に受け入れられている印象です。結構街中で使っている動画なんかも上がっていて、意外と早く街中でARゴーグルやグラスが付けられる未来がくるのかな、とワクワクしています。

前述の通り今後もApple Vision Proに力を入れていく予定なのでその一環として、MESONでは1ヶ月毎日記事投稿チャレンジとして、Apple Vision Pro関連の記事を2月を通して毎日更新していく予定です。今回の記事はその第一弾です。

Apple Vision Pro向けアプリ開発を通しての知見など、色々な内容が公開予定なのでぜひ楽しみにしていてください!

ということで、ここはテックブログなので開発についての話を。

開発するにはXcodeを利用する必要がありますが、Unityが発表したPolySpatialフレームワークを使うことでvisionOS向けのアプリを開発することができるようになります。

今回はMESONでも注力していくApple Vision Proの、Unity PolySpatialを利用したアプリ開発について開発の始め方を書いていきたいと思います。

https://create.unity.com/spatial

開発環境

開発を開始するにあたって、必要とするUnityなどのバージョンがあるのでまずは開発環境について記載します。

  • Apple sillicon Mac(Intel Macは非対応)
  • Xcode 15
  • Unity 2022.3.18以上(URP推奨)
    • Unityライセンス(Pro / Enterprise / Industry)必須
  • visionOS Build Support
  • com.unity.polyspatial.xr
  • com.unity.polyspatial.visionos

上記Unityのバージョンをインストール後、以下のパッケージを「Add package by name...」からインポートします。

パッケージのインポート

プロジェクト設定

無事にパッケージがインポートできたらプロジェクトの設定をvisionOS向けに変更していきます。

▼ プラットフォームをvisionOSにする

プラットフォームの選択

▼ XR Plug-in Managementの Apple visionOS にチェックを入れる

visionOSの選択

▼ Hand TrackingとWorld SensingのDescriptionを設定し、MRモードを選択する

ハンドトラッキングや環境認識の機能のパーミッションを得るための設定です。また、今回はMRアプリを制作するためApp Modeを「Mixed Reallity - Volume or Immersive Space」に変更します。

Configure Descriptions

▼ Project Validationをチェック

XR Plug-in ManagementにあるProject Validationを見ると、現在の問題を列挙してくれるので Fix ボタンを押して解消しておきます。

バリデーション

シーンのセットアップ

続いてシーンのセットアップです。MRシーンを構成するには最低限必要なコンポーネントがあります。以下のコンポーネントを配置します。

  • AR Session
  • XR Origin

AR Sessionについては、前段のバリデーションを実行していれば自動的にシーン内に配置されます。

XR Originは以下のメニューから生成することができます。

XR Originの生成

以上でセットアップは完了です。これでvisionOS向けのアプリを作る準備が整いました。

サンプルシーンをビルドしてみる

試しにCubeをひとつだけシーンにおいてビルドしてみましょう。

Build a scene

Unityでのビルドが終わるとXcodeプロジェクトが書き出されるので、それを開いてさらにXcodeでもビルドを行います。

Xcodeでビルド

少し待つとビルドが終わり、Cubeが空間に表示されているのが確認できます。

起動したアプリ

visionOS向けアプリを作る上での注意点

ShaderGraphを使う必要がある

基本的にC#については問題ないことが多いと思いますが、グラフィックについては要注意です。

というのも、カスタムの(つまり自分で書いた)シェーダのサポートは一部のみにとどまっています。初期のバージョンでは完全に非対応で、カスタムシェーダを利用したマテリアルはピンクになってしまっていましたが、最新版(執筆時点の 1.0.3 )の場合は、簡単なものなら変換してくれるようです。例えば、デフォルトで生成されるUnlitにカラーを追加したようなものは正常に表示されました。

ただ、込み入ったものの場合は話が変わってくるので、もしそうしたシェーダを使いたい場合は必ずShaderGraphを使ってください。特に、既存のアプリを移植する場合に手書きのシェーダがある場合はShaderGraphへのコンバートが余儀なくされるのでその点には注意が必要です。

Volume Cameraの位置に注意

Apple Vision Proではアプリが利用できるモードに種類があり、特にShared Spaceモードで制作すると他のアプリと空間を共有することになるため、アプリが描画されるエリアが3Dのボリューム内に限定されます。この範囲や位置を示すのが見出しの Volume Camera なのですが、Exclusive ARでも「位置だけ」は利用されます。

なので、このコンポーネントを持つオブジェクトを原点以外に配置すると、意図しない位置にオブジェクトが描画される、という問題になるので配置位置には注意しましょう。

Play to Device

Play to Deviceは、Unity上から直接visionOSシミュレータ上およびApple Vision Pro上で動作を確認できる機能です。

詳細は以下のフォーラムの記事を参照してください。

https://discussions.unity.com/t/play-to-device/309359

We’re excited to announce the availability of Play to Device, a powerful feature that drastically improves iteration and debugging workflows. Play to Device enables you to:

  • Efficiently iterate and live preview your content across the Unity editor on the visionOS simulator or the Apple Vision Pro device
  • Deploy your content without rebuilding an Xcode project
  • Access Unity editor’s play mode features on the visionOS simulator and Apple Vision Pro device

紹介文を見ると劇的にイテレーションとデバッグのワークフローを改善すると書いてあります。できることとして、

  • 効率的にイテレーションを実行でき、ライブプレビューをシミュレータと実機上で見ることができる
  • コンテンツのXcodeのリビルドなしにデプロイできる
  • visionOSシミュレータおよびApple Vision Pro実機上でUnity EditorのPlay modeの機能を利用できる

見る感じ、Quest LinkのApple Vision Pro版といった感じですね。とても強力なツールです。

シミュレータへのインストール

まずはシミュレータへのインストール手順です。

  1. こちらのリンクからホストアプリをダウンロードする
  2. visionOSシミュレータを起動する
    • 起動するには、「Xcode > Open Developer Tool > Simulator」から起動するかSpotlightで「simulator」とタイプして起動します
    • すでにシミュレータアプリを起動中でvisionOSを落としている場合はSimulatorアイコンを右クリックして「Device > visionOS xx > Apple Vision Pro」を選択することで起動できます
  3. visionOSが起動し、ホーム画面が表示されたら、(1)でダウンロードしたPlayToDeviceHost.appをドラッグ&ドロップします

インストールが完了すると以下のようにアイコンが追加されます。

ホストアプリのインストール後

Unity側の設定

続いてUnity側の設定を行います。

Unity側で「Window > PolySpatial > PlayToDevice」を選択すると設定画面が表示されます。

PlayToDevice設定

ここの「Connect to Play」の設定を Enabled に変更します。

設定は以上です。

Play to Deviceを実行する

インストールおよび設定が終わったら、シミュレータにインストールしたホストアプリを起動します。起動するとIPアドレスなどの情報とともに、コネクション可能と表示されればOKです。あとは通常通り、UnityのPlayボタンを押して再生するとUnityのシーンの情報がシミュレータに伝達され状態を確認することができます。

当然、Unity上で新しくオブジェクトを追加したり位置を移動したりするとそれが反映されます。

かなり開発が効率化されますね。これは使わない手はないでしょう。

エンジニア絶賛募集中!

MESONではUnityエンジニアを絶賛募集中です! XRのプロジェクトに関わってみたい! 開発したい! という方はぜひご応募ください!

MESONのメンバーページからご応募いただくか、TwitterのDMなどでご連絡ください。

書いた人

えど

比留間 和也(あだな:えど)

カヤック時代にWEBエンジニアとしてリーダーを務め、その後VRに出会いコロプラに転職。 コロプラでは仮想現実チームにてXRコンテンツ開発に携わる。 DAYDREAM向けゲーム「NYORO THE SNAKE & SEVEN ISLANDS」をリリース。その後、ARに惹かれてMESONに入社。 MESONではARエンジニアとして活躍中。
またプライベートでもAR/VRの開発をしており、インディー部門でTGSに出展など公私関わらずAR/VRコンテンツ制作に精を出す。プライベートな時間でも開発しているように、新しいことを学ぶことが趣味で、最近は英語を学んでいる。

GitHub / Twitter

MESON Works

MESONの制作実績一覧もあります。ご興味ある方はぜひ見てみてください。

MESON Works

Discussion