スムージングフィルタの設定
処理の概説
体の動きに対しては、下記の順番で情報を処理します。
- ユーザーの各関節のカメラ画像中での2次元位置をAIで推定
- ユーザーの各関節のカメラ画像中での2次元位置に対してスムージングフィルタを適用(トラッキング位置欄)
- ユーザーの各関節の3次元位置を視差に基づいて推定
- ユーザーの各関節の3次元位置を基にキャラクターの各関節の向きを推定
- キャラクターの各関節の向きに対して1€フィルタフィルタを適用(ボーンの回転欄)
- キャラクターの表情の変化とルート位置の変化に対して1€フィルタフィルタを適用(その他欄)
1€フィルタとは
1€フィルタは、速度に比例してカットオフ周波数が増加するローパスフィルタです。
低速度時は通常のローパスフィルタのようにジッターノイズを抑制し、高速度時はカットオフ周波数が増加することで素早い動きに追随することができます。
上記「2」におけるスムージングフィルタは、1€フィルタをベースとしつつ、AIの推定の信頼度に依存する係数を織り込んだものです。
フィルタパラメータの調整方法
フィルタで調整可能なパラメータは、下記の通りです。
- AIによる推定の信頼度の影響度合い
- 通常の1€フィルタのパラメータ
- 最小カットオフ周波数
f
- カットオフ周波数の増加率
β
- 速度のカットオフ周波数
fv
- 最小カットオフ周波数
AIによる推定の信頼度の影響度合い
信頼度冪指数
の値を大きくすると、関節が他の部位に隠されたときや関節が画面外に出てしまったときのノイズを抑制することができます。
- 頭、肩、肘: 手によって隠されたときに、頭・肩・肘の位置のノイズが十分小さくなるよう値を大きくします。
- 手: 手が画面外に出たときに、手の位置のノイズが十分小さくなるよう値を大きくします。
- 腰: 腰は通常画面外にあるため、「3」程度の大きな値を設定します。
通常の1€フィルタのパラメータ
- 最小カットオフ周波数
f
: 静止した状態でノイズが気にならなくなるまで、この値を小さくします。 - カットオフ周波数の増加率
β
: 体を動かしたときに動きへの遅延が気にならなくなるまで、この値を大きくします。