つくるの大好き。

つくるのが大好きな人の記録。

Sony "ToF AR" SDK サンプル紹介 [3] - Hand, Mesh サンプル

前回はToF ARのPointCloud関連およびSegmentationサンプルを紹介しました。

satoshi-maemoto.hatenablog.com

今回は ToF ARで最も強力な機能と思われる、高精度なHand認識機能のサンプルからご紹介してゆきましょう。
ToF ARの手認識精度、凄いです。

Hand

youtu.be

Handシーンは手の認識結果を表示できるサンプルです。

TofArHandコンポーネントの機能

HandデータはTofArHandコンポーネントから取得することができます。少し詳しく見てみましょう。
取得できる情報は下記のとおりです。

  • 手の位置(3D座標)
  • 手の関節位置(3D座標)
  • 手のポーズとジェスチャー
  • 指が平面をタッチしているか

リアカメラ、フロントカメラ共に使用できるので自分以外の人を映す、自撮りで使う、という両方の用途に使うことができます。
ただし手認識を行えるカメラは密度の高いDepthデータが取得できるToFカメラである必要があります。
iOSバイスはフロントにTrueDepthカメラが搭載されていて密度の高いDepthデータが取得できます。
対するAndroidはリアカメラで密度の高いDepthデータが取得できるデバイスは多いもののフロントにToFカメラを搭載しているデバイスは少ないようです。

詳しくはこのリストを見ると、どのカメラでToFデータが取得できるのかわかります。 https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_User_Manual_ja.html#_%E5%90%8C%E6%99%82%E8%B5%B7%E5%8B%95%E5%8F%AF%E8%83%BD%E3%81%AAcolordepth%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%AEid%E3%81%A8%E5%90%91%E3%81%8D

認識できる指関節数は25点。Leap Motionの代わりに使うことができそうです。

https://static.developer.sony.com/develop/tof-ar/development-guides/docs/images/tofar_220315_hand_handindex.png?t=1655898625742

ポーズとは手の瞬間的な形で、今この瞬間ピースサインをしているとか、サムアップしているという情報です。
ジェスチャーとは一定時間内の連続的な手の動きのパターンから識別される動作です。
かなりたくさんの種類が用意されていますね。

Enum PoseIndex

Enum GestureIndex

その他詳しくは下記のページをご覧になってみてください。
https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_Reference_Articles_ja.html#_hand_component

圧巻の認識精度

認識精度についてはもうこの動画にあるように説明不要で圧巻という感じ!
ToF ARを使うだけで手持ちのスマホLeap Motionが搭載されると考えるとお得感がありますね〜。

youtu.be

そしてこのToF ARの高精度なHand認識機能は「バーチャルシンデレラプロジェクト」の配信でも使われてゆくようです。 virtual-cinderella.jp

B向けの領域でも簡単即座に人の所作を記録して再現することができるので、職人さんの技能伝承であったり3Dマニュアル作成などでも使えそうですね!

Live Mesh Occlusion

youtu.be

Live Mesh OcclusionシーンはToFデータからリアルタイムに3D Meshを生成し、それを用いて現実とCGのオクルージョン表示を行うサンプルです。

3D Mesh生成についてはTofArMeshコンポーネントからMeshの頂点データを取得でき、DynamicMesh Prefabが表示を行なってくれるため難しい処理を自分で書く必要な無さそうです。
そして3D Meshなので影を作る、影を受けることもできリアルなAR表現に役立ちますね。

https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_Reference_Articles_ja.html#_mesh_component

オクルージョン表示というともう7年も前ですが趣味で積極的に作っていて、当時はKINECT V2を使って色々とデモ動画を出していました。

youtu.be

これは3D Mesh化は行なっていないのですが、ShaderでToFデータの深度情報とCGのZ-Buffer値を比較し、Color映像と合成することで低い処理負荷でぬるぬる表示ができていたのが特徴です。
詳しい方にはこれは凄いとかなりの高評価を頂くことができましたね。
反面、一般の方から見ると 「自然な表示になった → 不具合が直って当たり前の表示になった」 くらいの印象だったのが面白いというか残念でしたね(笑)
しかし裏を返すとオクルージョンの無いAR表示は一般の方にとって不具合レベルであるということでもあります。
オクルージョン重要ですね〜。

Color Hand Occlusion

youtu.be

Color Hand Occlusionシーンは手の周辺だけリアルタイムオクルージョン表示を行うサンプルです。
Handシーンの機能とLive Mesh Occlusionシーンの機能を組み合わせたものになります。

これはどんな応用ができるかな。。
手だけが見えるリアルタイム仮想背景表示ができるので、手話ビデオを作ったり指人形劇の配信などできるかな(発想力の貧しさ)

まとめ

今回はToF ARの最も特徴的な機能であるHand認識機能を軸にご紹介しました。
手持ちのスマホが即座に高い認識精度のモーションキャプチャバイスになり、スマホなのでそのままネットワークに配信できる、ということを活かすと新しい面白いものが実現できそうですね!