ダンスゲーを作りたい#4 HumanPoseと戦う
前回ボーンのtranceformを直接いじくってもIKに反映されないっていう学びを得ました。
やっぱりIKをきちんと理解して設定する必要がありそうだということが分かったわけです。
そこで、どんなボーンにもIKを設定できるらしいAnimationRigingなるものを使うと前回のたまいましたが、裏で実験したらあえなく完全に失敗。
AnimationClip再生中には何人も手出しできないのかもしれないという前提を置いて再出発することにします。
AnimationClip再生中に動かす
という手段を探した結果、HumanPoseなるものをいじくって再セットするといいという案が最有力っぽいので使ってみます。。
HumanPose概要の理解
Unityにおいては、再生中のヒューマノイドリグにマッスルとかいう概念が割り当てられて、そのパラメータで骨折を防止しながら動いてるみたいです。
このマッスルデータをいじくって再セットすると1フレーム分の体のポーズを好きなようにいじくれるという話だと理解しました。
やってみる
こちらを参考に、一発動かしてみます。
とりあえず、余計な計算は省いてHumanpose配列のマッスル値をコンソールに出力してみました。
軒並み-1~1の値が並んでますね。
これはどうやら、
マッスル値は-1~1の正規化された値をとるとのことなので、この範囲内が正常なわけです。
しかしながら異常値もちらほらありますね。
これはきっと足のIKがオンになった状態でやったからだろうと思い(そうだとしたら想定してる使い方に致命的な欠陥が生まれるが…)、IKを外してやってみると。。。
あん?
お前何やってんの??
とは言ってもですよ、これがどこのリグでとかそういう話はまだ未確認なので、範囲外の値を探してどこがどうなるとこういう値が出るのか調べましょう。
範囲外の値は、
26 : -1.41...
27 : -2.13...
35 : -1.40...
38 : -1.11...
の計四つ。ちなみに総数は94で、55以降全部0でした。
ではここは何なんでしょうか。
HumanPoseを調べます。
同記事内に名前出してくれるコードもあるのでそれでコンソールに出してみたところによりますと、
26:左足の上下
27:左足のツイストインアウト
35:右足のツイストインアウト
38:左肩の前後
だそうです。
今回は激しい蹴るモーションだったので、きっと激しく動いてはみ出しちゃったのかな?モーションのせいかな?と、いうことにしておきます。
Motionいじくってみる。
脚に上下があったので、適当に値動かしたらその値を現状に加算して足が上下するか試してみます。
Motionは動きの少ないアイドルにしときます。
入力値 : マッスル値 で表示してます。
再生中に値を変更して、値が加算され変更されてることも確認できます。
なんか変わったか?ん?
他のボーンで試してみましょう。
今度は27、左足のツイストインアウトを変更しました。
間違い探しか?
いっそ全ボーンやってみます。
あーなんも動かん。
謎は深まるばかりでありんす。
解決するまで、しばらくかかりそうな気すらしますね。ヤッター。
ちょっと考えに行ってきます。またこんど。
この記事が気に入ったらサポートをしてみませんか?