(約 11,000文字の記事です。)
リグとボーンの違いを一言で説明できますか?私は勘違いしていました(笑)スキニングの意味で「リグ入れ」と言っていました。恥ずかしい……。(なおリギングと言うならばほぼ意図通りの用語だったみたい)
今まで何となく使っていた用語を正しく理解して表現するための基礎知識をまとめてみました。長文ですが「それだけ丁寧に解説」しました!
対象読者はBlenderユーザー、ボーンによるポージング初心者です。
更新履歴
2022/10/28 記事をメンテ。
2022/10/09 記事をメンテ。
2022/03/22 読み直して分かりやすいように一部修正。
2021/08/12 テールジョイントの罠を追記。
前書き
前回の記事のように、私はZbrushではスカルプトによるメッシュの変形、それ以外の作業をBlenderで行うことにした。
その中でもBlenderでボーンによるポーズ変形と、ポージング中であってもZbrushとBlenderとをGoBアドオンと自作アドオンでいつでも自由に往復できるようになったことが大きい。ポージング中であってもトポロジ変更が自由になるMyアドオンの完成がこれを決定付けた。
アニメーション用途ではない「静止画用途」
ただ、ポージングと聞くと多くの人はアニメーション用途やゲーム用途を思い浮かべるだろう。だが私の場合は3DCGの静止画用途として「楽に効率よくキャラクターにポーズを与える」目的でボーン変形を使いたい。だからIKによる効率や、アニメーションのための効率化手法についてはあまり触れない。ぶっちゃけ、全てFKでいいと思っている。シンプルでいいのだ。静止画用途やフィギュア造型用途では、1ポーズが思い通りに仕上がればそれでいい。なのでIKやリグコントロールなどの「アニメーション用途、ゲーム用途のための話」はあまりしない。
とはいえ、基礎の基礎を理解する上では重要な情報が多い。本当の基礎をこの記事にまとめた。
Blenderユーザーのための解説
Blenderから3DCGに入るとBlenderの常識が3DCGの常識のように思われるかも知れないが、Mayaなどのオートデスク製品が標準として解説され理解している人も多いだろう。この記事では、Blenderの常識なのか3DCG全般の常識なのかについてもコメントしておく。そうすることでDCCツールの一般常識と、各ソフトウェア独自の呼称などの違いが理解できれば、以後の理解がスムーズだから。
ボーンを正しく理解する
上のボーンは、普通にアーマチュアから単一ボーンを追加した場合の上下反転状態。説明のためにヘッドが上、テールが下となるようにしている。
Blenderではヘッド、テールと言うが、一般的にはこれらはジョイントというものだ。なのでこの記事ではヘッドジョイント、テールジョイントとも書く。
ボーンとは実はこの「ヘッドジョイント、テールジョイント」という2つのジョイントを意味する。ジョイント間の8面体は、ヘッドとテールとの関係を目で見て分かるようにするためにあるということと、クリックして選択しやすくするためにあるだけだ。だからカスタム設定で簡単に見た目を変えられる。
なのでBlenderでは編集モードでも「ジョイントを除いた8面体のみ」を選択できない。ボーンの実体とは「2つのジョイント+その間を視覚的に見せるオブジェクト」だから。
つまり、今まで何となくボーンと呼んでいたものの正体は「2つのジョイント」だったりする。それらは正確にはヘッドジョイントとテールジョイントなわけだ。
ボーンとは?「ヘッドジョイントを中心に回転するもの」
理解ができたところで普通のボーンの状態で解説する。
次にボーンの回転特性。ボーンはヘッドジョイントを基準として回転する。Blender 2.93系からは標準でヘッドジョイントにXYZ軸が表示されるようになった。それまでのBlenderではテールジョイントにそれがあったようだ。だがMayaのボーンを見た場合でもヘッドに軸が表示されるのが一般的だからそれに合わせたのだろう。
だから何なの?と思うかも知れない。
だがこの理解がとても重要なのだ。
Eキーで複数ボーンにした場合
編集モードでボーンをEキーで追加すると上のようになる。ボーンが2つあるのは分かるが、ジョイントが3つしかない。では真ん中のジョイントはヘッドなの?テールなの?
正解は「選択中のボーンで意味が変わる」のだ。
復習。くどいが、ボーンとは「2つのジョイント」を指すのであって、8面体のことではない。8面体はヘッドとテールを視覚的に分かりやすくするためのユーザーインターフェースに過ぎない。
例えば「選択中のボーンは上側か下側か?」という質問は「選択中の2つのジョイントは上側の一組のジョイントなのか下側の一組のジョイントなのか?」という質問と同じだ。
上のボーンを選べば真ん中はヘッドジョイントになるし、下のボーンを選べば真ん中はテールジョイントになる。
上のボーンを回転させると当然ながらヘッドジョイントを基準に回転するし、下のボーンを回転させると一番下のヘッドジョイントを中心に回転する。
何を当たり前のことを?と思うかも知れない。
ところがこの理解は、Eキー操作でボーンを連続作成したときには自動でボーンに親子関係がセットされるというBlenderの自動機能を理解していないと後々困ることになる。
ボーンの追加では「自動的に親子関係」がセットされている
まず大前提としてBlenderではボーンの話になると「オブジェクト・プロパティ」の項目ではなくて「ボーン・プロパティ」の項目の設定に意味が出てくる。ここが罠。
なので編集モードでボーンを選んでオブジェクトの親子関係を見ても何もセットされていないように見えるが、ボーン・プロパティの同項目を確認するとしっかり親子関係がセットされている。
では(編集モードで操作して)この親子関係を切るとどうなるか?
するとジョイントの数が3から4に増えた。そして下のボーンを回転させると、中間のジョイントが実は下のボーンのテールと上のボーンのヘッドが重なっていただけということが分かる。つまり、親子関係があるときには中間ボーンは共通ジョイントであり、親子関係を解除すると各ボーンの必須ジョイントに戻るわけだ。
厳密に言うと、以下の接続オプションのON/OFFでそれらが切り替わる。
なお接続OFFにするとボーンに親子関係があるとこんな感じで点線で親子関係を可視化してくれるわけだ。
いずれの場合であっても、ボーン操作の基準はヘッドジョイント、ということに変わりはない。だが多くのボーンでは、特に人型では関節が離れていることは少ないので親子関係+接続ONのボーンをよく目にする。
例外なのは股関節や肩関節周りだ。骨盤のような幅広いオブジェクトでも「縦長の1本の骨盤(pelvis)ボーン」1つで事足りる。ゴムマットのように可変しないならば面積の大小によらず、1本の棒状のボーンで済む。子ボーンとしては股関節の位置にヘッドジョイントが来るように「大腿骨相当」の子ボーンがセットされることになる。
そのときに黒の点線を見ることになる。
☕ コーヒーブレーク(休憩)
こう考えると、あれ?肩関節ってどこの骨を経由して背骨とつながっているの?と思った。背骨につながっていなければ重力に引っ張られて脱落してしまう(笑)筋肉だけでつながっている気もしないし。(直接的には鎖骨、間接的には肩甲骨が肉を経由して肋骨の後ろ側で支えられている感じ)
解剖学的に面白いと思う。肩甲骨は筋肉で背骨とつながっている気がする。もしBlenderのリグで人体を表現した場合、肩関節はきっと点線で背骨とつながることになると思う。
ここまででボーンの理解ができたと思うので次に進もう。
ウェイトとボーンの関係(親子関係とウェイト値の主従関係)
ボーンを入れたら半自動でウェイトペイントできる。(自動ウェイト塗りの手順は各自学習して下さい。)もちろん手動でもいいし便利なアドオンを使ってもいい。なのでボーン入れはウェイト設定のための必須作業だ。ここまではすんなり理解できるはず。
ボーンのウェイトをメッシュに設定することをスキニングと言う。ま、用語だと思って覚えて下さい。
ウェイト設定(スキニング)が終わったらボーンを回転させるとメッシュが変形する。Blenderではカラフルなウェイトが見える。
赤が選択中のボーン(のヘッドジョイント)に100%追従するメッシュ、それ以外の色は別のボーン(のヘッドジョイント)からの影響も受けるメッシュ。
だがしかし!どのボーンからも影響を受けない場合の見た目も存在する。紫色の表現だ。下図は頭上の輪っかを選択したときのメッシュの色。ん?紫色のウェイト値はいくら?
ボーンの頂点グループに対してウェイト値が未割り当ての場合はメッシュは紫になる。紫色のウェイト値は存在せず、紫色=頂点グループ設定なし=ウェイト設定値が存在しない、という意味だ。
当たり前すぎて何?と思うだろう。ところが「紫色=ウェイト値設定なし」なのになぜかポージングモードでメッシュがボーンに追従して変形できてしまう。なぜ?
ボーンの親子関係でもメッシュを変形可能
ほとんどの人体ボーンの場合、ボーンに親子関係がある。まずこの理解が重要。そして子ボーンのウェイト値がメッシュにセットされていれば、その親ボーンのウェイトがメッシュに設定されていなくても親ボーンを操作すれば子ボーン以下のメッシュは必然的に親ボーンの回転に追従する。結果、ボーンの親子関係の影響によって、子のボーンを動かさなくても親のボーンを回転させると結果としてポージングが変わって見えることが有り得るのだ。
なので親ボーンを選択した状態ではウェイトが不在で紫色に見えても、子ボーンがあってそこにメッシュへのウェイト値がセットされていれば、結果として親ボーンの変化に追従してメッシュが変形するわけだ。
だから序盤で親子関係の話もしたのだ。
ボーンのポージングは決してウェイト値だけの変形ではなくて、ウェイト元のボーンに影響を与える親ボーンによる変形もあるのだ。親子関係があればメッシュに親ボーンからのウェイト設定がなくてもその子ボーンからのウェイトがあるならば、子ボーンを動かさずともメッシュは親ボーンの回転に100%追従することは明らかだ。
なのでボーンによる変形とは、
- 【直接的】ボーンからのウェイト値による変形(ボーンのヘッドジョイントの回転に何%追従するか)
- 【間接的】ボーンの親子関係による変形(子は親のヘッドジョイントに100%追従する)
という2つの要素によって変形しているという理解は重要だ。
テールジョイントの罠
2021/08/12 追記。
くどいが重要なのでもう一度説明する。ボーンの回転や移動の基準はあくまでもヘッドジョイントだ。回転時のウェイトもヘッド位置と回転角度が基準となる。
ではテールジョイントは何のため?
一つは接続された親子関係の場合は「次のボーンのヘッドジョイント」を兼ねるために存在する。もう一つは接続が外された親子関係の点線を表現するためにある。
ここまでの解釈で言うと、点線がもし「従属関係」を示すものならば、本来はヘッド同士を結ぶべきだと思う。親子関係が切れたボーン同士の場合、重要なのは親のヘッドの回転角のみだから。
では黒の点線は何を示すか考えた結果、どうやら「接続が外される前の互いの接続先」を示しているらしい。ならば確かに親のテールと子のヘッドなのは理解できる。
だが繰り返しになるが、ボーンの親子関係で重要なことは「親のヘッドジョイントのみ」なのだ。
他は飾りなのです。偉い人にはそれがわからんのですよ。
ヘッドジョイントがボーン・ポージングの回転時の軸になる。親のテールジョイントはどうでもいい。だがもし子ボーンに接続されているならば、それは子ボーンのヘッドジョイントになるので、すなわち親ボーンのテールジョイントは重要ということになる。
こうなると最初のたった2個のジョイントとボーンへの理解が重要になることが分かってもらえたと思う。
点線の親子関係の表現に本質的な意味はない。単純に「もし接続していたらどこにつながるか」を示しているだけだ。重要なのは常に「親のヘッドジョイントの状態(位置と回転角度)」なのだ。
追記終わり。
アーマチュアって何?
これはBlender独自の用語。3DCGの一般的な呼び名はスケルトンというものだ。なのでBlenderでのアーマチュア=スケルトンと覚えて間違いない。
ではアーマチュア(スケルトン)とは何?
これは簡単にいうと「親子関係のあるボーンの集団」のことをアーマチュア(スケルトン)と言う。親子関係が無ければ個別のアーマチュアを構成することになる。通行人Aのアーマチュアと通行人Bのアーマチュア、というように。
そして前述したように、ボーン同士の親子関係でポーズ自体も変えられるから「アーマチュアによるポーズ変形」という表現は正しい。だからこそ初心者は「アーマチュアで変形なの?ボーンで変形なの?どう違うの?」となるわけだ。どっちも正しいが注目している規模が違う。アーマチュアならば人物全体のポージングのことを言おうとしているし、ボーンならば手足など一部の変形について言おうとしている。
ボーンにも2種類ある(デフォームボーンとは?)
ここまでの理解では、ボーンはメッシュにウェイトをセットするために必要なものだ。そして3DCGでは一般的に、かつ大原則として「ボーンのポーズ変更で」メッシュを変形させる。なのでこのメッシュ変形用のボーンのことを特にデフォームボーン(Deform Bones)と言う。
デフォームボーンと無印ボーンの違いは何?と思うだろう。実はここまでで「ボーン」と呼んでいたものは「デフォームボーン」なのだ。
ほとんどの3DCG解説記事では「ボーン=デフォームボーン」を意味している。だがWeb上でボーンとデフォームボーンの違いを日本語で解説している記事はほとんど見たことがない。だからこそこの記事に価値があると思っている。
というのも、メッシュを変形させないボーンの使い方があるのだ。例えばIKで肘や膝の曲げ方向を指定するボーンや、キャラクターの位置を指定するためのボーンなど、ボーン制御用のボーンもあるのだ。(IKを学べば必ず出てくるポールターゲットで指定するボーンや、最上位に配置されるルートボーンなど)
さて、デフォームボーンはメッシュのウェイト元であり必須だが、この別の「ボーン制御用のボーン」にはウェイトが必要ない。というか基本的にはウェイトを設定してはいけない。このボーンはデフォームボーンを制御するためのインターフェースなのだ。(上記の肘を制御しているボーンは次で説明する「リグ」なのだ。)だからBlenderの場合、リグ用途として仕込まれたボーンについては多くの場合でボーンの変形設定チェックボックスをOFFにしているはずだ。
変形と表示されているが、英語インターフェースでは「Deform」と表記されている。なので意味としては、
- Is this a deform bone?
- これはデフォームボーンですか?
の Yes/No チェックボックスなのだ。これはボーンでメッシュを変形させる/させないの意味ではなくて「このボーンをデフォームボーンにする/しない」の意味なのだ。(なので例えばポーズモードでSキーによるボーンの拡縮変形そのものは可能だがメッシュには何の影響も与えない=変形させない。)
BlenderではこのチェックボックスをOFFにすることによって、もしウェイト値がセットされていたとしても強制的にウェイト値によるメッシュ変形が無視される。ボーンとデフォームボーンとの使い方を明確に分けている仕様だ。
例えば既存のセットアップ済みモデルを使って、ポーズモードで指先などの末端ボーンで試すと分かりやすい。(中間ボーンは前後のボーンの影響を受けて変形するので変化が分かりにくい。メッシュが前後のボーンから影響を受けていれば中間ボーンを「非変形ボーン」にしても、結局は親ボーンの影響を受けるので違いが分かりにくいのです。。。)
上手く伝えられないのでとにかく試してみて😱
リグって何?ボーンとどう違うの?
で、このデフォームボーンを制御するためのインターフェースのことをリグという。
なのでリグとは、簡単に言うと、「デフォームボーンを制御する仕組み+そのユーザーインターフェース」なのだ。2つも機能がある。例えばこれは、足元に設置されたボックスを移動させるだけで勝手に膝が曲がってくれる。しかも逆関節にならないような仕組みも導入されている。(細かく言うとIKセットアップ済みの先端ボーンにリグを関連付けている状態)
なのでユーザーは足元のボックスをマウスで移動させるだけで、キャラクターは自動的に膝曲げスタイルになってくれる。
リグはコントローラーなのだ。ゲーム機のコントローラーみたいなイメージでいい。デフォームボーンをコントールするための手段、ユーザーインターフェース。
楽ちんだ!これがゲームキャラやムービーでの歩行の場合、ボーンを1つずつ動かすよりもリグを導入してアニメーションさせた方が効率的なのは間違いない。そういう「楽するための仕組み」としてリグが誕生した、とも言える。なので、リグには大抵の場合は複数のボーンの状態を同時に変更する機能が与えられている。
なら、1つのボーンを1つずつ制御するならばリグなど不要?とも思えるが、それはFKでの話。もしIKで制御している場合には、ポージング状態で1つのデフォームボーンだけを制御するためのリグは必要になる場合もある。
IKモードを利用しつつ(IK制御をキープしたまま)、指定した1つのボーンのみを制御したい場合には1つのボーンに対して1つのリグ(コントローラ)があったほうが便利な場合もあるのです。
FK?IK?各自で学習して下さい。基本事項ですので……。
IKは便利な時もあるが、細かいポーズ付けではFKの方がイメージ通りに仕上がりやすい。例えば足のポージングは確かにIKが入っていると楽だが、逆に手にIKが入っていると思った通りのポージングにならず、最初から肩から指先に向かってFKでポーズ付けした方が早くてイメージ通り、という場合もある。でも腕全体としてはIKコントロールも生かしたい。そういうときには1ボーンに1リグの仕込みが生きる。
リグをウェイトの元にしない
前に書いたように、ウェイトの基準はあくまでもデフォームボーンであるべきだ。なので基本的にはリグ用のウェイトが設定されていてはいけない。(応用的にはリグにウェイトをセットするほうが効率的な場合もあるが割愛。)
この画像はAuto Rig Proの例だが、リグからはウェイトは設定されていない。
デフォームボーンにはしっかりウェイトが設定されている。
そしてポーズモードにしてデフォームボーンを動かそうとしても動かない。なぜならばトランスフォームがロックされているから。
そしてこのデフォームボーンを動かす仕組みとして、デフォームボーンの親にリグの実体であるボーンが設定されている。
ん?輪っか=リングの見た目なのにボーンなの?これはカスタムシェイプという機能によってボーンを別の見た目に変更しているから。
カスタムシェイプ
画像ではリグは8面体ではなくリングだったりキューブだったり。なぜ?これはBlenderのカスタムシェイプという機能で「見た目」を通常のボーンからユーザー指定の形に変えて表示させているだけだ(見た目上の形状の差し替え)。だがどう見えていても実体はボーンなのだ。そしてボーンをデフォームボーンとしてではなくてリグとして使うためにはボーンとは違う見た目の方が色々と都合がいいのだ。
リグのユーザーインターフェースには、
- デフォームボーンと区別しやすいこと
- マウスで操作しやすいこと
この2つが要求される。なので多くの場合にはカーブオブジェクトのカスタムシェイプが割り当てられている。(カーブオブジェクトは面のないオブジェクトなのでレンダリングされないことも好都合だったりする。)
またリグの仕込みが終わっていればウェイトの元になるデフォームボーンは表示されている必要がないので、非表示で運用されることが多いだろう。
こんな具合にリグはデフォームボーンの制御機能とユーザーインターフェースという2つを兼ねるので、優れたリグの仕込み(セットアップと言う)は大変な作業なのだ。なので優れたリグのセットアップは、リガーと呼ばれる専門家による職人技だ。優れたリグはモーションを付ける工程の作業効率に大きく関わるから、キャラクターアニメーションではセットアップはとても最重要なポイントになる。
例外的にデフォームボーンをシェイプにする場合もある
ここまでの説明を真面目に実施すると、UIとしてのリグとデフォームボーンとを毎回ペアで作らなければならないの?となってしまう。だが実際には「これはユーザー(アニメーター)が困らないだろう」という部分については、直接デフォームボーンを表示上でリグの見た目(カスタムシェイプ)にして「リグっぽく見せてしまう」場合もある。
リグの存在価値は「ユーザーやアニメーターがポーズを制御しやすいこと」このためにあるわけなので、形式的なことよりも制御のしやすさを優先すれば、色々と応用的な実装が可能だ。
ただ、これをあまりにも「Myローカルルール」でやり過ぎると、第三者は使いにくくて大混乱する。なので、基本的にはリグでデフォームボーンを操作し、デフォームボーンにウェイト値がセットされている、という共通理解でいいと思う。上記はあくまでも些末な部分の効率化対策だと思って欲しい。
(でも現場ではよくある実装だったりする。)
【まとめ】
- ボーンの真の姿は「ヘッドジョイント」と「テールジョイント」
- ボーンはヘッドジョイントを基準に動く
- ボーンは親子関係があって親のヘッドの変形に従う
- 親子関係のあるボーンの集団のことをアーマチュアという
- アーマチュアは3DCG業界では一般的にスケルトンという
- ウェイトの元になるボーンのことを特にデフォームボーンという
- デフォームボーンを制御するボーンのことをリグという
- リグは一般的に複数のデフォームボーンを同時に制御できる
- リグはカスタムシェイプで「別の見た目」にされている
- 基本的にはリグをウェイトの元に指定しない
- 応用的には、1ボーンを1リグで制御する場合にはボーンを直接リグ(のUI)にする場合もある
まとめてみると結構重要な情報がたくさんあった(笑)こりゃ確かに初心者にとってはとっても分かりにくいわけだ。
ここまででこの記事は終了です。
(おまけ☕ 静止画やフィギュア前提の話)
【おまけ】静止画やフィギュア前提ならばリグは不要?
静止画用のポージングモデルや、フィギュア用途のポージングならば、リグで楽する意味がほとんどない。リグはデフォームボーンを便利に制御できる反面、そのリグの挙動を理解しないと使えないというデメリットもある。そしてポージングによっては使いにくい場合もある。
そしてもしFKのみならば、リグはなくても問題ないことになる?
私は問題ないと思っている。直接デフォームボーンをFKで変形させればいいわけだから。The シンプル。
デフォームボーンと、その影響を受けるメッシュオブジェクト。1対1。以上。面倒なことは何もない。ウェイト塗りの調整も簡単だ。リグのように何かを隠したりカスタムシェイプも必要もない。せいぜい8面体をスティックに替える程度でいい。
非アニメーション用途ならリグは不要
これが今のところの私の結論だ。シンプル。もちろんAuto Rig Proなどで「便利に使えるリグ」が理解できて使いこなせるならば使ってもいいだろう。Auto Rig Proにはもちろんリグ機能をOFFにするスイッチがちゃんと用意されているので(IK/FKスイッチ)、それでリグ機能をOFFにしてFKでポージングさせることもできる。
今回はAuto Rig Proで説明したが、別にRigifyや手付けで自動ウェイトから調整してもいいと思う。要するに、やることは一緒だ。ボーン入れてウェイトを設定して調整するだけ。静止画やフィギュア用途ではリグはなくても構わない。リグが威力を発揮するのはゲームやムービーなどのアニメーションだ。静止画用途ではリグがなくても何とかなる。
ただしAuto Rig Proは名前の通りリグでポージングするように自動でセットアップされるわけだからそこからリグを外してFKでデフォームボーンだけの制御をしようとすると一手間かけないといけない。Rigifyなどのほうがシンプルで分かりやすいのかも知れない。各自で試行錯誤すべし。
複雑なことを簡単にやろうと思うと、やはり色々と試行錯誤が必要だ。何にせよ、どんなツールでスキニングしていくかは要検討だ。(だがAuto Rig Proによる全自動リグ入れモデルの利便性も捨てがたい。だが使い方が難しい。よく分からん。)
色々試行錯誤しないと。
というわけで長文になったが、これを一通り読めば「アーマチュア、ボーン、リグ」の正しい知識が得られたはずだ。
あとはここからウェイト塗りの知識を補充すればメッシュのポージングは自由自在だろう。
くどいが静止画・フィギュア用途限定のポージングの話だが。
今回の創作活動は約3時間30分(累積 約2,521時間)
(746回目のブログ更新)
筆者はAmazonアソシエイト・プログラムに参加しています。(Amazon様の商品を宣伝することで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下の商品名や画像アイコンをクリックしてからAmazon様で何かお買物をして頂ければそのご購入総額の1~2%が私に寄付されます。クリック後に別の商品のご購入でもOKです!誰が何を買ったかは私に通知されませんのでご安心下さい😊
また当サイトは楽天アフィリエイト、バリューコマース Yahoo!ショッピング アフィリエイト、および第三者配信の広告サービス(Googleアドセンス)を利用しています。