一方、Kinectセンサ登場したことで以下の動画のようにカラー画像と現実物体上の点の3次元座標の集合(Point Cloud)の同時取得を安価・簡便に行えるようになりました。
そこでPoint Cloudを使用して実物体とCGとの前後関係の判定を行い、矛盾のない表示が可能なARの実現方法の概要を紹介します。
処理手順の概略は下の図に示したとおりです。

(i)Kinectからリアルタイムに取得したPoint Cloudと,提示したい仮想物体をVR空間に配置する.この時,glEnable(GL_DEPTH_TEST);で前後判定を有効にしておきましょう。そうすることで、3次元物体の位置関係や隠れの有無について矛盾の無い表示を得られます.
(A)さらに、PointCloudや背景の色に特定の色を指定して仮想物体が表示されている部分以外をその色で塗りつぶした画像を作成します。ちなみにOpenGLではglReadPixelsという関数を用いれば表示されているものを画像化することが可能です。
続いて、(B)Kinectセンサに搭載されたカメラから風景映像を取得し、(C)これらをクロマキー合成して前後関係に矛盾のないAR表示を行います。
以上の処理を行うことで以下の動画のようにユーザーの手による遮蔽がCGの外観に反映させることができます。
今回は遮蔽感のあるARを自力で実装するための手順について紹介しました。ですがぶっちゃけた話、metaio SDK6.0でその辺はサポートしていたりします。もっと楽をしましょう!
本記事はAR Advent Calendarに登録しました。