Open5

WebARで特徴点群ベースの簡易的なAR Anchorシステムを作ってみたい

にー兄さんにー兄さん

AR Anchorシステムについて考えていた時にふと、
特徴点群同士を位置合わせできればある程度は作れるのでは?って思った

わからん、どうなんだろう

にー兄さんにー兄さん

UnityやネイティブではすでにSharedなアンカーシステムは開発されているため、
できればWebARでやりたい

特徴点群と位置合わせアルゴリズムさえわかればおそらくどういうプラットフォームでも変わらない気もしているので、新規性と得意分野的な意味も込めて

にー兄さんにー兄さん

ちょっと調べた感じ、WebXR Device APIでは特徴点群をそのまま取得できないらしい
ん-ARCoreとかだとそういうの提供されていたような気はするんだけどだめか

Babylon.jsにはFeaturePointSystemというFeatureがあるが、BabylonNativeでのみ使用できる

にー兄さんにー兄さん

フローとしては

アンカー作成

  1. 特徴点群を取得
  2. アンカーポイントの設置
  3. アンカーポイントと一緒に特徴点群を保存してアンカーデータとしてDBへ保存

アンカー解決

  1. 特徴点群を取得
  2. 特徴点群とアンカーの特徴点群をマッチング
  3. 特徴点群の位置合わせ結果からアンカーを配置

って感じかなぁ
フローはシンプルだけどところどころに難所がある

例えば特徴点群はWebARじゃ得られないので
カメラ画像から特徴点を検出してHitTestで点群化する必要があり
それが高速に動くのかは要検証
ORB特徴量とか使えばいい感じだったりするかな

あと特徴点マッチング
3次元点群マッチングと言えばICPがよく聞くけど、これでいいのかな?みたいな

にー兄さんにー兄さん

ん-なんかWebARで特徴点群を取得するのがすごいめんどくさそうだな
HitTestをしまくってAnchorを作り、それを点群とする方法も考えたけど
それは特徴点群ではないよな?とも思う

今考えたのは、カメラ画像に対して2Dの特徴転検出を行い、HitTestを飛ばしてその3次元点を得る方法

そうすれば