今やってるARKit+Metal案件のメモ(ARKit 2でオクルージョン)
個々の記事にするほどでもない学びのメモ
ARKitのフェイスジオメトリでオクルージョン
ARKitでオクルージョンというと、まず最初に出てくるのは次のテクニック。
で、これをフェイストラッキングのときにARSCNGeometryを持つノードに適用すると、顔領域(頭部ですらない)しかオクルージョンしないのでとても変な感じになる。
じゃあデプスを使うか、ということになるわけだが、
ARKitのデプスを実用する
ARKitのデプス、まともにつかおうとすると想像以上にめんどくさい。当然オクルージョンに使うわけだが、たぶん一般的には「人」(フェイストラッキングモードでいうと頭部〜肩ぐらい)をオクルージョンしたい、というのが要件になると思う。
で、デプスの閾値をどう決めるかだが、一番簡単なのは0.7とかの大きめの固定値を閾値にすること。(デプスの場合は値が大きいほど奥にあることを意味する)
しかしこれだとすぐ後ろに壁とかオブジェクトがある場合にうまくいかない場合もある。
じゃあARSCNFaceGeometryを使って、顔のある位置のデプス値を採取してそれを基準に閾値を決めよう、と思ったわけだが、
この座標(ワールド座標)をスクリーン座標に変換してデプスマップの当該座標のピクセル値を取ろうとしたのだが、
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/