ニコニコ
ユーザーブロマガは2021年10月7日をもちましてサービスを終了いたしました。
このページは皆さまから投票いただいた記事を保存したものです。

ネジまき出張所

単純多段化と回転付与

2013-02-12 00:57:52

【MMM】鎌Pバディの腕多段化について
上記のゆいかさんの記事からの派生記事です(話済み)。
うちのバーナビーモデルにも関係する、単純多段化と回転付与との関係の話です。
(ゆいかさんの記事でオヨヨさんがコメントした内容とほぼ同じです)
間違いがありましたら教えて頂けると助かります。

lt;追記_130213gt;いくつか画像を増やしたり、説明に手を加えてみました。lt;/追記gt;


~構造編~




Aが回転付与親のBというボーンがあります。
Aを単純多段化してA親というボーンを新たに作成し、[なんかボーンa→A親→A]という構成になったとします。
この時、Aを動かしたらBも動きますが、A親を動かしてもBは動きません。

PMDEditor ver0.1.3.9のreadmeを読んでみるとこのような記述があります(●多重付与構造(PMX)の欄、3991-3992行)。
  この付与変形量は、付与属性を持つボーン間で継承され積み重なる性質を持ち、
  またその変形量はボーンの親子連結による変形とは異なる系列で保持されます。

ここから、親子連結(この場合多段化)による変形量は、回転付与による変形にとって別物扱いであると解釈できます。
つまり、A親はBにとっては無関係なのでA親の変形はBに伝わらない、ということになります。


そこで、A親の変形を伝えるために、Bを単純多段化して[なんかボーンb→B親→B]という構成にします。そして、B親に回転付与親としてA親を設定し、A親の変形がB親に伝わるようにします。



Aをたくさん多段化した場合には、Aを多段化した数と同じ数Bを多段化し、それぞれを付与構造で結びつけます。
なるべく同じ親子構造でそれぞれ対応させた方が良いと思います(A親1ならB親1、A親5ならB親5、というように)。



なお、付与率はAからBに伝わる割合とA親からB親に伝わる割合を同じにするため、同じ数値を設定します。
単にこの構造であれば移動付与も同様です。



~実践編~

【簡易的な手順】
1.多段化したいボーンAを付与親にしているボーンを全て探す
2.全てのボーンを、Aと同数多段化する
3.多段化したボーンをA系列の親子構造に対応させるように、それぞれ付与で結びつける
4.付与率を多段化元のボーンと同じ数値に設定する
5.多段化元のボーン(Aを付与親にしているボーン(多段化済)全て)を付与親にしているボーンがないか探す
6.あったら2~4の手順を行う
7.以下繰り返して、多段元のボーンを付与親にしているボーンが見つからなくなったら完了



うちのバーナビーモデルには肩周囲に2つ(付与親が腕)、ひじ周囲に3つ(付与親がひじ)の回転付与ボーンが左右それぞれ存在します。
これは動かした時の見た目を補正する用途のボーンです。
N式連動腕関節(sm16097813)の応用になります。が、とりあえず使う側は、なんか腕やひじに回転付与でくっついてるボーンがあるんだな、くらいに思ってもらえれば構いません。

なので、腕とひじを多段化する際は上記の手順を行わないと、多段化側のボーンを動かした際変形が異なることになります。
腕は多段化してもあまり変にはなりませんが、ひじは結構ひどい感じになります。
(オヨヨさんの【MMD】肩回りの回転連動系補助ボーンの肩キャンセル対応メモと指す内容は同じ)
上記の手順を行わずにひじを多段化するとこうなります。

右ひじの多段化してない状態に比べて、左ひじはかなりへこんでしまいました。


ではうちのバーナビーモデルで左ひじを綺麗に2段多段化したいとします。

左ひじを付与親としているボーンを探すと左うでa、左うでb、左うでcが見つかりました。

なおボーン名はモデルによって異なりますので「多段化したいボーンを付与親にしているか」に注目して探して下さい。(手順1)

多段化には面倒なのでkaz@pgdcさんのプラグインBoneDoublerXを使用します。
(語尾にXがついていないBoneDoublerはPMX用ではなくPMD専用なので使用しないでください。もれなくホメ春香さんみたいなことになります。プラグインがBDEF4のウェイトに対応してないので)

BoneDoublerXの画面。
左うでb0が左うでa・左うでbの間にありますが、これは私が腕捩を入れる際の手順の簡略化用に入れた面倒くさがりボーンなので無視してかまいません。

多段化したい左ひじと、左ひじを付与親にしてる回転付与ボーン3つを右の四角に入れ、多重化数を設定します(今回は2段多段化したいので2)。(手順2)

私の場合は「名前をシフト」にチェックを入れないことにしています。
「名前をシフト」にチェックを入れると親側ではなく子側に「~補助n」という形でボーンが増えますが、実際にウェイトと関連しているボーンは常に一番下の子になるので、ウェイトを持つボーンの名称が変わってしまい、他に弄ったりする場合に個人的にややこしいからです。
使用する分にはどちらでも使いやすい方で構わないと思います。



多段化されました。
左うでaの親ボーンが「左腕捩」から「左うでa親2」というボーンに変わってたら成功です。
ちなみに「左うでa親2」の親ボーンが「左うでa親1」、「左うでa親1」の親ボーンが「左腕捩」になっています。

回転付与がまだないので設定していきます。

付与:の横にある[回転+]というボタンをONにします。

BoneDoublerXで「名前をシフト」にチェックを入れずに多段化すると、[なんかボーン→A親1→A親2→・・・→A親n→A](nは任意の数)という形になるので、それぞれ語尾の数字を付与親側の方と対応させましょう。その方が分かりやすいので。(手順3)

左うでa、左うでb、左うでcの付与率はそれぞれ0.17、0.56、-0.17となっているので、それぞれの親ボーンも同じ数値を入れます。(手順4)

念のため、「左うでa」「左うでb」「左うでc」を付与親にしているボーンがないか探します。(手順5)
なかったのでこれで完了です。モデルを別名で保存します。お疲れ様でした。

※表示枠の整理を忘れずに。(忘れてました)



余談。

モーションの補正用にボーン1つを追加する程度なら単純多段化でなく、ボーンAを複製し、複製したボーンA'をAの付与親にして(つまりボーンAをA'を付与親とする回転付与ボーンにする)、多重付与構造にさせるという手段でも良いかと思います。
これならばAを付与親にするボーンをわざわざ探す必要はなくなります。
注意点は、ボーンの並び順でA'はAよりもなるべく上にあるようにすることです。MMD上ではA'がAの下にあっても動きますがPMDE上では動きません。
MMDとPMDEの挙動は少々異なるので、ボーンを改造したらなるべくPMDEではなくMMDでチェックした方が良いです。)




ボーンの話で疲れた方は先日投稿したDIVA10選まとめ動画をよろしければどうぞ(ステマ)。

投稿者:

m6

プロフィールページ