1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのアドベントカレンダーAdvent Calendar 2024

Day 17

【Unity 2022 + AR Foundation + Lightship】LiDARなしのiPhoneでEnvironment Occlusionをする方法

Last updated at Posted at 2024-12-03

はじめに

 こんにちは。
 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の準備

上のリンクからアカウントを作成します。

E3DD25F5-ECB7-482C-9FD2-6A2281ED12F7.jpg
D0321950-8DF8-4236-9D12-CA72A6C439F4.jpg

アカウントの登録ができたらダッシュボードに入るので、プロジェクトの作成に進みます。

CAEA84BE-0881-46A9-BC73-5E2DECD6CFD5.jpg
6D2A0896-E462-4457-89E5-7134F550B5F4.jpg

プロジェクトを作成したら、(お好みでプロジェクトの名前を設定してもよいです)API Keyをコピーします。

3B595DB0-77A9-498A-9C90-2B58201C3693.jpg

Unityプロジェクトの作成

Unity Hubからプロジェクトを作成してください。このとき使用するエディターのバージョンは公式で以下のように明言されています。

Unity 2022 LTS(2022.3.37f1)と2021 LTS(2021.3.37f1)をサポートしています。

筆者の環境で全く同じバージョンでなくても2022.3.53f1で動作しているので2021や2022のLTSを使っておけば大丈夫でしょう。(だめだったらごめんなさい)

CleanShot 2024-12-03 at 00.18.11@2x.png

パッケージインストール

AR開発に必要なパッケージをインストールしていきます。
まず、ARパッケージをまとめてインストールしてしまいましょう。

CleanShot 2024-12-03 at 00.33.57@2x.png

エディターの再起動の指示があったら、そのまま再起動してください。
再起動したら、もう一度Package Managerを開いて、以下のGit URLからパッケージを追加してください。

https://github.com/niantic-lightship/ardk-upm.git

CleanShot 2024-12-03 at 00.37.19@2x.png
CleanShot 2024-12-03 at 00.37.34@2x.png

プロジェクト設定

Edit > Project SettingsからProject Settingsを開きます。
XR Plug-in Managementで以下のように操作してください。

CleanShot 2024-12-03 at 00.43.33@2x.png
CleanShot 2024-12-03 at 00.43.37@2x.png

Niantic Lightship SDKの設定に移ります。
API Keyに先程のAPI Keyをペーストしてください。

CleanShot 2024-12-03 at 00.46.55@2x.png

Project Validationを確認するといくつか問題が発生してようですがFix Allを押すと解決します。

CleanShot 2024-12-03 at 00.49.10@2x.png

画像ではiOSのみ確認していますが念の為他のタブも確認していおいたほうが良いでしょう。
以上でLightship SKDの設定は完了です。

ビルド設定

皆さんの環境に合わせてビルド設定を行いましょう。ここではiOS向けのビルド設定をしておきます。
iOSにSwitch Platformをした後、Player Settingsへ。

CleanShot 2024-12-03 at 00.51.35@2x.png
Requires ARKit supportにチェック。
CleanShot 2024-12-03 at 00.52.49@2x.png

プロジェクト名がTestARなど普遍的なものの場合はBundle Identifierも変えておきましょう。

Bundle Identifierは全世界で重複できません。そのためプロジェクトで固有の値を設定する必要があります。UnityにおけるBundle Identifierの設定方法は他にもありますがここでは詳しくは触れません。

CleanShot 2024-12-03 at 00.54.40@2x.png

これでビルド設定も完了です。

Sceneの準備

いよいよARを実現するSceneを作っていきます。
まず、ヒエラルキーからMain Cameraを削除してください。

CleanShot 2024-12-03 at 00.55.49@2x.png

続いて、ヒエラルキー上で右クリックしXRの中にあるAR SessionXR Origin(Mobile AR)を追加してください。

CleanShot 2024-12-03 at 00.56.22@2x.png

ヒエラルキーからXR Origin > Camera Offset > Main CameraLightship Occlusion Extensionコンポーネントを追加してください。AR Occlusion ManagerLightship Occlusion Extensionが追加されます。

BA0B85BC-6142-4F7D-A328-A78B4AF77381.jpg

XR Originの子として3D Object > Cubeを追加して、TransformからPositionを少しずらして、Scaleをそれぞれ0.3ぐらいに設定しましょう。

Unityで利用される長さの単位はUnity unitといい、デフォルトで「1Unity unit = 1メートル」です1。1メートルだと大きいと思うので調整しています。
このTransformの設定だと1辺30cmの立方体が60cm先に出現します。

CleanShot 2024-12-03 at 17.02.29@2x.png

これで終わりです!お疲れ様でした。

実行結果

iPhoneへのビルド方法は以下の記事を参考にしてください。

窮屈な部屋ですが、実行するとこんな感じです↓
abScreenRecording_12-03-2024 18-20-52_1.gif

3Dオブジェクトとの距離が離れていたり、遮蔽となる物体が大きいとき(扉など)だともうちょっときれいに動作します。

まとめ

AR Foundation単体ではLiDAR搭載iPhoneでないと環境オクルージョンできなかったので困りましたが、これならとても簡単にLiDARなしで実装することができます。他にも便利な機能がたくさんあるので、皆さんぜひ使ってみてください!

参考

Lightshipのドキュメントが2つありますが、私は上のものを主に参考にしていました。なぜ2つあるのか、違いはわかりません...

  1. https://qiita.com/RyotaMurohoshi/items/432e6ad6b58b81af3c95

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?