見出し画像

【Lightship ARDK3.0を使ってみた】ARDK2利用者必見!ARDK3.0への移行手順とアドバイス

こんにちは!デザイニウムの佐久間(@ppengotsu) です。
Niantic Lightship ARDKの最新バージョン”3”に追加された機能や変更点を紹介する連載記事(全3回)の第2回目です。

本記事は、ARDK2からアップデートする際に知っておいたほうが良い情報を弊社メンバーに聞いてみたものをまとめたものです。

第1回の記事はこちら
【Lightship ARDK3.0を使ってみた】エンジニアが解説!最新バージョンの魅力とは?

できるなら、新規Unityプロジェクトをつくって、ARDK3を導入したほうがよい

ARDK2を使ってプロジェクトを作っていた場合、公式のアップデート手順が参考になります。
https://lightship.dev/docs/ja/ardk/migration_guide/

ただ、なにかのバグやちょっとした独自クラスによって、アップデート対応で行き詰まる可能性があります。公式サイトの手順には載っていない、バグを未然に防ぐ方法として新規Unityプロジェクトを作成し、ARDK3を導入することが推奨されます。

具体的には下記のような手順がいいのではないかというアドバイスをもらいました。

  1. ARDK3に対応できるUnityプロジェクトを新規作成する

  2.  新規プロジェクトでARDK3の設定を行う

  3. 既存プロジェクトのARDK以外のソースコードや素材を、新規プロジェクトへコピーする

  4.  クラス変更などの対応を順番に行う

これで、Unityのパッケージまわりのキャッシュや、DLLのキャッシュによる原因不明のエラーがほぼ発生しなくなります。

iPhone11以下の機種では、Environment Occlusion機能をオフにする選択もあり

iPhone11以下の機種でのEnvironment Occlusionの扱いについて。
現時点のARDK3をiPhone11以下の機種で試してみると、オクルージョンの精度がそれより新しい機種に比べてあまりよくないことがあります。作成するアプリに必要な精度が足りない場合、オフにする選択肢も考慮に入れると良いでしょう。

設定の変更箇所は、AROcclusionManagerクラスのEnvironmentDepthModeです。Disabledにするとオフになります。

GUI上の設定項目

一部機能の削除について

 Scanning Frameworkがない

アプリ実行中に、銅像などの対象物を撮影することで3Dモデルを動的に作成できる機能が、現時点のARDK3にはないようです。この機能の変更を実装するのは大変だと思うので、この機能が必要な場合は、ARDK2をつかうことになるでしょう。

モック環境がない

ARDK2では、特別な実装なしに、UnityEditor上でAR機能を試すことができましたが、この機能が廃止されました。この機能の代わりとしては、ARDK2からある”レコーディングとプレイバック”機能があげられるでしょう。実機端末で撮影したデータをUnityEditor上で再生しながら、動作確認ができます。メッシュ生成のパラメータの調整をUnityEditor上で調整する際などにも使えます。

通信系のクラスはNetcodeへの対応が必須

ARDK独自のネットワーク実装を使用した実装がされていたが、UnityのNetcodeを使用した実装に変更されました。名前空間、クラスの名称などが変更されているため、通信部分の実装には大きな変更が必要になるかと思います。

メッシュ生成機能は、ビルド前にLiDARのオン・オフのどちらかの選択が必須

LiDARが搭載された機種は、Unityのプロジェクト設定のLiDAR使用がオンであれば、LiDARを使います。オフであれば、常にLiDARを使わないという挙動となりました。

ARDK3でアップデートされたメッシュ機能で数十メートル以上先のメッシュを生成したい場合、LiDARをオフにする必要があります。近くのものはLiDARできれいにメッシュ生成、遠方は画像処理でざっくり生成するような自動切り替え機能はないようです。

LiDARのオン、オフの項目は、Unityプロジェクト設定上にあります。そのため、アプリ動作中の変更はできません。遠方まで使いたいアプリで、一部のシーンのみLiDARをオンにするようなシーンごとの挙動制御はできないようです。アプリ内共通でLiDARを使う、使わないを設定する必要があります。

LiDARオン、オフ切り替えの設定画面

AR空間の共有方法の変更。屋内前提の企画は変更が必要かも?

1.アプリ配布後の体験の違い
ARDK2のAR空間共有は、共有する空間を識別するためのIDをキーボード入力やQRコードをつかって入力する必要がありました。ARDK3のAR空間共有は、VPSで同じ場所をローカライズするorマーカーをスキャンするだけで空間が共有できるようになりました。体験者にとっては、面倒な入力がなくなったので、良くなったように思えます。

ただ、欠点が1つでてきてしまいました。
公開されているローカライズできる場所は、家にはないとおもいます。地方では、家の近くにもなかなかありません。漫画雑誌の表紙や商品ロゴなどの画像マーカーによる共有以外で、屋内にいる人同士でAR空間を共有した遊びを提供するのは難しくなりました。 

2.開発中の違い
ARDK2は、体験者が同じ場所にいて、同じIDを入力するだけで、共有ができます。開発者が事前になにか準備しておくことはありません。ARとインターネット通信ができれば、オフィスの会議室でもどこでもすぐに共有機能を試すことができます。

ARDK3は、指定した場所のローカライズができた場合、空間共有されます。
VPSをつかうということは、事前に対象エリアの一部をスキャンしてローカライズできるようにしておく必要があるということです。新しい場所をローカライズ対象にするには、スキャンして数時間の処理を待つ必要があります。オフィスのような公開されているローカライズ対象がない場所では、空間共有を試すまでに時間がかかります。

VPSを使わない方法としては、画像マーカーをつかった空間共有機能があります。こちらの場合は、マーカーを準備できればAR空間の共有ができます。

どちらの方法にしても事前の準備が必要であるため、ご注意ください。

ARDK2のサポート期限は2024年4月1日まで

ARDK3へのアップデートをゆっくりやっている時間もそこまでないようです。ARDK2の公式サポートは、来年の4月1日までとアナウンスされました。
残り半年を切っているので、テストなど含めると余裕はないかもしれないです。

ARDK3のいいところ

ここまでちょっと導入ハードルをあげるような話になったので、最後に弊社メンバーがARDK3について褒めていたところを抜粋して記載します。

  • Google Geospatial APIのようなARFoundationの拡張ライブラリといっしょに使えるようになった

  • メッシュ生成機能範囲が広がった

  • Unity2022が公式サポートされた

それぞれのライブラリのいいところどりができるのはよいですね。
Geospatial APIを使えば、緯度経度を指定した箇所に3Dモデルを設置できます。「目的地まではGeospactila APIを使ってナビゲートして、目的地についたら、ARDK3のメッシュ機能による現地の詳細情報をもとにした、AR体験を提供する」といった応用が考えられます。

長期に渡って稼働するアプリケーションが今後のiOSのアップデート等に対応するには、Unity2022へのアップデートが不可欠です。また、Unity2022は様々な処理速度が改善されているため、開発速度、アプリの実行速度の改善が期待されます。このメリットは、短期間のみ利用するアプリでも有効です。

メッシュ生成してみた例
街路地の遠方(20メートル以上先)までメッシュが生成されていることが確認できますね。

生成時の設定

おわりに

一番驚いたことは、AR空間の共有方法が変更されたことです。ローカライズできる場所を指定することがほぼ必須になったので、ローカライズする場所と企画をどう絡ませるか考える必要がありますね。

ARDK3が正式リリースされて間もないので、完璧なアドバイス記事ではないですが、参考になれば幸いです。

最後の記事では、実際にデモを作成し、解説します。
お楽しみに〜。

エンジニア募集中!

デザイニウムはWebAR ができるウェブエンジニア を募集中です💻話題のApple Vision Pro向けアプリをはじめとした、多彩なXRコンテンツの開発に携われる刺激的な環境です🤩✨テーマを持ってR&Dに取り組むことも歓迎しています。就業はフルリモートなので、全国どこからでも応募できます🏢

カジュアル面談も大歓迎です。ぜひご応募お待ちしています👍



この記事が気に入ったらサポートをしてみませんか?