ボーンでモデルを変形させる最も基本的な行程
ボーンを扱うことでできることは非常に多いのですが、まずは基本をしっかり押さえることが大切です。 実際に作業を伴った方が分かりやすいと思いますので、Blenderおいて最も基本的なボーンによる変形を実現するための行程を紹介していきます。
今から行う行程をリストにすると以下のようになります。
- モデルを作成する
- ボーン(アーマチュア)を設置
- ボーンの名前を整える
- ボーンの名前と同じ頂点グループを対象のモデルに作る
- ボーンによって影響を受けさせる頂点を頂点グループに所属させる+頂点ウェイトを設定する
- アーマチュア(ボーン全体)と変形対象のモデルの親子関係を作る(モデルがアーマチュアの子になるようにする)
- モデル側にArmatureモディファイヤーを設置しArmatureを指定する
- ポーズモードで動きを確認する
最も基本的な工程を体験してもらうために、すべて手動で行う方法になります。そのため少し行程が多くなっていますが、ボーン変形にはいろんな要素が関係しているため、1からやるとしたら…をしっかり押さえて頂けたらと思います。
作業前にBlenderを日本語環境で使っている方は、プリファレンス→インターフェース→言語→新規データのチェックを外してください。
これは新規データを日本語名で作らせたくないための処置です。日本語が使われているとボーン作業のみならず様々な場面でトラブルの原因になる場合があります。
モデルの用意
ボーンで変形させるモデルを用意しましょう。ごく簡単なモデルの方が分かりやすいと思いますので、単純な円柱を使いたいと思います。
Shift+Aなどで追加メニューから円柱(Cylinder)を出して画像のような感じに編集モードで長く伸ばして、Ctrl+R等で21分割してください。21分割を指定しているのは、この円柱を2本のボーンで変形させる際にちょうど半分の位置に頂点ループがあってほしいためです。奇数であれば21分割以外でも大丈夫です。

アーマチュア(ボーン)の設置
アーマチュア追加
次にアーマチュアを設置します。オブジェクトモードに戻り、Shift+Aなどで追加メニューから、アーマチュアを選択します。
Blenderではボーンのことをアーマチュアとも呼んだりします。英語だとarmatureでこれは「骨組み」と訳されます。明確に用語違いを説明するのはむずかしいですが、Blenderの中での文脈であれば、一本一本の骨格=ボーン、骨格全体=アーマチュアと言った感じの解釈になろうかと思います。 他のツールだとアーマチュアと同じような意味では、スケルトンという呼称を使うことが多いように思います。
ボーンを見やすくする
アーマチュアを追加すると、四角錐の上下にボールが付いたようなオブジェクトが一つ追加されます。(これ以降一つ一つのアーマチュアはボーンと呼びます)
おそらく円柱に隠れて見えないとおもいますので、アーマチュアを選択したままの状態でオブジェクトプロパティ(この場合だと棒人間のアイコン)タブを開き、ビューポート→最前面にチェックしてください。これで今設置したボーンが透けて見えるようになります。


ボーンを設置するとアウトラインには Armatureというオブジェクトができていると思います(このようにBlenderではアーマチュアはボーン全体の名称という意味があります)

アウトライナーでオブジェクトの内訳をすべて表示させるには、アウトライナー上部にあるアイコン(制限の切り替え)から「オブジェクトの内容」にチェックを入れてください。
ボーンの位置調整・サイズ調整を行う
Armatureを選択した状態で再度編集モードに戻り、今設置したボーンの位置調整をします。ボーンは先端・後端のボールそれぞれと、中間の四角錐を個別に選択することができますが、いまはボーン全体の位置を変えたいので中間の四角錐をクリックして選択してください(先端・後端のボールも一緒に選択されます。つまりボーン全体を選択する場合は四角錐部分を選択すればよいです)
ボーンの各部位にはそれぞれ呼び名があります。四角錐部分がBody(ボディ)、四角錐の太い方のボールをヘッド(Head)ないしルート(Root)、四角錐の細い方のボールをテール(Tail)ないしティップ(Tip)と言います。
そのままZ軸方向、つまり円柱の下側にボーンの下のボールが位置する程度まで移動させます。

今度はボーンの上のボールのみを選択します。そして円柱の中間くらいに位置するように移動させます。ボールを移動させると四角錐も伸び、全体的にボーンが大きくなりますがそれで問題ありません。

新しいボーンを増やす
次にボーンを増やします。先端のボールを選択したままで、Eキーを押し移動してみてください。すると新たなボーンが生えてきたと思います。これは垂直に設置したいのでZキーを押してZ軸に沿うように移動させてください。おおよそ円柱の上に2個目のボーンの先端が位置するくらいまで移動すればOKです。
これで円柱に沿った形にボーンが2本設置できました。お気づきの通り、この2本のボーンの接合部(中間のボール部分)が関節となり、円柱を変形させることになります。

頂点グループを作る
今度はボーンと円柱の頂点の関係を構築する必要があります。
基本的にボーンで変形が行えるのはポリゴンでつくられたモデルになります。用意した円柱はポリゴンで作られておりつまり頂点によって構築されていますよね。
頂点を動かすことで変形が実現されるのですが、ボーンを動かしたときにどの頂点がそのボーンに影響をうける(つまり変形する)のかを決める必要があります。
ボーンに限りませんが、Blenderではデータ識別に「データ名」を使います。たとえばボーンと頂点グループの関係性もデータ名で解釈されます。
つまりここではボーンの名前と頂点グループの名前のことです。ボーンの名前と頂点グループの名前を同じにすることで、「この頂点グループは○○ボーンの影響を受けますよ」という解釈になります(実際には名称一致意外にも条件が必要になりますが後述します)
Blenderでは違うデータ種類であれば同名が許されます。ボーンと頂点グループは種別の異なるデータなので同名を付けることができます
ボーンの名前を確認・変更する
まずボーンの名前を確認しましょう。先ほどは特に名前などは決めずにボーンを設置しましたが、実際どんな名前になっているでしょうか。
ボーンの名前は、 アーマチュア(Armature)を選択した状態で編集モードにはいり、ボーンを選択して、ボーンプロパティタブで確認できます。(アウトライナーでオブジェクトの内容を出している場合はアウトライナーからでも確認できます)

最初の設置したボーンは「Bone」、2番目は「Bone.001」となっていると思います(ボーン設置をやり直したりすることで名称が異なる場合があるかもしれませんがこの後で書き換えるので特に問題ありません)つまり、この名前と同じ名称をもつ頂点グループを円柱側につくれば、それぞれのボーンに影響をうける頂点を設定することができます。
ボーンの名前はできる限りその部位を簡潔に表す名前が好ましいので、それぞれのボーン名を変更しましょう。名称欄をクリックすると書き換えができます。((アウトライナーでオブジェクトの内容を出している場合はアウトライナー上で当該ボーンを選択してF2を押すことでも名前が変更できます )
Bone → Bottom_bone
Bone.001 → Upper_bone
としました。


ボーン名と同じ名前の頂点グループを作成する
次に円柱側に頂点グループを作りましょう。円柱を選択し、オブジェクトデータプロパティタブを出します。

一番上に頂点グループの欄があるので、右側の+アイコンを押し、一つ頂点グループを作ってください。デフォルトではGroupと言う名前になっています。これをBottom_boneに変更してください。Groupを選択した状態でダブルクリックを押すと名前を変更することができます。同じようにもう一個頂点グループを作り、Upper_boneにします。

いまこの頂点グループはどの頂点も所属していない状態で空です。頂点をグループに所属させていく作業をします。
円柱を選択した状態で、編集モードに入り、真ん中の頂点ループを含めた下側半分の頂点をすべて選択します(選択漏れが無いように視点を変えるなどして確認してください)

この状態でCtrl+Gで頂点グループメニューを出し、アクティブグループを設定からBottom_boneを選択します。これで現在の作業対称の頂点グループがBottom_boneになりました。
次に同じくCtrl+Gで頂点グループメニューを出し、アクティブグループに割り当てを選択します。これで今選択されている頂点がBottom_boneに所属することになりました。

ショートカットではなくタブからでも作業できます。選択した頂点を割り当てたいグループを選択して 割り当てボタンを押すと上記と同じ状態になります。やりやすい方法で構いません。

次に円柱の上半分を選択して、先ほど同じ要領で今度はUpper_boneに割り当ててください。

ちゃんと割り当てされたかを確認するには、タブの選択、選択解除をすると、割り当てられた頂点が選択されたり解除されたりするのでわかりやすいです。
頂点ウェイトの設定
ボーンと頂点グループの関係性を構築する際、頂点グループとともに頂点ウェイトという値を設定する必要があります。
しかし、実は頂点グループに頂点を割り当てした時点で頂点ウェイト値も同時に設定されています。頂点グループに頂点を割り当てする場合、デフォルトでは頂点ウェイトが1.000の状態で割り当てされることになります。
頂点ウエイトとは、頂点一つ一つに0.000~1.000までの値を持たせておいて、その値を参照することでその頂点がどのくらい影響を受けるのかを決めるものです。ボーンだけではなく、モディファイヤーなどの影響量をコントロールしたりするためにも使われるため、Blenderをより深く使っていくとボーン工程以外にもウェイト作業が発生する場合があります。
原則的にウェイトは1.000が最高値になりますので、1.000が設定されている頂点は100%影響を受けるという意味になります。
今回の作例では単純にボーンの影響を100%受ける状態にできればOKなので、頂点グループに割り当てと同時に設定される頂点ウェイト1.000をそのまま利用している形になります。
頂点ウェイトがどうなっているのかは、頂点を選択しアイテムタブで頂点ウェイト項目にて確認できます。下図の頂点はUpper_bone頂点グループに所属しており、かつ頂点ウェイトが1.000であるということがわかります。

今回の作例では頂点ウェイトの細かいコントロールはしていませんが、頂点ウェイト設定自体は省略していないことは留意してもらえればと思います。
アーマチュアと円柱オブジェクトの親子関係を作る
次に、アーマチュア(ボーン全体のこと)と円柱の親子関係を作ります。いま頂点グループ名とボーン名を合わせることで、頂点的にはボーンとの関係性を構築できたのですが、オブジェクトとしての関係性はオブジェクト同士の親子関係が必要になります。
簡単に言うと、円柱はアーマチュア(ボーン全体)の支配下、つまり「アーマチュアの影響によって変形させられる側」になるので、アーマチュアの子とする必要があります。
オブジェクトモードに戻り、円柱を選択してからアーマチュア(ボーン)選択します。(オブジェクトモードではボーン一本ごとの選択はできず、ボーン全体、つまりアーマチュアが選択されることになります)
Ctrl+Pを押してペアレント対象メニューを出し、オブジェクトを選択します。

するとアウトライン上では以下のような状態になり、円柱(Cylinder)がアーマチュア(Armature)の子となったことが分かります。

アーマチュアモデファイアーを設置する
さらに、円柱を選択してモデファイアープロパティにて、アーマチュアモディファイヤーを設置し、オブジェクトにArmatureを選択します(このArmatureはオブジェクト名としてのArmatureのことです)

アーマチュアモディファイヤーは、今まで行ってきた頂点グループとボーンの関係、オブジェクト同士の親子関係を実際の変形に結びつけるためのモディファイヤーです。Blenderでのボーンによる変形では基本的にこのモディファイヤーがモデル側に必須になります。
これで、円柱をボーンで変形させる準備がすべて整いました。
ポーズモードで実際に変形させてみる
ボーンによる変形を確認するには、ポーズモードでボーンを動かす必要があります。アーマチュアを選択した状態で、ポーズモードに移行してください。

ポーズモードでボーンを選択すると青く選択されます。

試しに動かしてみましょう。上側のボーンを選択して、GキーでもRキーでも構いませんので押して、マウスを動かすと、ボーンの角度が変わり、それに追従して円柱も変形することが分かると思います。

まとめ
これがBlenderにおけるボーン設置のもっとも基本的な工程になります。
今一度まとめると以下のような行程を行いました。
- モデルを作成する
- ボーン(アーマチュア)を設置
- ボーンの名前を整える
- ボーンの名前と同じ頂点グループを対象のモデルに作る
- ボーンによって影響を受けさせる頂点を頂点グループに所属させる+頂点ウェイトを設定する
- アーマチュア(ボーン全体)と変形対象のモデルの親子関係を作る(モデルがアーマチュアの子になるようにする)
- モデル側にArmatureモディファイヤーを設置しArmatureを指定する
- ポーズモードで動きを確認する
円柱と言う簡単なモデルを2本のボーンで変形させるだけの例ですが、実際にボーンでモデルを変形させるとなると意外に工程が多いことがお分かり頂けると思います。
ただ、上記は実直にすべて手動で行ったために、行程が増えてしまっている部分もあります。またボーンに関してはまだまだ多数の要素があり、この作例だけではとてもボーンのすべてを説明したことにはなりませんが、最小限ボーン変形に必要な工程をすべて手動で行っている例になりますので、この例を習熟してもらうことで基本に立ち返ることができるかと思います。
次回の記事では、この基本を掘り下げて、Blenderにおけるより実践的なボーンの行程や知識を紹介させて頂きます。