今やってるARKit+Metal案件のメモ(ARKit 2でオクルージョン)

個々の記事にするほどでもない学びのメモ

ARKitのフェイスジオメトリでオクルージョン

ARKitでオクルージョンというと、まず最初に出てくるのは次のテクニック。

で、これをフェイストラッキングのときにARSCNGeometryを持つノードに適用すると、顔領域(頭部ですらない)しかオクルージョンしないのでとても変な感じになる。

じゃあデプスを使うか、ということになるわけだが、

ARKitのデプスを実用する

ARKitのデプス、まともにつかおうとすると想像以上にめんどくさい。当然オクルージョンに使うわけだが、たぶん一般的には「人」(フェイストラッキングモードでいうと頭部〜肩ぐらい)をオクルージョンしたい、というのが要件になると思う。

で、デプスの閾値をどう決めるかだが、一番簡単なのは0.7とかの大きめの固定値を閾値にすること。(デプスの場合は値が大きいほど奥にあることを意味する)

しかしこれだとすぐ後ろに壁とかオブジェクトがある場合にうまくいかない場合もある。

じゃあARSCNFaceGeometryを使って、顔のある位置のデプス値を採取してそれを基準に閾値を決めよう、と思ったわけだが、

この座標(ワールド座標)をスクリーン座標に変換してデプスマップの当該座標のピクセル値を取ろうとしたのだが、

ここから先は

1,170字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/