凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

MMD for Unity で IK が切れているモデルを修正する

はじめに

MMD for Unity で Tda式Appendミクさんを使いたく思ったのですが、そのままでは IK が切れている等、いくつか破綻が合ったため修正手順をメモしておきます。

手順

腰パーツ

まず、そのまま動かすと腰パーツがビローンと下に落ちていってしまいます。これは腰パーツに Configurable Joint がついていないことが原因です(多分)。特に物理演算させなくても良い固定パーツとして扱うのであれば、Hierarchy から「全ての親 > センター > グループ > 腰 > 下半身 > 腰パーツ親」から辿ると見える「左腰ベルト」および「右腰ベルト」 1 〜 6 の「Is Kinematic」にチェックを入れてください。物理演算させたい場合はすべての腰ベルトに Configurable Joint をつけてパラメタを設定します。「左スカート前」「右スカート前」および展開した中にある「右腰羽」「左腰羽」 1 〜 3 も同様に処理します。
これで、モデルが破綻なく表示されるようになります。

足の IK

そのままでは、足の IK を利用した VMD を適用するとうまく動きません。これは IK で指定しているオブジェクトが間違っていることに因ります。「右足IK親」「左足IK親」を展開すると見える、「右足IK」「右足つま先IK」「左足IK」「左足つま先IK」についている 「CCDIKSolver」スクリプトの「Target」および「Chains」の対象オブジェクトを動かしてみてください。例えば、「右つま先IK」の対象の「右つま先」「右足首」を Hierarchy から選択して動かしてみると、何も起きないことがわかります。対して、「右足先EX」「右足首D」を動かすとポリゴンが変形されることが分かります。そこで、CCDIKSolver の Target / Chains を「D」もしくは「EX」のついたオブジェクトにつなぎ替えるか、「D」「EX」のついたオブジェクトを無印のオブジェクトの子要素にすることで解決します。
右足だけつないでみたモデルに、座っている VMD を適用した結果が以下になります。

おわりに

IK 切れてるから繋げば良いよ!と教えてくれました @GOROman さん、ありがとうございました。