【AviUtl】ボーン制御素体に変形する胴体をねじ込んでみよう(2体間に配置)
閉じる
閉じる

【AviUtl】ボーン制御素体に変形する胴体をねじ込んでみよう(2体間に配置)

2019-03-11 00:34
    参考にしたのは以前見せてもらった動画のこの部分


    これをボーン制御素体でやってみようというものです。
    使うスクリプトはこちら。

    胴体を腰と首の間に配置することで、胴体が首の位置に応じて変形することを狙います。
    ちなみにこのスクリプト、動画投稿後ちょっとして胴体の変形にうってつけなアプデをしてもらえています。日本一やお前!

    2体間配置の有無でこんな感じの差になります。


    あとは通常と比べて、体を奥/手前に倒す表現が少しだけやりやすいっていう利点もあります。

    どうしてもレイヤが増えて重くなること、モーション作成時の有難味的には簡易IKの方が上であることを考えると導入の優先順位は簡易IKより低め。
    ただ導入しておくとちょっとモーションの見栄えが良くなるので、余裕があれば組み込んでみるといいでしょう。

    なお、2体間に配置スクリプトに関しては未だに理解が怪しい部分があるので、余計なことをしてたり、やるべきことをやってなかったりするかもしれません。なんか変なとこあったら教えて貰えるとありがたいです。

    組み方
    要点をざっくり挙げると

    大前提:「2体間に配置」フィルタを付けるオブジェクトは座標や向きを動かさない


    1.胴体を縦に向ける

    2.クリッピングで胴体パーツ上下の余白を取り払う
    ※この際「中心の位置を変更」にチェックを入れる
    (2.5.胴パーツを複製し、肩関節用パーツを作る)

    3.胴体に「2体間に配置」を取り付けけ、首~腰間に表示されるよう親番を指定する

    4.「2体間に配置」首側の親は腕と頭を、腰側の親は足を制御するよう各ボーンを付ける
    胴体を動かさずに組むため、手足や頭を胴に寄せるように組むこととなる

    5.動作確認して完成

    またえらい長そうですが、まあ全部組む流れの手順ですからね。
    増える手間自体は従来のよりちょっと増える程度ですよきっと

    では順を追って話を進めていきましょう。


    ・大前提:「2体間に配置」フィルタを付けるオブジェクトは座標や向きを動かさない
    これを徹底すれば大体何とかなるかと思います。何ならこの記事読まなくてもいいかもしれない。

    まず2体間に配置の基本的な仕様を軽く紹介します。

    ・親Aと親Bを用意する(親A親Bの距離は離しておこう)
    ・パーツに2体間に配置を付けると、パーツの上側が親Aに、パーツの下側が親Bにくっつく
    ・横幅や縦幅を調節することもできる(ひとまず今回は使わない)

    ではなぜ2体間配置パーツの座標や回転を使ってはいけないのか、実際に動きを比べてみると分かりやすいかと思います。
    以下は2体間に配置した胴体パーツをいじったりいじらなかったりした状態で親Aを動かした時、どんな動きをするのか比較したものです。
    原点固定以外NGだと決め打ちしてから表作ったけど、改めて比較するとちゃんと調整すれば座標移動くらいなら使えそうな気がしてくる
    でも実際に座標移動で調整すると、X軸方向しか動かしてないのに、回転時にY軸方向にズレが大きくなることがある。狂いそう…!

    親Aは頭・腕の親にもなるものなので、このように親の回転軸と胴体の回転軸がズレてしまうと、当然素体の破綻(ズレ)が発生してしまいます。



    これを防ぐため、2体間に配置フィルタを付けたオブジェクトは原点から動かさないようにしましょう。
    なお、グループ制御で全パーツまとめて動かすことは可能です。より上位に置いたボーン制御の影響を受けるのも、胴体に接しているパーツ(つまり手足の根本と頭)と胴体全てに同じボーン制御(子)を付けるのであれば問題ありません。

    1.胴体を縦に向ける
    これは…大体最初から縦になってるでしょうから正直書かなくてもいいとは思うんですが
    2体間に配置は前述の通り画像の上辺と下辺が親にくっつき、そして上のgifで見た通り回転も使えません。

    従って仮に胴体パーツが横向いてたり斜めになっていると横倒しの状態や斜めの状態で引き延ばされてしまいます。
    ペイントソフトなりpng出力プラグインなりで一度胴体をまっすぐにして出力してから…使おうね!

    2.クリッピングで胴パーツ上下の余白を取り払う
    ←ここから余白

    ※←のように首がある、肩らへんより上にも絵が描いてある奴は、肩用に回転軸を作らないとちょっと残念なことになります。こういうパーツは余白だけでなく肩まで削ること推奨(→2.5)


    2体間に配置は画像の上辺と下辺が親ABとくっつけくと書きましたが、この上下には画像の透明の部分も普通に含まれています。


    そのため、透過部分に手を付けずにそのまま2体間に配置すると、右図みたいな感じに、胴体がひしゃげてしまいます。 


    ←ここまで余白

     
     これを防ぐためにクリッピングで余白を限界まで削っておきましょう。ちなみに、このへんの作業は2体間に配置フィルタをオフにした状態でやらないとやりにくいですよ。
     なお、2体間に配置フィルタを使っても横幅は元画像から不変なので、左右は削る必要はありません。むしろ左右を削るとそれを埋めるように横が膨らんで、横幅の数値の調整する手間が増えます。(19/3/21:四角内の内容に修正)
    19/3/21編:横幅についての訂正
    縦幅が同じで、横幅が広くなると、変形が無理やりな感じになります。







    ↑横幅の余白を削ったもの(左)と、そのままのもの(右)
    どちらのgifも30から-30°の範囲で回転
    傾く辺が長くなるとその分上辺と下辺のねじれが発生しやすくなる

    つまり横幅も出来れば削った方がいいです。
    ただ横幅削ると数値調整の手間が面倒だから…もうトリミングして出力した方が早そう


     クリッピングで上下を削った場合、クリッピングの「中心の位置を変更」にチェックを入れるようにしましょう。
     チェックを入れていないと、画像の中心点がズレてしまいます。中心点がズレていると回転の軸が親Aからズレてしまいます(上の比較gifの表参照)。このまま素体を組んで親Aを回転させると、腕や頭が胴から外れたりしてしまうのです。

     また、この胴体は親ABを中心にして回転します。胴体パーツの上辺と下辺の中点がそれぞれ親ABと重なるので、胴パーツも左右の中心に来るのが理想になります。(この位置がズレてると上の比較の表gifの「X座標ずらし」みたいな回転の仕方になる)
     保存してある胴体パーツが左右どっちかに寄りすぎている場合首・腰が左右の中心に来るように出力しなおした方がいいかもしれません。
     ここ書いてて思ったけど多分胴パーツの余白を塗りつぶし領域指定→領域反転→トリミングして出力した方が早いと思う
    3/21追記:横幅削りの手間を考えるとやっぱり領域でトリミングした方が早いじゃないか(憤怒)

    2.5.胴パーツを複製し、肩関節用パーツを作る

    2.でも少し触れたように、首付きの胴体を2体間に配置でポン付けしても、回転軸がちょっと不自然になります。

    ↓胴を2体間配置して適度に引き延ばし、頭手足をくっつけたもの。青点が親A。

    親Aである青点を回転させているが、回転軸が高すぎて肩の回転の仕方が大変なことになってしまっています。

    変形していく胴体とフリーの肩だと回転の仕方が違い、なんの気なしに組むと大きくズレてしまうのです。










    じゃあ親Aの位置を肩らへんに持ってこようというのがこのくだりです。








    左:まず「2体間に配置」が付く胴体の2体間フィルタをオフにし、肩までクリッピング
    中:同じ胴体をもう一個用意して重ね、こちらは逆に肩から上を表示するようにする。
     この際ピクセル単位でキッカリ調整しないと、回転させたときズレるのが気になる
     ※虫眼鏡プラグインがあると調整しやすい
    右:2体間に配置フィルタを再びオンにする。肩から上パーツをピッタリくっつける。

    2体間配置の胴体を肩までクリッピングすると、フィルタをオンにして引き延ばされたとき、親Aに接するのが自動的に肩らへんの高さになります。これで無事回転軸が肩らへんになり、見切れた部分を複製パーツでカバーするといった流れですね。

    ズレなくできました。


    このクリッピングのくだりは、2体間に配置フィルタの「縦幅」の数値+座標調整でもできそうな気はするんですが…とりあえず自分で分かってるやり方だけ書きました。
    ちなみに座標移動での調整は結構前に自分でもやったんですが、なんかちょっとズレるかな…

    3.胴体に「2体間に配置」を取り付けけ、首~腰間に表示されるよう親番を指定する
    4.「2体間に配置」首側の親は腕と頭を、腰側の親は足を制御するよう各ボーンを付ける



    3.は普通に親A・親Bの親番を入力するだけですね。
    4.親A(胴体の上側)と頭・腕が連動するよう、頭・腕に対応したボーン制御(子)付ける。胴体パーツは動かしてはいけないので、頭・肩(腕)を胴体のそれっぽい部分に寄せていきます。親Aの座標移動・回転をさせた時にちゃんと動作すればOKです。

    ↓親A動作確認

     さて親B(胴体の下側)ですが、簡易IKを導入している場合は足の付け根部分にボーン制御(子)を付けるといいかと思います(「簡易IKの親A」が「2体間に配置の親B」の子になるようにするということ。前回記事の「おまけ」部分に近いことをやる感じ)。
     簡易IKを導入してない場合は…前述のとおり2体間配置胴体より簡易IKを優先した方がいいのですが…足全体が親Bの影響を受けるようにすればいいかと思われます。ただこの場合親Bを動かすと足元の調整が間違いなく面倒になるので、極力動かさない方がいいかもしれません。

    ↓IK導入したやつでの親B動作確認

    5.動作確認して完成

     ズレも特になく無事完成です。このgifでは回転しかやらせてませんが、この胴体は座標移動でも変形するので必要に応じて様々な調整が可能です。
     実際に自分の体を曲げてみると分かるのですが、腰はともかく肩を傾けたりするときには、肩だけでなく腰もちょっと連動して動きます。胴体部分を操作するときにはそういうところにも気を使いながらやると見栄えが良くなるかもしれませんね。

     今回の説明は以上です。くどいようですが、2体間に配置については理解が怪しいので、解説も不十分かもしれません。2体間・IK・ボーン制御を動かしてみた時、んまぁそ…よくわかんなかったです…って部分があったら是非コメントください。名前出してのコメントはちょっと…って人向けに質問箱(匿名で質問できるやつ)用意したので、よければ使ってどうぞ。
    解る分なら答えますし、そうでなくても多分他の解る人が答えると思う(他力本願)

    さいごに

    宣伝なんですけども、あのー、 えー、ここまで書いた簡易IKを導入した素体などをいくつか、上げておりますので、もしよければw、そちらも是非使っていただければなんて思います(半笑い)

    配布してる素体で使っているスクリプトはボーン+IK+2体間スクリプトくらいなので、これらの仕様が分かっていれば他キャラへの差し替えもできるようになります。なんだかんだつまづくポイントは多いですし、最初は0から組むより、差し替えて遊んだ方が慣れは早い気がします。ヨグワガンナイケドネ
    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。