見出し画像

ダンスゲーを作りたい#4 HumanPoseと戦う

前回ボーンのtranceformを直接いじくってもIKに反映されないっていう学びを得ました。

やっぱりIKをきちんと理解して設定する必要がありそうだということが分かったわけです。

そこで、どんなボーンにもIKを設定できるらしいAnimationRigingなるものを使うと前回のたまいましたが、裏で実験したらあえなく完全に失敗。

AnimationClip再生中には何人も手出しできないのかもしれないという前提を置いて再出発することにします。

AnimationClip再生中に動かす

という手段を探した結果、HumanPoseなるものをいじくって再セットするといいという案が最有力っぽいので使ってみます。。

HumanPose概要の理解

Unityにおいては、再生中のヒューマノイドリグにマッスルとかいう概念が割り当てられて、そのパラメータで骨折を防止しながら動いてるみたいです。

このマッスルデータをいじくって再セットすると1フレーム分の体のポーズを好きなようにいじくれるという話だと理解しました。

やってみる

こちらを参考に、一発動かしてみます。

画像1

とりあえず、余計な計算は省いてHumanpose配列のマッスル値をコンソールに出力してみました。

軒並み-1~1の値が並んでますね。

これはどうやら、
マッスル値は-1~1の正規化された値をとるとのことなので、この範囲内が正常なわけです。

しかしながら異常値もちらほらありますね。

これはきっと足のIKがオンになった状態でやったからだろうと思い(そうだとしたら想定してる使い方に致命的な欠陥が生まれるが…)、IKを外してやってみると。。。

画像2

あん?

お前何やってんの??

とは言ってもですよ、これがどこのリグでとかそういう話はまだ未確認なので、範囲外の値を探してどこがどうなるとこういう値が出るのか調べましょう。

範囲外の値は、

26 : -1.41...
27 : -2.13...
35 : -1.40...
38 : -1.11...

の計四つ。ちなみに総数は94で、55以降全部0でした。

ではここは何なんでしょうか。

HumanPoseを調べます。

同記事内に名前出してくれるコードもあるのでそれでコンソールに出してみたところによりますと、

26:左足の上下
27:左足のツイストインアウト
35:右足のツイストインアウト
38:左肩の前後

だそうです。

今回は激しい蹴るモーションだったので、きっと激しく動いてはみ出しちゃったのかな?モーションのせいかな?と、いうことにしておきます。

Motionいじくってみる。

脚に上下があったので、適当に値動かしたらその値を現状に加算して足が上下するか試してみます。

Motionは動きの少ないアイドルにしときます。

画像3

入力値 : マッスル値 で表示してます。 

再生中に値を変更して、値が加算され変更されてることも確認できます。


なんか変わったか?ん?


他のボーンで試してみましょう。

今度は27、左足のツイストインアウトを変更しました。

画像4

間違い探しか?

いっそ全ボーンやってみます。

画像5

あーなんも動かん。

謎は深まるばかりでありんす。

解決するまで、しばらくかかりそうな気すらしますね。ヤッター。

ちょっと考えに行ってきます。またこんど。

この記事が気に入ったらサポートをしてみませんか?