股関節との戦いR~IK使った足の捩り回転取り出し分散再訪編
閉じる
閉じる

股関節との戦いR~IK使った足の捩り回転取り出し分散再訪編

2014-02-11 23:45
  • 2

※14.03.18 変形階層バグの解消されたMMD8.12以降では、変形階層を適切に設定すればがたつきはでなくなった件追記。
※14.02.20 足Dボーンが入ってること前提の構造なのを何も説明していなかったことに気付いたので補足を追加。
 また、筋肉たんの足Dのマイナス付与率と腿YZのプラス付与率の絶対値の差の意味が何となく分かったのでその辺も追記。
※14.02.12 「■2. IKを使ってローカル軸の捩り以外の回転を取り出す方法」の「○股関節部に配置するボーン」で、ボーンへの付与率を間違えていたのを修正



アントニオさんの股関節と相変らず闘っておりまして、とりあえず従来構造+尻ボーンである程度まあ従来型とそんなに変わらないところまで持ってこれたかなあとは思ったのですが。

従来型は革パンのエッジをなしにして、破綻をごまかしてたところが多分にあったのですが、今回はライジングの映画版衣装のベースにもするつもりで、んであの映画版のカラーデニムかな?くらいの色合いだとエッジは出したい感じがするので、破綻耐性はもっと上げたいところです。
んで、いろいろいじってるうちに、やはり足の捩り回転は股関節部だけで吸収させるのは厳しいので、捩り回転については股関節部から膝上にかけて広範囲に分散させた方が良かろうと考えました。

分散構造自体は以前にも(
ar167320)考えたのですが、股関節ボーンとの擦り合わせがめんどくさそうなのと、ますます無闇にボーンが増えるなあと見送ったのですが、でもね、今さらうちのアントニオさんで、多少擦り合わせがめんどいとか少々ボーンが増えたとか、大してかわんねーのでは…? そんな気がとてもしました。

新しい映画も公開されたってのに、従来版の再調整をいつまでやってんだという気もしますが、多分画集とか鈍器な設定資料集が来ないと、細部が分からないとかで映画版は進まないんじゃないかという気がしますし。
映画のパンフレットにアントニオさんの後姿もあってそういう意味では全体像はだいぶ分かったのですが、あの右腰の辺にあるおしゃれ紐。あれウォレットチェーンですかね? そうかなと思うんですが、後姿があっても、尻ポケットの辺がシャツに隠れて見えなくて良くわからない。どうなってるのあれ。

映画の感想そのものはもろもろあるのですが、もろもろありすぎて割愛。



とりあえず、作業中の様子。足を捩って膝を思いっきり開かせた状態。

右足(画面左側)は従来構造ベースの調整のまま、左足(画面右側)は捩り分散構造を導入して検討・調整中です。
左腿にあるボーンで、腕の捩りボーンの回転分散ボーン(あにまさ式ミク ver.2
でいうと腕捩1・2・3)的に捩りを分散させてます。

右足側は、腿に入ったあたりで足の捩りはほぼ回りきっており、股関節部から腿の付け根で急激に捩りが入ってます。ここから足を上げたりした場合の変形具合とか破綻調整がきつい。
左足側は、捩り回転を分散させたので、その辺りの変形もなだらかになって、多分破綻調整もやりやすい。と思う。

なお、左足側はそれにしてもやたらめったらボーンがありますが、ボーン構造や位置など、どれが良かろうといくつも並行して置いて、ウェイトを入れ替えてみてる途中だからです。多分、実装時には整頓されるはず。




んで、腿の辺の捩り分散の組み方を考えたり筋肉たんver.1.15(Fox Kuzunohaさん)を参考にしたりしてるうちに、やり方がいくつかあるなあと思ったので、その辺メモします。



※追記 以下の構造は全て足Dボーン(足ボーンと同位置で足ボーンに回転連動するボーン。親は下半身または腰キャンセル。準標準ボーンプラグインで追加可能)が入っていること前提になっています。

■1. IKの軸制限を使う方法(ar167320ベース)

□ボーン構造
(ボーン名は適当に私が考えたもの)

○グローバルY軸取り出し構造
下半身
→足Dxz(IK影響下 軸制限x:-180~180,y:0~0,z:-180~180 足Dボーンと同位置)
 →足Dy(IK影響下 軸制限x:0,y:-180~180,z:0~0 足Dボーンと同位置)
  →足Dy_t(IKターゲット 足yからx方向に腿半径ぶんくらいの距離移動)

足D
→足Dy_IK(IKボーン 足Dy_tと同位置)

足Dy_IKは足Dボーンの回転に伴ってぐりぐり位置を動かすので、そのうちxz回転分を足Dxzが回転し、y回転分だけを足Dyが回転するような作り

足Dyボーンで、足の回転のうちグローバルy回転のみが取り出せる。

○股関節部に配置するボーン
下半身
→股関節捩戻(回転付与親:足Dy 付与率:-0.35)
 →股関節(回転付与親:足D 付与率:0.45 ウェイトが乗るボーン)

下半身
→尻捩戻(回転付与親:足Dy 付与率:-0.2)
 →尻(回転付与親:足D 付与率:0.4 ウェイトが乗るボーン)


○腿に配置するボーン
足D→足y補助1(回転付与親:足Dy 付与率:-0.75 ウェイトが乗るボーン)
足D→足y補助2(回転付与親:足Dy 付与率:-0.6 ウェイトが乗るボーン)

…みたいな形で、足ボーン軸上に足y補助ボーンを配置する

□雑感

直接グローバルy軸回転のみを取り出せるので、相対的にボーン数が少ない構造にできる。
他方で、足の捩り回転と、グローバルy軸回転は微妙に一致しないという問題あり。

また、MMD上で動かすと、股関節から腿の変形が一段階遅れるようながたつきっぽいのがありました。

変形階層をどっか間違えてる可能性もあるのですが、変形階層を色々いじったけどどうも改善せず。以下の他の方法(筋肉たん方式、IK2回方式)どれでも同じようになれば、MMDによる足IK補正の影響のせいか?とも思うんですが、変形階層を調整してたら他方式は改善しました。(IK2回方式は微妙に残ってるかも)
角度制限ないしは、IK影響下ボーンが2つつながっていてるあたりのせいでしょうかねえ?
loop回数とか単位角とかの調整で改善するのだろうか。むーん。

追記:MMD8.12以降では、変形階層を適切に設定すればがたつきはでなくなりました



■2. IKを使ってローカル軸の捩り以外の回転を取り出す方法(筋肉たん方式)
←筋肉たんver.1.15はこちらで配布されてます

□ボーン構造
(ボーン名は筋肉たん準拠 筋肉たんのボーン名のYZとは、グローバル軸ではなく、足ボーンローカル軸をX軸とした場合のローカルYZ軸を指すと思われます)

○YZ軸取り出し構造

下半身
→腿YZ(IK影響下 軸制限なし 足Dボーンと同位置)
 →腿YZ先(IKターゲット 足ボーン軸上で腿の中ほどくらいの位置)
 (※腿YZ先の位置は、ひさボーンと同位置でも多分構わないと思う)
左足D
→左ひざIK(IKボーン ひざボーンと同位置)

下半身
→腿YZ(4)(回転付与親:腿YZ 付与率:1.0 )

○股関節部に配置するボーン

下半身
→股関節捩戻(回転付与親:腰腿YZ(4) 付与率:0.3)
 →股関節(回転付与親:足D 付与率:0.15 ウェイトが乗るボーン)

下半身
→尻捩戻(回転付与親:腰腿YZ(4) 付与率:0.2)
 →尻(回転付与親:足D 付与率:0.2 ウェイトが乗るボーン)

○腿に配置するボーン
足D
→腿戻1a(回転付与親:右足D 付与率-0.75)
 →腿戻1c(回転付与親:腰腿YZ(4) 付与率:0.75 ウェイトの乗るボーン)
足D
→腿戻2a(回転付与親:右足D 付与率:-0.6)
 →腿戻2c(回転付与親:腿YZ(4) 付与率:0.6 ウェイトの乗るボーン)

まず足Dボーンの回転全体をマイナス付与して打ち消したあと、YZ回転のみを付与で追加し
ています。その差から、残ったローカルX回転のマイナスだけが残ることに。
(筋肉たんには、腿戻1aと腿戻1cの間に、腰キャンセルからマイナスの回転付与を受ける腿戻1bが入ってますが、今の段階では割愛しました)

この構造だと、単純に考えると腿の辺では足Dのマイナス付与率と腿YZのプラス付与率の絶対値は同じにすればいいように思うのですが(なので私はとりあえずそうしましたが)、筋肉たんに実装されているボーンでは両者の絶対値に微妙に差がありました。
何らかの狙い(変形調整?)でずらしてあるのだろうと思いますが、この辺の調整の意図と効果はまだ十分把握できていません。

※追記 筋肉たんの足Dのマイナス付与率と腿YZのプラス付与率の絶対値のずれは、実装テストをしてるうちに変形調整であろうという推測に落ち着きました。腿上部でいきなり完全に捩り回転以外は足Dと連動するのではなく、少し回転を戻して変形をなだらかにするためのものだと思います。N式連動腕関節で、関節の子ボーン側を親にしてる補助ボーンにマイナスの子ボーン回転付与をかけるような感じかと。


□雑感
捩り回転そのものは取り出せないので、足D回転と非捩回転の差分から捩り回転を残す形にしなければならならず、腿回りに配置するボーンがかなり増えそう。
挙動は一番安定していました(がたつき的なものを抑えられた)




■3. IK2回使ってローカル捩り以外の回転からさらにローカル捩りを取り出す方法

筋肉たんの構造を見て思いついた方法です。
まず筋肉たんタイプのIKでローカル捩り以外の回転を取り出し、このローカル捩り以外の回転を付与率1.0で受けるボーン(足D非捩D)をつくります。
さらに足D非捩Dを親にしたIK影響下ボーンをつくり、IKボーンは足Dに従って動くようにします。足Dの回転から、親ボーンの動きで捩り以外の回転は済ませているので、残りの捩り回転分だけ動くIK影響下ボーン(足D捩)ができると考えたわけです。
うわあ分かりにくい説明。

□ボーン構造
(ボーン名はやっぱり適当に私が考えたもの)

○足捩り回転取り出し構造
下半身
→足D非捩(IK影響下 軸制限なし 足Dボーンと同位置)
 →足D非捩_t(IKターゲット ひざボーンと同位置)
足D
→足D非捩_IK(IKボーン ひざボーンと同位置
(※ボーン名違いますが、ここまでは筋肉たんタイプの腿YZとほぼ同じ構造)

下半身
→足D非捩D(回転付与親:足D非捩 付与率:1.0)
 →足D捩(IK影響下 軸制限なし ひざDボーンと同位置)
  →足D捩_t(IKターゲット ひざDボーン位置から、足ボーン軸に直交するように横に移動した位置)

足D
→足D捩_IK(IKボーン 足D捩_tボーンと同位置


○股関節部に配置するボーン
下半身
→股関節捩戻(回転付与親:足Dy 付与率:-0.35)
 →股関節(回転付与親:足D 付与率:0.45 ウェイトが乗るボーン)

下半身
→尻捩戻(回転付与親:足Dy 付与率:-0.2)
 →尻(回転付与親:足D 付与率:0.4 ウェイトが乗るボーン)

○腿に配置するボーン
足D→足捩補助1(回転付与親:足D捩 付与率:-0.75 ウェイトが乗るボーン)
足D→足捩補助2(回転付与親:足D捩 付与率:-0.6 ウェイトが乗るボーン)
…みたいな

□雑感
IKが複数必要になるものの、捩り回転を取り出せるので、腿に配置するボーン数は少なくできる。腿回りのポリ割次第で総ボーン数は筋肉たん方式より少なくできる。
IKの計算結果の上で、さらにIK計算をさせるので、その辺重くなったり挙動のずれが出たりするかも?
軸制限方式よりは多少ましな感じですが、がたつきぽいのが若干残るような感じもありました。

追記:MMD8.12以降では、変形階層を適切に設定すればがたつきはでなくなりました





◆余談1. 腕への応用とかその問題とか

角度制限を使ったもの以外の、捩り取り出し構造は自動捩り構造として腕とかにも応用できます。(筋肉たんで「オート捩り」として実装されてます)
腕捩りなどを使わずに腕のローカルx軸をねじったモーションを流し込んでも、自動的に腕全体に捩りが分散されて、きれいな変形が実現できます。

うちのアントニオさんにも実装しようかやや検討中ですが、モーション作成に関しては悩ましいところがあります。
腕ボーンをローカルx回転させても、腕捩りボーンを使っても、どちらでも同じように腕全体をきれいに捩れるというのは大変魅力的なのですが、一方でこの構造のモデルで作成したモーションを、他モデルに流し込むとあちゃーってことになりかねません。
例えば腕の付け根にx軸回転の負荷がかかりまくっていても気づけないので。

おそらくそのこともあって、筋肉たんは作成済みモーションを流し込む用の「伝統継承用」と、モーション作成向けの「モーション付け用」の2タイプが用意されています。

うちのアントニオさんについては、既に服装別などのバリエーションが多いので、これをさらに倍増とか調整・管理がきっついので、ちょっと導入は見送りかなあというふいんき。



◆余談2. 教えてえらいひと
上記構造で足ボーンを動かした際に、微妙に変形が遅れるというか、ちょっと遅れて変形位置がずれるというか、そういう挙動があったわけなんですが、これって何が原因なんでしょー?
実装は筋肉たん方式でやれば何とかなりそうなので、特に困ってはいませんが、微妙に気になっています。

追記:MMDの変形階層が反映されないバグのせいでした。MMD8.12以降では、変形階層を適切に設定すればがたつきはでなくなりました。

広告
×
>微妙に変形が遅れる
もうお試しになってらっしゃるかもしれませんが、
IK関係のボーンを物理後にしてみるのはどうでしょうか?
http://www.nicovideo.jp/watch/sm21269327
の動画の8:15~では、物理後にすることで追従性が多少改善出来たようです。
…原因は謎のままですが…。
86ヶ月前
×
マグさんどうもー。どっかでなんか情報あったはず~と探して先ほど動画を見つけてやってみたところです。
当該IK以下のボーンを物理後にする処置をやってみた結果、
1の軸制限型は改善するもののわずかにカクつきが視認され、
3のIK2回型は改善してほぼカクつきは見当たらなくなる、
というこれまた原因に悩む結果になりました。
MEAさんの動画だと腕回りのIKなので、足IKのMMD自動補正も関係なさそうですし。
うーん、筋肉たん型との違いから思いつくのは、IK変形の計算処理が複雑になるほどカクつきが出やすいってことですかねえ…???
(筋肉たん型:軸制限なし1段IKのみ < IK2回型:軸制限なし1段IK2階 < 軸制限型:軸制限ありボーン2段IK って感じに処理が複雑そう…な…?)
ただ、CPUの計算とかでタイムラグが出るほどの負荷だとも思いづらいので、IK回りの変形処理順が複雑ってことなんですかねえ…
86ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。