[iOS 17] iOSでLiDAR利用の3Dオブジェクトスキャンが可能に #WWDC23
iOSにおける3DオブジェクトスキャンAPIの歴史
ARKitではだいぶ前から3Dオブジェクトスキャンが可能だったが、しかし出来がかなり中途半端で、この機能でまともな3Dモデルを得ることは事実上不可能だった。
ARKitの3Dオブジェクト検出は、肝心のスキャン側が中途半端なので、まともに使えないし、デプス使わずにこの機能は苦しいと思う(今のところスキャン時の設置場所に縛られてる)。ARKit 2.5ではARObjectScanningConfigurationだけでもデプス使うようになったらいいなぁ
— Shuichi Tsutsumi (@shu223) September 23, 2018
その後月日は流れ、iPhone/iPadにLiDARが搭載され、macOSではフォトグラメトリも標準APIで可能になった、というタイミングで調査してみたが、
3年経ち、ARKitもどんどん進化し、デプス周りのAPIもかなり充実し、iPhone/iPadにはLiDARまで搭載された。macOS Montereyではフォトグラメトリも可能になった。MLはアルゴリズム面でもハード面でも大幅に進化した。
さすがにそろそろ3D Object Detection/Scanも改善されているのではないか。
結論、何も変わっていなかった…
iOS 17でのアップデート
WWDC23のセッション「Meet Object Capture for iOS」によると、ついにiOS向けの3Dオブジェクトスキャン(キャプチャー)周りが刷新されたようだ。
ARKitの従来のAPIのアップデートではなく、RealityKitに `ObjectCaptureSession` というクラスが追加された。またオブジェクトキャプチャー用のSwiftUI向けのビューとして `ObjectCaptureView` も追加されている。
これにより、次のようなインターフェースの3D物体キャプチャー機能の実装が可能となる。

スクショだとあまりARKit 2の頃のサンプルとあまり変わらない印象を受けるかもしれないが、内部的な処理も、標準で用意されているガイドUIも相当良さそうだ(後述する)
また2021年に発表されたObject Captureは、macOSで3Dモデルを生成するものだったが、
今回、このキャプチャーしたデータからのモデル再構築(Model Reconstruction)もiOSデバイス上で行えるようになった。
つまり撮影からモデル生成まですべてiOSアプリ内で完結するようになった。
LiDAR利用
今回追加されたObject Capture APIは、iPhone 12 Pro、iPad Pro 2021、およびそれ以降のモデルで利用可能、とのこと。
Object Capture is available on iPhone 12 Pro, iPad Pro 2021, and the later models.
つまり、LiDAR搭載端末に限定されている。
このLiDAR利用により、テクスチャの少ないオブジェクトもキャプチャー可能になった。


なお、反射するオブジェクト、透明なオブジェクト、非常に薄い構造を持つオブジェクトは避けた方がよい、とのこと。

Guided capture
3Dオブジェクトスキャンを自分でやってみるとわかるのだけど、結構コツがいる。適切な撮影間隔で、対象物と一定の距離を保ち、対象物を常に画角の中心に収め続け、角度を変えながら撮影する際に影になったりしないように照明にも気を遣わないといけない。
この問題を緩和してくれるのが "Guided capture" (ガイド付きキャプチャ)という機能。
Automatic Capture
ガイド付きキャプチャにより、データキャプチャーの際に、手動で良いビューアングルを選びシャッターボタンを押す作業が自動化される。

対象物の周りを一周すると、シャープネス、鮮明度、露出に優れた画像ショットが自動的に選択され、さまざまなビューアングルからLiDARポイントが収集される。
「キャプチャダイヤル」と呼ばれるUI(スクショ下部にあるやつ)により、オブジェクトのどの部分に十分な画像があるかが示される。ユーザーは、これがいっぱいになるようにいろんな角度から撮影すればよい。
Capture feedback
ここから先は

#WWDC23 の勉強メモ
WWDC 2023やiOS 17についてセッションやサンプルを見つつ勉強したことを記事にしていくマガジンです。また昨年キャッチアップをお休…
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/
