LiDARスキャナを搭載したiPad Pro 2020の発売に合わせて、ARKit3.5が発表になりました。ほぼ同時にリリースされたAR Foundation 4.0も含めていろいろ触ってみたので、基本的な部分を紹介します。
LiDARとは
「light detection and ranging(光による検知と測距)」の略だそうです。
LiDARという用語自体は自動運転車で障害物を検出するセンサとしてよく使われている印象。自動運転で使われるものは、高精度で測定距離も長く、もっと高額ですね。
赤外線などのレーザー光を飛ばして、物体を三次元的に検出する仕組みはGoogleのTangoで使われていたToF(Time of Flight)センサと同じです。
iPad Proに搭載されているLiDARの性能
公式な仕様の記載が見つからず、ニュース記事や実機で試しての数字ですが、検出できる距離は5m程度です。
これもTango対応スマートフォンに搭載されていたセンサと同程度のスペックです。
ARKit3.5について
何ができるのかは、Appleが公開している記事を読むのが手取り早いでしょう。
ARKit - Augmented Reality - Apple Developer
冒頭の説明に、
ARKit 3.5 uses the new LiDAR Scanner and depth-sensing system on iPad Pro to make AR experiences more realistic than ever before.
と書かれている通り、ARKit3.5ではLiDARスキャナを前提とした機能アップデートが行われています。
現状では、iPad Pro 2020を購入した人でないと体験・開発ができません。
とはいえ、ARKit3.5として公開された以上、次期iPhoneや噂のARグラスにもLiDARが搭載される可能性が高く、今後に向けての布石と思われます。
少し話が逸れましたが、先程の記事を参照すると3つのトピックが紹介されています。
- Scene Geometry
- Instant AR
- Improved Motion Capture and People Occlusion
それぞれ、実際に試した内容を交えて紹介します。
Scene Geometry
ARKit3.5ではLiDARスキャナを活用することで、周囲の空間の3Dメッシュを生成することができます。Tangoにも同等のメッシュ構成機能がありましたが、ARCoreより先にARKitで復活した形です。
LiDARスキャナの測定範囲内(5m先まで)を瞬時に検知してメッシュを構成します。
詳細およびデモアプリはこちらから。
Apple Developer Documentation
Swiftのサンプル動かしてみました。
— jyuko🐼 (@jyuko49) 2020年3月26日
ちゃんとメッシュにラベルも付いてる。 pic.twitter.com/biiyYem9UT
特筆すべきは、検知したメッシュにラベルが付けられているという点です。
ARKit3.5で利用できるラベルには以下があります。
- Floor(床)
- Wall(壁)
- Ceiling(天井)
- Table(机)
- Seat(椅子)
- Door(ドア)
- Window(窓)
- Node(ラベルなし、その他)
このメッシュ構成と分類(Classification)がARKit3.5の唯一の新機能であり、アイデア次第で様々なARに使える非常に楽しいアップデートです。
詳細はAR Foundatuon 4.0のところで再度触れます。
Instant AR
これは特段新しい機能という訳ではなく、従来のARKitでも対応していた平面検知やHittestで内部的にLiDARスキャナが使われるようになり、対応デバイスでは反応が速くなるということです。
文字にすると地味ですが、実際に体験すると感動する速さです。
はやーい! pic.twitter.com/2bQR7tDmhK
— jyuko🐼 (@jyuko49) 2020年3月25日
比較用
— jyuko🐼 (@jyuko49) 2020年3月25日
iPhone 11 pic.twitter.com/j9T0icRNzS
LiDARスキャナに対応したデバイスをiOS13.4にアップデートすれば、アプリ側は特に実装を変更しなくても検知の速度が上がります。
ほとんどの場合で従来よりも体験の質が上がるはずですが、平面検知の反応が良すぎてマイナスに働くケースも稀にあるかもしれません。
Improved Motion Capture and People Occlusion
最後にモーションキャプチャとピープルオクルージョンの性能向上です。こちらもLiDARスキャナを利用することで、アプリを変更しなくても精度がよくなります。
モーションキャプチャ
iPad Proの実機で試してみましたが、依然として横向きや後ろ向きの検出に弱く、手や足の交差も破綻しやすいです。
動画は撮り忘れました。すいません。
明らかな差異としては、画像、動画、イラスト、フィギュアといった「人物が映っている or 人物を模している物」の検知がしにくくなりました。
こういうやつです。
Body Tracking pic.twitter.com/bJS6s4jVpF
— jyuko🐼 (@jyuko49) 2019年10月1日
厳密には人ではないので、誤検知が減ったと言われればそうなんですが、それはそれで面白かっただけにちょっと残念。
そういうイレギュラーな使い方を考えていた人がもしいれば、再考が必要でしょう。
ピープルオクルージョン
精度が良くなったとのことですが、ピープルオクルージョンに関しては元々かなり精度が出ていたんですよね。
以下はARKit3.5にアップデート前のiPhone 11の画像です。
最高画質に設定したときの境界キレイ✨
— jyuko🐼 (@jyuko49) 2020年2月11日
これ今すぐアプデすべきでは?#ARFaundation pic.twitter.com/5ZmKbHr0wv
で、こちらがiPad Proのデモ。
iPad Proのピープルオクルージョン pic.twitter.com/E5pgewAiRF
— jyuko🐼 (@jyuko49) 2020年3月30日
違いはわかりにくい。
AR Foundation 4.0について
ARKit3.5が発表されてすぐに4.0.0のpreview版が公開されていました。ARKitに関してはAppleとUnityの連携が取れているのでありがたいです。
About AR Foundation | AR Foundation | 4.0.12
サポートプラットフォームの拡充
AR Foundation 4.0はARKit3.5にとっても重要なんですが、もっと大事なアップデートが、Magic Leap XR PluginとWindows XR PluginがAR Foundationに統合されたことです。
これで、
- ARKit(iPhone、iPad)
- ARCore(Android)
- Magic Leap
- Microsoft HoloLens
の開発が(機能の差異はあれど)AR Foundationでできることになります。
元々、AR FoundationはモバイルARに限らず、様々なARデバイスを今後サポートすると明言してたんですよね。Appleやfacebookで発売が噂されているARグラスもサポートされていく可能性が高く、UnityでARやるならAR Foundation一択になっていくんじゃないでしょうか。
AR Foundationは簡単に使えるのですが、マニュアルやチュートリアルが不足気味なので初心者向けの技術同人誌書いてます。参考にしてもらえるとうれしいです(宣伝)
ARKit3.5対応
AR Foundation 4.0.0でのARKit3.5の対応状況について、平面検知、モーションキャプチャ、ピープルオクルージョンの性能向上についてはコードを直さずに…とのことなので、AR Foundationに関係なく反映されています。
となると、関係があるのはScene Geometryなのですが、現状はメッシュを構成する機能が見当たりません(探し方が悪かったらすまん)
ただし、平面検知で検知した平面を分類する拡張がARPlaneに対して行われています。
こちらはAR Foundation Samplesにも実装されており、PlaneClassificationが該当のサンプルです。
サンプルをiPad Proの実機で動かすと、このような結果になります。
AR FoundationにSampleあるじゃん!
— jyuko🐼 (@jyuko49) 2020年3月25日
精度面は要検討だけどおもしろい! https://t.co/Qh2NuWgyvW pic.twitter.com/KMJRUzYbMh
平面の分類は機械学習で行っているように見え、LiDARなしでも動作するかと思ったのですが、iPhone 11(iOS 13.4)では全ての平面がNone
になりました。
このPlaneClassificationはなかなかに面白く、使い方次第でAR表現がワンランクアップすると考えています。
PlaneClassificationを活用した実装
平面を区別できるということは、ラベルに合わせてインタラクションを変えることができ、ARが不自然な表現にならないような制約を設けることができます。
例えば、デジタルポスターをARで表示するとします。
ポスターを壁、天井、ドアに貼っても違和感はないですが、床、机、椅子、窓に貼る人はいないんじゃないでしょうか?
別の例として、食べ物をARで表示するとします。普通、机の上に置きますよね?
じゃあ、家具は? 壁を背にして床に置くケースが多いんじゃないでしょうか。
このように特定の平面だけに作用するアクションをスクリプトで実装してあげることで色々な実装ができます。
天井だけARで向こう側が見えるようにするデモです。仕組みは壁や床に穴を開けるARの窓枠シェーダーと一緒です。
天井ぶち抜きARできた。
— jyuko🐼 (@jyuko49) 2020年3月28日
かなり力技だけど。 pic.twitter.com/orLd6rcgt5
従来だと床や机の水平面に反応させずに天井だけきれいに抜くことは難しかったのですが、ARKit3.5なら簡単に実装できます。
もう1パターン、キャラクターが椅子に座るデモです。キャラクターを立たせる位置は床(Floor)に限定して、椅子(Seat)をタップしたら移動して座ります。
モーション都合によりダイナミック着席AR💺
— jyuko🐼 (@jyuko49) 2020年3月29日
リアル頭身の @Query_chan を使わせてもらうのは久しぶり🍊 pic.twitter.com/EylUjkfrZo
椅子(Seat)はちょっと特殊なラベルで、座面は水平面、背もたれは垂直面として検出ができます。これを上手く使うことで背もたれの向きに合わせて座るように実装しています。
椅子の向き変えてもう一度。
— jyuko🐼 (@jyuko49) 2020年3月29日
大丈夫そうですね。 pic.twitter.com/2AIhlZX4DY
こんな感じで、
- 配置するARオブジェクトの種類(キャラクター、家具、ポスター、食べ物、etc...)
- 検知した平面のラベル(床、壁、天井、机、椅子、ドア、窓)
- 検知した平面の周囲にある平面(床、壁、天井、机、椅子、ドア、窓)
の組み合わせでルールを作っていくと、まだまだ面白い使い方ができそうです。
まとめ
ArKit3.5、AR Foundation 4.0は、現時点ではLiDARスキャナを搭載したiPad Pro 2020限定の機能となっていますが、空間を3Dメッシュとして構成する機能(Scene Geometry)や平面の分類(PlaneClassification)にはAR表現を大きく発展させる可能性があり、GoogleのTangoがサポート終了になった今、AppleがLiDARスキャナ前提のアップデートを行った意味はとてつもなく大きいです。
先に述べた通り、LiDARスキャナを前提としたARKit3.5は次期iPhoneやARグラスへの布石とも考えられるため、先行して開発していくメリットは大きいと思っています。
購入を迷っている方は是非、iPad Pro 2020を入手して試してみてください。