モデリングに使うための回転付与ボーンの特徴
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

モデリングに使うための回転付与ボーンの特徴

2013-03-11 00:03
  • 2
  • 82

●ボーンの話(5)

1回目:単純多段化と回転付与(付与ボーンがあるモデルを単純多段化する方法)
2回目:続)多段化したボーンのローカル軸の設定
3回目:多段化って何がおいしいの?(+操作(付与)ボーンの追加方法)
4回目:超簡単な多段化と付与による回転の違い



とはいっても付与ボーンには利用目的に幅があるため、その中でも「変形の補正」を目的とした利用を説明します。
主にモデラー向けです。

例を1つ決めて説明をしようと思います。
今回もN式連動腕関節(sm16097813のひじ部分を例にとって説明します。

N式連動腕関節のひじ部分を表わす簡易的なモデルです。




●ウェイト(BDEF2)の復習

さて。ボーンの話ですが、モデルに関するのでウェイトが関わってきます。
まずはウェイトの特徴をさらっと復習しましょう。
※ウェイト方式にはBDEF4やSDEFもありますが、一旦忘れてBDEF2だけで話を進めていきます。

N式連動腕関節はBDEF2で塗られているので下記の参考資料のBDEFをよく見てください。
http://www.nicovideo.jp/watch/sm13637092
メッシュが表示されてるのでこちらの方が分かりやすいかも→http://mqdl.jpn.org/sb.cgi?eid=69

動画から分かる通り、BDEFは捩り過ぎると捩じ切れそうだし、曲げるとつぶれます。
ウェイトは1個の頂点につき2個の指定ボーンで、合計が1になるように、0.00~1.00の間の数値2つで決められています。

PMDEでウェイトを塗る時にはウェイト描画画面では数値に×100されているので、0~100と言い換えた方が分かりやすいかもしれません。
言い表しやすいので以下、0~100という表現で書きます。

BDEFの場合、ウェイト数値が50に近づく程潰れやすい傾向があります。

そこで

逆に考えるんだ・・・「ウェイトを100にしちゃってもいいさ」と・・・

ウェイトを100にすると、その100で塗ったボーンか、もしくはそのボーンのボーン親たちの動きにしかついていきません。

頂点がある箇所が潰れたり痩せたりはしませんでしたが、中間の頂点が無いのでカクカクになってしまいました。
また、ウェイト100同士の境目が捩じ切れそうになってしまいました。
そこでウェイトを回転付与ボーンに移し、「付与率」を使って中間を作っていくことにします。



●付与率と付与親の設定

付与関係には親子関係とは違い、付与率を設定することでどの程度回転が伝わって欲しいのか設定できます。
1(同じだけ動く)や-1(逆側に同じだけ動く)、0.5(半分だけ動く)だけでなく、100(100倍動く)などの設定も出来ます。
※回転が伝わるといっても付与関係なので、付与親でなく自分のボーンを基準に動くことに注意

関節部分にあたるそれぞれの列にウェイト100の回転付与ボーンを個別に用意します。

付与親は「ひじを回転させた時に回転が伝わって欲しい」ので全てひじになります。

さて、それぞれ付与率を決めることになります。
実際にはモデルの形状にかなり左右されるので、仕込む際に動かしながら調整するのが一番です。
cは真ん中なので、ひじの回転は半分伝われば良いでしょうから数値は0.5にします。あとはとりあえず適当に半分に割って、bとdは0.25、aとeは0.125にでもしときます。
プラスかマイナスかは、ここでボーン親を腕とひじのどちらにするかによって異なります。



●ボーン親を決める

何故ボーン親によってプラスかマイナスかが変わるかというと、
ボーン親がもしひじならば、関節の丸みを出すためには、ひじの回転とは逆に動くのが望ましいからです。

つまり、ボーン親が腕ならひじと同じ方向に回転して欲しいのでプラス、ボーン親がひじなら逆側に回転して欲しいのでマイナスです。
a・bのボーン親は腕、d・eはひじです。cは上図ではひじにしていますが、この場合どちらでもかまいません。

ボーン親をどうするかはそのボーンのウェイトを持つ頂点が、どのボーンの先(子側)にいるかを考えなければなりません。
cが腕でもひじでもかまわないのは、cのボーンの位置がひじと同一で、cのウェイトを持つ頂点が丁度腕とひじの境目のため、ひじの親側でも子側でもあまり問題が無いからです。
これがもしc部分の頂点が、ひじボーンよりも少しでも先の方にあるならば、cのボーン親はひじの方が良いでしょう。
実際のモデルの頂点とボーンの位置関係によって変わってくるので、その頂点がどのボーンの先(子側)にあるかを考えてボーン親を決めてください。

なお、前回、付与関係の場合ボーン親は何でも良いと書きましたが、"なんでも良い"というのは親子関係が付与関係に影響を与えないという意味で書きました。
(何故影響を与えないかは1回目の記事を読み返してください)
もし、ひじから先の回転付与ボーンのボーン親を腕にしたら、回転付与ボーンでウェイトを塗った部分の頂点がひじを回転させた時に取り残されます。


仕込む方法についてはウェイト・付与親・付与率・ボーン親を決めたのでここまでで完了です。
この先は少し理由について考えてみます。



●回転付与ボーンの位置について

何故、回転付与ボーンをそれぞれの頂点列に合わせて配置させているのでしょうか。

前回の記事では、子側(青)を固定し、親側(ピンク)の位置を変えていました。
付与は「付与親の位置に左右されず、自分基準で回転する」という性質があることが分かったので、付与親側(ピンク)の位置を固定して、子側(青)の位置を変えてしまうという発想も可能です。
ひじ(付与親)は位置が固定になりますが、回転付与ボーン(子)なら動かせます。

回転付与ボーンが頂点列から離れている場合は何が不都合となるのか、一列だけボーンをひじと同位置にして比べてみます。
分かりやすくするために間隔を広くし、かつ付与率を0.5にしています。

回転付与ボーンがひじと同位置にある(頂点列から離れている)モデルは、見た目にズレが出ているのが分かります。

回転の中心とその様子を書き込んでみます。

回転付与ボーンを中心にして、頂点が回転しているのが分かります。
頂点が振り回されるのを防ぐためには、ボーンは回転させたい部分の中心に置く方が安全です。
この、頂点がボーンに振りまわされるような動きは、ウェイトを塗った頂点とボーンの位置が離れるほど顕著になります

もちろん、ウェイトや付与率・ポリゴンの形などによって適切な位置は異なりますので、モデルによって模索することになります。
言ってしまえば、良い感じに動けばどこでもいいでしょう。
あくまでこの単純な構造のモデルでは、頂点列に合わせて配置した方が良いだろうという話です。



●捩じ切れない理由

さてもう一つ。
何故この構造にすると捩じ切れないのでしょうか。
ウェイトが100の場合、繋がってる頂点同士で180度の回転差があると、頂点自体につぶれは起きなくとも、繋がっている辺で"ねじれ"が生じ、捩じ切れそうに見えます。

1つの頂点列のみに回転付与(付与率0.5)を適用させたとして、ひじを360度回した時に腕との回転差が180度になってしまい捩じ切れそうになるのでは?
という疑問が湧いてきますが、実際にはそうなりません。
実際にはひじを180度回した時が一番ねじれた状態になります。
付与の±とボーン親によって180度回した時の挙動が異なるので179度で試します。

捻れてはいますが捻じ切れる程ではありません。

180度を超えるとどうなるかというと、下図のように辺の流れが変わったように見えます。

これはボーンの回転の仕様によるものです。
回転は0~360度ではなく、-180~180度で計算されます。
試しにMMDを起動してどのボーンでも良いので、ボーン編集>数値入力で角度のどれかに181~360の間の数値を打ちこみ、再度数値入力の画面を開いてください。
181と打ったとしたら-179というマイナスの数値に変わっているはずです。

付与率が0.5だとしたら、-90~90度の間でしか回転しないため捩じ切れなくなる、という訳です。
179度ひじを回したとしたら89.5度回りますが、181度つまり-179度回した時には-89.5度回ります。
確認できない程一瞬の間に逆側に回転しているため、辺の流れが変わるのではないかと思います。たぶん

実際にモデルにこのような構造を仕込む場合は、付与率0.5の頂点列1つだけだと90度でも結構な捻れ具合になるので、2~6個の回転付与ボーンを足して流れが急に捻れ過ぎないように分散させる必要があるでしょう。




これらを踏まえた上でオヨヨさんの静画「ボーンと変形についてのメモ」シリーズの「回転連動系補助ボーン」の部分を見ると、より分かりやすくなるんじゃないかと思います。
→(1:im2369833、2:im2797597、3:im2803487

ウェイト100だとちょっと形がとんがり過ぎる…という理由でウェイトが100じゃない場合もありますが、発想元は同じです。

変形の補正による回転付与ボーンのメリット

  • 頂点の回転中心を任意に設定できる
  • 捻れを分散させることができる
  • ウェイトをある程度自由に設定できる

→結果として、ボーンを動かした際に変形させたい形にしやすい・潰れにくい構造をある程度安易に作れる

デメリット

  • ボーン構造が煩雑になる
  • 設定項目が増えるためメンテナンスが面倒
  • 想定してないボーン構造(IK化や多段化等)に改造した際に手を加えないとひどく崩れる恐れがある
  • 仕込む場所によってはボーン構造に工夫が必要
  • 変形を補正したモデルで作ったモーションを補正なしのモデルに適用させた場合に補正分がひどい見た目になる

等があります。
つまりボーンにしろメッシュにしろ、VerUP・改造・改変するのが面倒になるということです。
どちらを取るかは作る人次第です。



少々間が空きましたが、親子関係と付与関係の違い、そこからの付与を利用する発想を辿ってみました。
また説明が複雑になるので省きましたが、面白いのが親子関係と付与関係は両立できるということですね(既に説明が複雑化しているという突っ込み…今の私の精一杯です)。
その中で有名なのは肩キャンセルボーンかなと。暇がありましたら、準標準ボーン追加プラグインで肩キャンセルを追加してその構造を見てみると面白いです。
肩キャンセルの歴史→sm14557742(まだ普通の肩との両立が出来てない頃)→sm14606132(普通の肩との両立)


以上、沼への案内手引きでした。
全ての記事を読み切った方はこれで立派な沼の住人ですね。ボーン沼へようこそ!
ではお疲れ様でした。
広告
×
何という分かりやすさ…!
めんどくさい話をすっきり整頓して明解に示す説明力に感動です。
67ヶ月前
×
>>1
適当~に覚えてる自分の整理も兼ねて書いてるんですが、そう言って頂けてほっとします。
もう1段階噛み砕いた説明が出来そうな気がしたんですが難しかったです!
67ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。