【Niantic Lightship ARDKをつかってみよう!】 初級編1: ARDKってなに?
1:はじめに
こんにちは!デザイニウムの佐久間(@ppengotsu) です。
この記事は、Niantic Lightship ARDKとその制作事例を解説する連載記事(全6回)の第一回目です。Unityでスマホ向けにビルドしたことがある方なら、すぐにARDKを使うことができる内容となっています。
第一回: 初級編1: ARDKってなに?※本記事
第二回: 初級編2: ARDKで簡単なアプリをつくってみよう!
第三回: 中級編1: ARDKでマルチプレイゲームをつくってみよう!#1
第四回: 中級編2: ARDKでマルチプレイゲームをつくってみよう!#2
第五回: 中級編3: ARDKでマルチプレイゲームをつくってみよう#3(後日公開)
第六回: 中級編4: ARDKでマルチプレイゲームをつくってみよう#4(後日公開)
第一回となる本記事では、ARDKについて説明します。
ARDKがどんなものか、どんな特徴があるのか理解していただけると思います。
2:ARDKとは?
ARDKとは、Niantic社のLightshipプロジェクトのARDK(Augmented Reality Developer Kit)です。
ARアプリを制作するときにつかうライブラリの1つといえます。Unityでスマホ用のARアプリを作るときにARFoundationを使うことがあるとおもいますが、そのARFoundationと同じようにARアプリとしての機能を提供してくれるものです。
※本記事は、2021/12/15時点でダウンロード可能なARDKv1.0.1をベースに書いています。
2-1:料金
基本無料でつかうことができます。
2022年3月からは、マルチ通信を一定量以上するとお金がかかるようです。
(※2021/12時点)
引用:https://storage.googleapis.com/nianticweb-media/lightship/lightship-pricing.png
3:ARDKの特徴
ARDKには、ARFoundation同様にARアプリを作るときに必要な機能が実装されています。ARアプリに必須であるカメラの位置を計算してくれる機能なども、もちろんあります。
ここでは、ARFoundationと異なる部分に焦点を当てて説明していきます。
3-1:対応端末
iOS,Android両方のOSに対応しています。
ARDKが安定して基本機能が動くOS、端末をまとめると下の表のようになります。
対応OS、端末について3つの注意点があります。
1.ARDKの機能によって、OSバージョン、端末要件が異なる
※詳しくは、公式ページをご覧ください。
2.Portraitモードのみサポートしている。Landscapeはサポートされていない。
3.iPadは対応していない。
3-2:メッシュ機能
現実空間を読み取り、3Dメッシュを生成する機能です。
公式ドキュメント:meshing
https://lightship.dev/docs/meshing.html
他のARライブラリもメッシュ機能はありますが、ARDKは対応機種の広さに特徴があります。
メッシュ機能が動くOS、端末条件は以下です。
上記の表を見てもらうとわかるのですが、LiDARが必須条件ではありません。もう1度、先程のiPhone12Pro, iPhoneXSで動作している動画をみてください。
LiDARが搭載されていないiPhoneXSでもメッシュ生成されていることが確認できると思います。少し古い端末でも動作するため、サービスの対象を広げることができます。
メッシュ機能を使うことも簡単です。ARMeshのPrefabをシーンにいれるだけで動きます。
動画の各端末の左下で表示しているものは、深度推定管理するARDepthManagerクラスのGPUDepthから簡易的に取得した深度テクスチャです。深度情報を本格的に使う場合は、公式ドキュメントを参照してください。
公式ドキュメント : depth
https://lightship.dev/docs/depth_overview.html
3-3:マルチ機能
複数端末で同じAR体験を行える機能です。
↑デザイニウムMattによるARDK使用例
公式ドキュメント:multiplayer
https://lightship.dev/docs/multiplayer_experience.html
上記動画でも他のプレイヤーの端末から炎が出ていることが確認できるかと思います。ARDKのマルチ機能には、特徴が2つあります。
3-3-1:対応OS
ARDKのマルチ機能は、iOS,Android両方に対応しています。
・iOS⇔iOS
・Android⇔Android
・iOS⇔Android
どの組み合わせでもマルチ機能が動作します。
3-3-2:サーバ
ARDKのマルチ通信では、Niantic Lightshipが保守しているサーバを使うことで実現されています。開発者が独自にサーバを借りる必要はありません。
以上2つの特徴のおかげで、開発者が少ない開発環境でもネットワークをつかったマルチ通信ゲームを作ることが比較的容易にできます。
もちろん通信ですので、下記のような通信制限があります。
・特定の端末または、ブロードキャストでメッセージ飛ばす場合、1メッセージ10MBまで
・1セッションあたり5端末以下推奨
・1セッション5分まで
詳細は、以下を参照ください。
公式ドキュメント:low_level_networking
https://lightship.dev/docs/low_level_networking_gotchas.html
中級編では、実際にマルチ通信をつかったゲームを作成するのでよかったら読んでみてください。
3-4:セマンティックセグメンテーション機能
カメラ映像のうち、どこが空や地面などかか区別できる機能です。
↑デザイニウムMaoによるARDK使用例
公式ドキュメント:semantics
https://lightship.dev/docs/semantics.html
区別できるものを一覧にしてみました。
sky設定を試してみました。
ドラゴンが建物の奥にいるように見えることが確認できるかと思います。
これを実現するための設定は簡単です。カメラのオブジェクトに、
”ARSemanticSegmentationManager” 、”ARDepthManager” を追加し、下記画像のように設定を行うだけです。
飛んでいるドラゴンのオブジェクトに、セマンティックセグメンテーション用の設定はしていません。標準のシェーダ(URPのLit)を使用しています。
4:おわりに
いかがだったでしょうか?なんとなくARDKのことについて分かってもらえたのではないでしょうか。私個人としては、マルチ通信がARDKの中に含まれていることが衝撃でした。マルチ通信を別ライブラリをつかってとりあえず動くまでするだけでも大変ですからね。
次回は、ARDKを使ったシンプルなアプリをつくっていきます。ARDKのセットアップからはじめるので、これから試したいと思っている人は一緒に読んで頂けると良いかもしれません。
5.編集後記
こんにちは!デザイニウム広報のマリコです。
佐久間が2人に増えた弊社、今回はアフロDJの方ではなくぺペンゴツ佐久間がお送りしました。
以後お見知りおきを😊
さて、Nianticと聞くとIngress → ポケモンGO →ピクミンと渡り歩いてきた私としてはワクワクせずにはいられません。いずれもARを世に広めたゲーム🎮✨それらをつくった会社のDeveloper Kitということで、記事でも引用されている社内のR&D動画は毎回ワクワクせずにいられないものばかりです❗ぜひ次回の記事もお楽しみに😊
第二回は今週(12月第4週)発行の予定です。Twitterでお知らせします!
The Designium
Official website
Twitter (フォローお待ちしてます✨)
Facebook