Open5
WebARで特徴点群ベースの簡易的なAR Anchorシステムを作ってみたい
AR Anchorシステムについて考えていた時にふと、
特徴点群同士を位置合わせできればある程度は作れるのでは?って思った
わからん、どうなんだろう
UnityやネイティブではすでにSharedなアンカーシステムは開発されているため、
できればWebARでやりたい
特徴点群と位置合わせアルゴリズムさえわかればおそらくどういうプラットフォームでも変わらない気もしているので、新規性と得意分野的な意味も込めて
ちょっと調べた感じ、WebXR Device APIでは特徴点群をそのまま取得できないらしい
ん-ARCoreとかだとそういうの提供されていたような気はするんだけどだめか
Babylon.jsにはFeaturePointSystemというFeatureがあるが、BabylonNativeでのみ使用できる
フローとしては
アンカー作成
- 特徴点群を取得
- アンカーポイントの設置
- アンカーポイントと一緒に特徴点群を保存してアンカーデータとしてDBへ保存
アンカー解決
- 特徴点群を取得
- 特徴点群とアンカーの特徴点群をマッチング
- 特徴点群の位置合わせ結果からアンカーを配置
って感じかなぁ
フローはシンプルだけどところどころに難所がある
例えば特徴点群はWebARじゃ得られないので
カメラ画像から特徴点を検出してHitTestで点群化する必要があり
それが高速に動くのかは要検証
ORB特徴量とか使えばいい感じだったりするかな
あと特徴点マッチング
3次元点群マッチングと言えばICPがよく聞くけど、これでいいのかな?みたいな
ん-なんかWebARで特徴点群を取得するのがすごいめんどくさそうだな
HitTestをしまくってAnchorを作り、それを点群とする方法も考えたけど
それは特徴点群ではないよな?とも思う
今考えたのは、カメラ画像に対して2Dの特徴転検出を行い、HitTestを飛ばしてその3次元点を得る方法
そうすれば