葉脈と潮流

純粋さを磨き、迷わない。

VTuberモデリング日誌 #06 リギング(ボーン設定)

 こんにちは。徹夜でモデリングしてるので脳が働かず、導入が思いつかないので省略します。本当に連日リギングをしていた。地獄。詳しくは後述します。。

 

 そう、前回は「次はテクスチャ」って言いましたけど、テクスチャとリギングの順番を考えた時に何となくリギングを先にした方がいいような気がしたので順番を変えました。まずはこの二つの順番について説明しますね。

 

リギングとテクスチャ

 ポリゴン張りの後には主に2つの作業があります。テクスチャ張りとリギングです。ポリゴン張りをしただけでは白い粘土で形を作っただけなので、絵の具で色や模様を描くのがテクスチャです。粘土だけでは人の形を保って動かすのがとても難しいので針金を通して針金の周りを固定し、同時に関節を作る作業がリギング(いわゆるボーンの設定)です。

 本来テクスチャとリギングは必ずどちらを先にするという順序はないっぽい?ですが、テクスチャよりリギングの方が途中にメッシュを変更しそうな予感が強くしたので僕はリギングから先にやりました。実際にリギング中に一度しっぽのメッシュを細分化しましたが、リギングに慣れたら必要ないと思います。保険としてメッシュからやるといいかもしれませんが、友人曰くテクスチャを先にやった方が楽しいらしいので初心者の人もどっちでもいいと思います。blender内でテクスチャを張る場合は先にテクスチャを張っても問題ない気がします。勘ですが。

 

 どちらにせよ、ミラーや細分割曲面はこれらの作業前に適用しておきます。厚み付けはリギングの後回しにした方がいいかも。これらの適用は取り返しがつかないので、必ずバックアップを取りましょう。僕はこの後3回ほどこのバックアップに縋ることになります。このあとも定期的に別々にバックアップを保存しておくと良いかもしれません。

 

ボーンを置く

  以下のサイトを参考に。大まかなやりかたはこれらのサイトに任せます。

nn-hokuson.hatenablog.com

krlab.info.kochi-tech.ac.jp

 

 人型のボーンの場合、Rigifyというツールがblender内で利用可能なのですが、まずボーンの基本について知るために自分でボーンを組んでみましょう。身体の中心、首元か背骨の一番下あたりからボーンを置き、Eキーで全身に伸ばしていきます。左右対称なボーンはShift+Eで延長するなどして左右対称にしていきましょう。200ある人間の骨をすべて再現しなくても、主要な関節だけ再現すればいいでしょう。例えば脊髄は簡略化して5つ程度に分割するとか。それでも僕の場合はボーンは70本(としっぽなどで10本ほど)になりましたね。指が多い。

f:id:indigomou5e:20190114230828p:plain

 

 拡大図。スミレちゃんみたいにリアル気味なモデルの場合は指先だけじゃなくて腕の先から指へ至るボーンも大事です。手を開いたときにシルエットを変えられるので。

f:id:indigomou5e:20190114231403p:plain

 

 しっぽ。根元から先っぽまで長いボーンを張り、左のツールバーモデリング→細分化で細かく分けます。

f:id:indigomou5e:20190114231658p:plain

 

 名前も付けておきましょう。管理や見分けの時に便利です。「Arm.L」「Arm.R」などとピリオドとLRを付けるとblender内でいくつかの対称化機能が使える?らしいです。少なくとも見た目は分かりやすい。

 ボーンの頂点ですが、変形の起点になるのでめちゃくちゃ重要です。でも後述するウェイトペイント中に何度も変更するので今は大きく外れていなければ大丈夫です。オプションの「X軸ミラー」にチェックが入り、全てのボーンが左右対称になっていることを念入りに確認しましょう。

 

ウェイトペイント

 来ました。地獄。何もわからず腕が袖を突き抜けたり脚がへしゃげたり全然関係ないポリゴンが一緒に動いたりする問題に対処しつづけなければいけない。つらかった。ホント。つらすぎて写真が全くありません。必死だったので。説明用にスクショを取りつつ書いていきますので心配しないでね。

 参考資料はさっきと同じリンク先です。Ctrl+Pでメッシュとボーンを融合するあたり以降。

 

 書き忘れていましたが、融合前にメッシュのオブジェクトをすべて統合しておきます。オブジェクトモードで全部選択してCtrl+J。ここでそれぞれ独立したメッシュを縫い合わせるかどうかですが、一長一短です。僕の失敗のもとでもあるので後述します。

 

 全部選択したらCtrL+P、「自動のウェイトで」を選択します。これで自動的にそこそこの制度のウェイトを付けてくれます。ボーンヒートウェイトのエラーが起きた時は1つ目の参考サイトに対処法が乗ってます。

 

 ポーズモードでボーンを動かして無るとそこそこちゃんと追従しますね。これにウェイトペイントで追従の重みを変えていくのですが。。。これがまた難しい。とりあえずブラシは全部使って自分に合うのを選びましょう。僕はblur、draw、mixあたりをよく使いました。

 

 このあと、様々な失敗が襲ってきて何度も立ち往生したり進捗が巻き戻ったりしたので、失敗を見ていって反面教師にしましょう。思い出すだけでもつらいですが。。

 

メッシュが突き出す

f:id:indigomou5e:20190115003716g:plain

 肩部分の赤いインナーや腕が突き抜けちゃってますね。これはかなりマシな方で、初めは肌やインナーの隠れた部分のほとんどが簡単に突き抜けてしまって頭を悩ませたものでした。対処は二つ。一つは重なってる部分、例えば同じ部分の肌とインナーのウェイトを完全に一致させる方法。もう一つは隠れた部分の肌を消してしまう方法です。というか前者が複雑すぎて実質無理なので後者を選択せざるを得ません。これに気づいてバックアップ個所に戻り、服に隠れた部分を消し直して結構な時間を失いました。また、先に厚み付けを適応しちゃうと特に服の裏地と表地でウェイトが異なってしまい裏地が突き出てくることがあります。だるすぎる。裏地はできるだけ少なくしましょう。*1

 

関節を曲げるとメッシュがとげとげする

f:id:indigomou5e:20190115012927p:plain

 肘を背中側から。ウェイトを綺麗に塗って、blurでぼかして綺麗にならしたはずなのに、なぜかとげとげ汚い関節になってしまいます。ずっと何でか疑問だったんですけど、0.0の青から1.0の赤で設定するウェイトの絶対値だけでメッシュの追従度だけは決まりません。

 実はあるボーンを回転させたときのある頂点の移動具合は、「(回転するボーンにおいてのその頂点のウェイト) ÷ (全てのボーンにおいてのその頂点のウェイトの和)」なのです。仮に肘から先のウェイトを真っ赤(1.0)にしても、何らかの理由で頭のボーンのウェイトにおいて肘から先が真っ赤になっていたりしたら回転量は1/2、半分になってしまいます。逆に、他のすべてのボーンでウェイトが0.0である頂点は、どれだけウェイトが少なくても100パーセント追従してしまいます。

f:id:indigomou5e:20190115015556p:plain

 つまり、さっきの画像でとげとげした肘になってた理由は肘から先ではなく、肩から肘のボーンのウェイトが汚かったという原因でした。膝や肘は特に滑らかにしなければいけないので、blur、「ウェイトツール」内のスムーズを使ってボーンのヘッドやテールはウェイトを滑らかにしていきましょう。あとボーンから遠いところを塗らないようにしましょう。マスクツールやマスク中の頂点選択モード(画面下部のレイヤーボタンのすぐ左にある立方体)を使っていきましょう。ウェイトツールを一部だけに適応したい場合はマスクの頂点選択モード中でないといけません。*2

 

 ちなみにこの辺りで撮った動画がこちらです。左腕と顔しか動いてないけど、自分の作ったキャラが動くのはとても感動してしまいますね。ふぁぼ付かなかったのは親バカだということなんでしょうか。子育てをすると同じ気持ちになるのかもしれないですね。

 

ミラーが機能しない

 ところで、左腕で調整したウェイトと全く同じ数値のウェイトを右腕に与えるのはとても難しいです。適当に近い数値で誤魔化すことはできますが、その場合は両腕のボーンを同じように動かしても微妙にメッシュの動きが変わってしまいます。あと作業量が単純に二倍になります。もちろん対処法はあって、ウェイトツール内のミラー機能を使えば簡単にX軸を対称にしてウェイトが左右反転してくれます。...くれるはずだったんです。

 

f:id:indigomou5e:20190115020934p:plain

 冷酷なエラーメッセージ。ミラーボタンを押しても反転されず、このメッセージだけが出てきます。色々調べたり頭をひねったりしてみてようやく気づいたんですが、簡単な話でした。座標系のX軸とモデルの中心軸がずれてました。

f:id:indigomou5e:20190115022147p:plain

 blenderが基準にするのは見た目の中心じゃなくて座標の中心なので、そりゃあ「どの頂点をとっても反転した先に頂点が1個もないよ」なんて言われます。ちなみに画像ではローカル座標の値ですが、グローバルでもずれてました。悲しい。しかも左右で微妙に違う操作を何度も加えていたのでずれを戻しても手遅れ。呼吸止まりそうになりましたね。ふりだしに戻る。

 コレ本当につらいので、新しくモデルを作るときはわにこ氏の動画と同じ過不足ない工程でオブジェクトやメッシュを作りましょう。後からつらくなりますよ。あとボーン作業に入る直前にミラーを適用し、その後は左右等しい調整を行うように注意しましょう。

 

 ちなみに編集モードで全選択→G+XでX軸方向だけ移動すると頂点のローカル座標が、オブジェクトモードでG+Xで移動すると頂点のグローバル座標が変えられます。これと数値入力で中央の頂点のX座標をぴったり0にしましょう。

 

 完全に言い忘れてましたが、ミラー機能を用いたボーンの対称化は次のリンクを見てください。これに加えてあまり言うことはないです。

www59.atwiki.jp

 

ミラー、重複頂点削除の落とし穴

 よし、2回目のタイムリープ。でもおかげでもうやっちゃいけないことは分かった。ウェイトペイントの癖も掴めてきた。座標を戻して、半分を消してモディファイヤーのミラーを付けなおして。もう戻ってくることはなさそうだしもうバックアップファイルに上書き保存していこう(何故????????)。

 ...フラグは見事に回収されました。これはあまり再現性のなさそうな凡ミスなんですけど、戒めに残しておきます。

 

f:id:indigomou5e:20190115024625p:plain

 最初の躓き。これは見ての通り前方の一部分が左右非対称なズボンなんですけど、あまり非対称性が強くないのでこの部分だけウェイトのミラー化はしなくても大丈夫だと思ってました。その考え自体に問題はあまりないはずです。非対称な衣装というものは十分考えられますし。

 問題は先ほど言ったモディファイヤーの方のミラー機能をこのズボンに適用してしまったことです。気付かないままさらに重複頂点削除をしてしまい、2つのズボンが癒着したような気持ち悪いズボンが生成されました。

 

 僕がそれに気づいたのは、ウェイトペイントを再開して腕、手のひら、指、顔、肩、背中のウェイト調整を行った後でした。当然元の形のズボンには戻せず、多重に重なっているのでウェイトペイントすらできません。

 もうやり直したくないし、そもそも残りのファイルはさっきミラーが使えず手詰まりしたファイルしかありません。ちょっと癒着したズボンを元に戻そうと思いましたけど、かなり複雑な形をしていて簡単には元に戻せそうにありません。ズボンを再制作するのもだるい。色々*3対処法を探した結果、何とか見つけました。*4

 

 Shift+F1のアペンドという機能を使います。ファイル保存などのメニューボックスにもあります。これは他のBlenderファイルからオブジェクトやメッシュなどをコピーしてこれる機能です。つまり、手詰まりになったさっきのファイルからズボンのデータを持ってきて、張りなおせばいいのです*5。これでファイルを持ち出し、もう同じミスはしたくないので対称的なズボンに戻しました。アペンドを知ってたら今後も取り返しのつかないミスをした時もわざわざ必要以上に戻らなくてもよくなるかもしれませんね。

 

リギング終了

 この後は特にトラブルもなく、基本を順当に守り、靴先までリギングしてリギングを終えました。しっぽのリギングが例が見つからなくて少し戸惑ったくらいです。しっぽ全体を膝や肘のようなグラデーション的なウェイト*6で彩るのがポイントみたいですね。あとしっぽの分割数を2倍にして50分割位にしました。こうしないと滑らかになりません。

 

 言うこともないのでrigifyの話をします。人間の形にすでに成形されたボーンのテンプレートです。名前もついてるので70個もの名前を付けなおす必要がありません。表情筋も付けられるらしいですよ。すごいですね。特に付言することもないのでリンク先を見るか検索してください。

dskjal.com

 IKとかFKとか便利そうだけどまだよくわからないので放置します。後々わかるでしょう。

 

f:id:indigomou5e:20190115042214p:plain

 あと、腕はリアルにしようと限界がありますね。例えば肘は深く曲げると押された内側の肉が盛り上がるのですが、それはボーン一つでは実現できないです。どれだけ頑張っても上の画像みたいに長い風船を折り曲げた感じになってしまいます。肘の骨の出っ張りも、伸ばした時はなくて折り曲げると出るとするのはとても難しい。。。でもそれを踏まえてみるとVTuberもその辺は誤魔化してたりするんですよね。

 また、肘から手首までの骨は二本あるのですが、それを一本にすると肘から手首までの回転の盛り上がりの変化が上手くつけられません。下手に回転させるとくびれが出来て不自然に細くなっちゃいます。二本にしてもなかなか難しそうな問題ですしね。

 肩の関節も難しくて、肩はある程度関節の位置が移動してかつ回転もするので、それらを一つのボーンで担うと回転するときに腕だけじゃなく服も巻き込んだりしてしまいます。結局それらを同時に行う方法が分からないので回転用と移動用の2つのボーンを作りました。ノースリーブじゃなければ袖部分のメッシュを移動用、腕以降のメッシュを回転用、とバイナリーで綺麗にウェイト分けするとできます。

 

 最後に、ボーンのテストも兼ねてポーズを付けてみました。背骨や手足が適度に曲がるとリアリティ出ますね。配色を何気に見直してます。やっぱり白い肌がすき。。

f:id:indigomou5e:20190115043001p:plain

 

これからリギングをする人へ

 モデリング以上にリギングは癖があります。全体を把握するためにもバックアップを取ってまず失敗覚悟で軽く全体の工程を確認するといいと思います。どれだけ早く慣れられるかの勝負です。ここを突破したら実質完成なので頑張ってください。

 

 ちょっと複雑になってきましたし、6000字書いてもまだ伝えきれてない気がします。そういった理由もあってgithub代わりにファイル共有用にGoogleドライブを作ってみました。この記事執筆時のファイル(sumire06.blend)を残しておきますので興味があればどうぞ。再配布は禁止で。著作権や常識の範囲内で参考にしてください。僕のバックアップにもなるのでお得ですね。

drive.google.com

 

 

続き→ #07 テクスチャ

*1:スミレちゃんは前を開くなんて着方をして緩い服を着ちゃったりするから裏地も広くなっちゃって本当につらかった。ワンピースとかなら楽だったんでしょうねえ。。。

*2:面のマスク中だとなぜかマスク外にも適応されます。

*3:記憶がない

*4:追い詰められた主人公が飛躍的に成長する展開みたいで格好いいですね

*5:ループしてきた世界との協力で問題を解決するのタイムリープものの典型的な展開みたいで格好いいですね

*6:長さはボーンの2倍ほど