すくすくクワット VR(スクワットのカウントと VRM モデルの適用)
スクワット回数をカウントするあたりを実装します。
スクワットのカウント
Unity Registry の OpenXR Plugin を使っていましたが、追加で XR Interaction Toolkit をインストールしました。
↓参考にしたサイト
https://tech.framesynthesis.co.jp/unity/xr/
https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.5/manual/features/oculusquest.html
データの保存と再生
まず最初に、VR のヘッドセットと両手のコントローラの位置と角度を保存して再生できる仕組みを実装しました。
↓記録データを早送り再生したもの
次に、ヘッドセットの高さ情報が大きく変動しないときの最大値を基準高さとして、それを使ってスクワットしてるかどうかを計算しています。
そして、スクワット状態を「立ち」「屈み」「中間」の3つで定義したときに
立ち → 中間 → 屈み → 中間 → 立ち
と遷移するものとして中間から立ちに遷移するときにスクワット回数がカウントされるようにしました。
↓コードの抜粋
↓検出したスクワット回数を表示したもの
この評価に使った記録データでは途中に何度かジャンプしているのですが、そのジャンプがスクワットにカウントされてないのがわかります。よいです。
座った椅子から立つ動作はスクワットとしてカウントされていますが、これはよいことにします。
VRM モデルの適用
↓VRoid Studio の VRM モデルと Final IK アセットでモデルを表示してみました。
よいです。
マルチプレイを実現したときに他人に VRM モデルを割り振れるようにしようとは思っているのですが、どうなるかは今後の開発次第です。
まとめと今後の予定
とりあえず、スクワットがカウントできるようになったので大変よいです。
次回は、マルチプレイのサンプルを動作させるか、スクワットで樹木がすくすく育つあたりをどうするか考えます。がんばります。