8th WallのHand Trackingの機能から開発のコツまで詳しく解説!

※この度、8th WallのHand Trackingの検証について寄稿いただきました。

先月末に、8th WallからHand Tracking(手認識)の機能がリリースされました。
本記事では、Hand Trackingでできること、体験してみた様子、開発のコツなどを詳しくまとめていきたいと思います!

何ができるのか

8th WallのHand Trackingでは、手のひらのみならず手首までカバーしています。
基本のアタッチメントポイント(=オブジェクトを固定できる位置)は、以下の全36箇所です。

・手首
・手のひら

・小指第三関節
・小指下部(第二関節と第三関節の間)
・小指第二関節
・小指中部(第一関節と第二関節の間)
・小指第一関節
・小指爪
・小指先端

・薬指第三関節
・薬指下部(第二関節と第三関節の間)
・薬指第二関節
・薬指中部(第一関節と第二関節の間)
・薬指第一関節
・薬指爪
・薬指先端

・中指第三関節
・中指下部(第二関節と第三関節の間)
・中指第二関節
・中指中部(第一関節と第二関節の間)
・中指第一関節
・中指爪
・中指先端

・人差し指第三関節
・人差し指下部(第二関節と第三関節の間)
・人差し指第二関節
・人差し指中部(第一関節と第二関節の間)
・人差し指第一関節
・人差し指爪
・人差し指先端

・拇指球(親指付け根の膨らんだ部分)
・親指第二関節
・親指中部(第一関節と第二関節の間)
・親指第一関節
・親指爪
・親指先端

s9u0Ti6.png (317.2 kB)
(画像は公式サイトより)

アタッチメントポイントは、指の部分に集中しているので、かなり細かい指先の表現に使えそうです。

Attachment Points Blog.webp (122.7 kB)
(画像は公式サイトより)

アダプティブハンドメッシュと呼ばれる手のメッシュを、ユーザーごとに動的に作成します。
そのため、体験するユーザーの手の大きさ問わず、適切な位置にオブジェクトを配置できます
大人から子供まで自然な体験ができますね。

また、公式が提供しているhandReference.glbの頂点インデックスを用いて、独自のアタッチメントポイントを設定することもできます。
800近いポイントがあるので、詳細はドキュメントを参照してください(下図も同ドキュメントより抜粋)。
なお、このモデルはバーチャル試着など、ピッタリ表示したい3Dモデルを作る際の基準として使うのもおすすめです。

Hand Trackingのユースケース

以下のようなユースケースが挙げられています。

  • AR体験のインターフェースとしてハンドトラッキングを使う
    ゲーム、教育などさまざまな場面で、 オブジェクト操作に活用できます。
    没入感が高まりそうです。
  • 手にオブジェクトを重ねてマスキングする
    巨大な手を出したり、ハンドパペットや指人形を表示したりすることができます。
    サザエさんのじゃんけんのような表現ができそうです。
  • 手からエフェクトを出す
    波動拳を出すことも夢ではありません。
  • バーチャル試着する
    時計・ブレスレット・指輪などの、手につけるアクセサリーのバーチャル試着が可能になります。

サンプルを体験してみた

公式の最小構成のサンプルを動かして体験してみました。

Hand Tracking Coaching Overlay

8thWallの出しているさまざまなARと同様、チュートリアル用のコーチングオーバーレイが、Hand Tracking専用で存在しています。
コード1行で、簡単に組み込めてわかりやすいです。

一度手を認識した後でも、手の認識が外れれば、コーチングオーバーレイが再表示されます。

オクルージョンについて

手の部分がかなり綺麗にオクルージョンしました。
ただし、2023年8月現在、マルチハンド対応していないので、両手同時に認識してオブジェクトを表示することはできません

手をくるくるひっくり返しても、手のひらにアタッチしたオブジェクトが、手の甲側に突き抜けてくることがなく、かなりしっかりオクルージョンが効いていると感じました。

Hand Trackingを使ったARを作る時のTips

  • オブジェクトを相当小さく表示する必要があります。というのも、3Dシーンのサイズ=手のサイズになるからです。自分が実装した時には、平面認識でオブジェクトを出していた時の1/10くらいでちょうど良いサイズ感で表示される、と感じました。
  • 顔認識・平面認識・画像認識と同時に動かすことはできません
  • 指輪の試着などで、よりオブジェクの表示にリアリティを持たせたい時は、Z軸に沿ってわずかに前方に回転させ、リングの下の部分が見えないようにすると良いそうです。
  • 手と手首全体がカメラに映っている状態だと、認識精度が高まるので、遊び方の説明などに手の全体を映すように指示を出すことが推奨されています。
  • 手首を傾けると、意図しない動きになることがあります(動画参照)。
  • 横方向の動きは追従しやすいですが、縦方向に手を動かすと、うまく認識しなくなります(動画参照)。

まとめ

実際に触ってみると、Hand Trackingの体験は、予想以上にAR世界への没入感が高いな、と驚きました。
見せ方・体験の工夫次第で、かなり面白いARを作れそうなので、とてもワクワクしています!

実装の際はぜひ、今回まとめたヒントを参考にしてみてくださいね。


執筆者 影織(@kageori_ar)
ARと切り絵を組み合わせた作品を中心に、様々な制作をしています。
ポートフォリオ: https://kageori.pythonanywhere.com/