自己位置推定(Relocalization)のコンセプト
AR 体験を共有するためには、トラッキング、マッピング、自己位置推定(Relocalization)という 3 つのコンセプトを理解する必要があります。
トラッキングとマッピング
スマートフォンのようなデバイスを未知の環境に置いて、3D コンテンツをオーバーレイさせる場合、2 つのことを明らかにする必要があります。
- 自分はどこにいるのか?
- まわりには何があるのか?
この 2 つを明らかにするためには、デバイスと環境中のアイテムとの相対的な位置関係を見つける必要があります。そのためには、デバイスのトラッキングと環境のマッピングを同時に行います。
- トラッキング:カメラフレーム間の差を分析することで、デバイスの動きを理解し、軌道を構築します。
- マッピング:カメラフレームの中から特徴的なポイントを見つけ、その位置を 3D で三角測量することで、環境の空間構造を再現することができます。
自己位置推定(Relocalization)
AR アプリケーションで任意の 3D コンテンツを表示するには、トラッキングとマッピングの処理だけで十分です。しかし、仮想コンテンツの 3 次元位置を保存し、AR アプリケーションを再起動して、同じ位置にコンテンツを表示しようとすると、すべてのオブジェクトが移動したように見えてしまいます。
これは、AR アプリケーションを再起動すると、座標系が変わってしまうからです。localization やマッピングでは、セッションごとに異なる任意の原点を持つ座標系が作成されます。
では、3D オブジェクトが同じ位置に留まるように、一貫した座標系を作るにはどうすればいいのでしょうか?
あらかじめ環境をスキャンしておけば、カメラ画像を解析して、その画像の特徴点を既存のスキャンと一致させるという自己位置推定処理を行うことができます。この処理を行うことで、環境に対するデバイスの位置が得られます。この情報と、シェアードアンカー(Shared Anchors)と呼ばれる概念を利用することで、同じ環境下で同じ座標系を復元することができます(詳しくはシェアードアンカー(Shared Anchor) をご覧ください)。
AR セッション間で座標系が一貫していれば、仮想オブジェクトの位置を保存し、持続的な AR 体験を可能にすることができます。
同様に、複数のユーザーが同じ AR コンテンツを同時に見る場合には、座標系を同期させる必要があります。
すべてのユーザーに同じ再配置プロセスを適用することで、仮想シーンを同期させ、共有された AR 体験を実現することができます。