はじめに
こんにちは。
ARアプリケーションを開発するうえでOcclusionはぜひ実装したい機能です。AR Foundationには簡単にOcclusionを実現するためのコンポーネントが用意されていますが、LiDAR非搭載iPhone(iPhone無印)ではEnvironment Occlusion(環境オクルージョン)をすることができません。そこで今回はLightship ARDKを利用してLiDAR非搭載iPhoneでEnvironment Occlusionをしていこうと思います。
Lightship ARDKとは
Lightship ARDKとは『Pokémon GO』を開発したNianticよるAR開発ツールキットで、リッチなARを実現するための機能が提供されています。AR Foundationを拡張することができ、AR Foundationで強力なLightship ARDKの機能を利用できるようになります。AR Foundationでは行うことのできない単眼深度測定を行うことができ、これによってLiDARなしでOcclusionを実現します。
実装
Lightshipの準備
上のリンクからアカウントを作成します。
アカウントの登録ができたらダッシュボードに入るので、プロジェクトの作成に進みます。
プロジェクトを作成したら、(お好みでプロジェクトの名前を設定してもよいです)API Keyをコピーします。
Unityプロジェクトの作成
Unity Hubからプロジェクトを作成してください。このとき使用するエディターのバージョンは公式で以下のように明言されています。
Unity 2022 LTS(2022.3.37f1)と2021 LTS(2021.3.37f1)をサポートしています。
筆者の環境で全く同じバージョンでなくても2022.3.53f1で動作しているので2021や2022のLTSを使っておけば大丈夫でしょう。(だめだったらごめんなさい)
パッケージインストール
AR開発に必要なパッケージをインストールしていきます。
まず、ARパッケージをまとめてインストールしてしまいましょう。
エディターの再起動の指示があったら、そのまま再起動してください。
再起動したら、もう一度Package Managerを開いて、以下のGit URLからパッケージを追加してください。
https://github.com/niantic-lightship/ardk-upm.git
プロジェクト設定
Edit > Project SettingsからProject Settingsを開きます。
XR Plug-in Managementで以下のように操作してください。
Niantic Lightship SDKの設定に移ります。
API Keyに先程のAPI Keyをペーストしてください。
Project Validationを確認するといくつか問題が発生してようですがFix Allを押すと解決します。
画像ではiOSのみ確認していますが念の為他のタブも確認していおいたほうが良いでしょう。
以上でLightship SKDの設定は完了です。
ビルド設定
皆さんの環境に合わせてビルド設定を行いましょう。ここではiOS向けのビルド設定をしておきます。
iOSにSwitch Platformをした後、Player Settingsへ。
プロジェクト名がTestARなど普遍的なものの場合はBundle Identifierも変えておきましょう。
Bundle Identifierは全世界で重複できません。そのためプロジェクトで固有の値を設定する必要があります。UnityにおけるBundle Identifierの設定方法は他にもありますがここでは詳しくは触れません。
これでビルド設定も完了です。
Sceneの準備
いよいよARを実現するSceneを作っていきます。
まず、ヒエラルキーからMain Cameraを削除してください。
続いて、ヒエラルキー上で右クリックしXRの中にあるAR SessionとXR Origin(Mobile AR)を追加してください。
ヒエラルキーからXR Origin > Camera Offset > Main CameraにLightship Occlusion Extensionコンポーネントを追加してください。AR Occlusion ManagerとLightship Occlusion Extensionが追加されます。
XR Originの子として3D Object > Cubeを追加して、TransformからPositionを少しずらして、Scaleをそれぞれ0.3ぐらいに設定しましょう。
Unityで利用される長さの単位はUnity unitといい、デフォルトで「1Unity unit = 1メートル」です1。1メートルだと大きいと思うので調整しています。
このTransformの設定だと1辺30cmの立方体が60cm先に出現します。
これで終わりです!お疲れ様でした。
実行結果
iPhoneへのビルド方法は以下の記事を参考にしてください。
3Dオブジェクトとの距離が離れていたり、遮蔽となる物体が大きいとき(扉など)だともうちょっときれいに動作します。
まとめ
AR Foundation単体ではLiDAR搭載iPhoneでないと環境オクルージョンできなかったので困りましたが、これならとても簡単にLiDARなしで実装することができます。他にも便利な機能がたくさんあるので、皆さんぜひ使ってみてください!
参考
Lightshipのドキュメントが2つありますが、私は上のものを主に参考にしていました。なぜ2つあるのか、違いはわかりません...




















