Blender 2.8 の使い方 (12) アーマチュア (ボーン)

メッシュの変形

Blender で作成した 3D のモデルを動かしてアニメーションさせるにはどうするのでしょうか。 今回は 3D のモデルに骨格 (アーマチュア) を埋め込んでモデルを変形する方法を見てみましょう。 Blender では ボーンという表現とアーマチュアという表現が両方使われていますが、 同じものと考えて問題ないでしょう。

骨 1 個ならボーン、複数あったら骨格、アーマチュア、スケルトンといった感じでしょうか。

ボーンによるメッシュの変形の仕組み

長方形が横の2つ並んだ状況を考えます。 中間の頂点は両側の長方形に共有されるため、頂点の数は 6 になります。 中央の黒い線と水色の線は、この図形に埋め込まれたボーンです。 黒が親で、水色が子のボーンとします。

水色のボーンが回転(関節が曲がる)と、水色のボーンに所属している頂点 (図の赤と青の点) も回転します。 これら中間の頂点は、黒のボーンと水色のボーンの両方に属しているため、 最初に独立した頂点として位置を計算して、その後に位置の平均 (黄色の頂点) を頂点の位置とします。 結果として、黄色の線のように変形されたポリゴンとなります。

vertex_and_bones4.png

以上は平面で、2つのボーン (局所座標系) に影響されて移動した頂点座標を、 単純平均 (重みがそれぞれ0.5) して求めた頂点座標を使っています。

頂点の変形に影響するボーン (局所座標系) が 2 つ以上で、 ボーンの変形に対して影響を受ける頂点の重みが色々な場合も考えられます。 頂点グループやウェイトペイントで頂点座標がボーンの変形によって影響される割合を設定します。

Blender も含めて一般的に 3DCG の内部では、頂点座標にボーン (局所座標系) を表す 4x4 行列乗算して、新しい頂点座標を計算することでメッシュを変形しています。 頂点座標もボーンもシーンに多く存在するため、内部的には膨大な計算量となります。

アーマチュアの基本操作

Blender のボーン(アーマチュア)の基本的な操作を細長いメッシュを使って試してみます。

まずはデフォルトの立方体から始めます。

bone00.png

[SZ]とキーを押して、マウスを移動して縦方向を拡大して四角柱にします。 「オブジェクト/適用/拡大縮小」を選択してスケールを1.0 に戻します。 編集モードで拡大した場合はスケールが変化しないので「オブジェクト/適用/拡大縮小」の操作は不要です。

bone01.png

編集モードに変更します。

bone01a.png

ループカットを選んで、マウスクリックを繰り返すか、 「ビュー/最後の操作を調整」で表示されるパネルで適当な回数分割します。

bone01b.png

ビューポートオーバーレイからワイヤーフレームにチェックを入れます。

bone02.png

オブジェクトモードでもメッシュの構造が表示できます。

bone03.png

アーマチュアの追加

「追加/アーマチュア/単一ボーン」を選択します。

bone04.png

プロパティのオブジェクトデータプロパティタブで、 ビューポート表示パネルから「最前面」にチェックを入れると、 オブジェクト内に埋め込まれたアーマチュア (ボーン) が表示されるようになります。

bone05.png

ボーンの表示方法と操作

ボーンの表示方法には 5種類あります。 まずいちばん一般的な「八面体」です。 太い側の球は「ヘッド」と呼び、関節の根元(曲がる側)に相当します。局所座標系の原点に相当します。 ボーンが伸びていく方向に向けて細くなり、細い方の球は「テール」と呼び、基本的に別のボーンの原点に接続します。

bone_type_0oct.png

「ステイック」は線で表されて、「ヘッド」と「テール」は同じように円で表示されます。

bone_type_1stick.png

「Bボーン」はベンディボーンのことで、曲げることのできるボーンとなります。 プロパティのボーンのベンディボーンパネルで分割数などを設定できます。

bone_type_2BBone.png

ボーンの影響範囲を表す表示方法です。 大きければ広い範囲までボーンの影響が及びます。

bone_type_3Envelop.png

「ワイヤーフレーム」は「ステイック」と同じように線で表示されますが、「ヘッド」も「テール」も表示されません。

bone_type_4Wire.png


ボーンの操作

ボーンの移動

ボーンの「八面体」部分を選択した場合、移動[G]するとボーン全体が移動します。 「テール」を選択して移動すると、ヘッドの位置は変わらず、テール部分が移動するため、ボーンは伸び縮みすることになります。「ヘッド」選択して移動すると、テールの位置は変わらず、関節の位置が移動してボーンは伸び縮みすることになります。 [G] キーを押してマウス移動で移動させるとき、シストキーを押すと移動距離を細かく調整できます。


ボーンの回転

ボーンの「八面体」部分を選択した場合、回転[R]するとボーンの中間部分を中心に回転します。 ヘッドを中心にボーンを回転させるためには、 テールを選択して回転[R]するとヘッドを中心に回転します。 [R] キーを押してマウス移動で回転させるとき、シストキーを押すと回転角度を細かく変化させることができます。

ボーンの追加と埋め込み

[S] キーでアーマチュア(八面体)上端が四角柱のモデルと一致するまで拡大します。

bone06.png

[G] キーを押して下に移動します。

bone07.png

編集モードに切り替えて、アーマチュアの細い方の先端をクリックして、[EZ] キーを押してマウスを移動することで、Z軸方向にアーマチュアを追加します。 または「アーマチュア」メニュー内の「押し出し」を選択してマウスを移動すると、その方向にボーンが追加されます。

bone08.png

オブジェクトモードに切り替えて、四角柱を選択します。

bone09.png

シフトキーを押しながらアーマチュアを選択してアクティブにします。 四角柱とアーマチュアが選択状態になり、アーマチュアがアクティブなオブジェクト(明るい色で表示)になります。 シフトキーを押しながら複数のオブジェクトを選択すると、 最後に選択したオブジェクトがアクティブになり、 もう一度クリックすると非選択状態になります。 右上部のアウトライナーで、Cube と Armature が同じレベルになっていることが確認できます。

bone10.png

「オブジェクト/ペアレント/自動のウェイトで」を選択します。 右クリックで表示されるコンテクストメニューから「ペアレント/自動のウェイトで」を選択することもできます。

bone11.png

右上部のアウトライナーで、Cube が無くなっていることが確認できます。正しく親子関係を設定できた場合は、Cube は Armature の下のレベルに移動します。 このアーマチュアを選択して、ポーズモードに切り替えます。

bone12.png

ポーズモードでアーマチュアを選択すると水色で表示され、 [R] キーで回転させると、四角柱も変形することが確認できます。 プロパティのスケルトンパネルにある「ポーズ位置」では、 ポーズモードで変形された状態が表示されます。

bone13.png

「レスト位置」では変形前の状態が表示されます。

bone18.png

スケルトンパネルで「ポーズ位置」を選択していると、 オブジェクトモードに切り替えても変形した状態で表示されます。

bone14a.png

ビューポート表示で「最前面」のチェックを外すと、変形した四角柱が表示されます。

bone14b.png

四角柱を選択して、ウェイトペイントモードに切り替えると、 指定した頂点グループのアーマチュア(ボーン)に対する頂点ウェイトを変更できます。 頂点位置の変更に対する特定のボーンによる影響度が変わります。 赤が1.0、青が0.0を示します。

bone15.png

四角柱のオブジェクトを編集モードに切り替えると変形前の形状に戻ります。

bone16.png

ボーンのミラー押し出しとミラー編集

人間や動物のように左右対称な骨格を作成するために、ボーンのミラー押し出しという機能があります。 普通の押し出しは [E] キーを押して、マウスで向きやサイズを指定しましたが、シフトキーを押しながら[E]キーを押す ([Shift + E]) と左右対称にボーンが押し出されます。

bone20.png

マウスを移動するとボーンの向きやサイズが左右対称に変化します。

bone20a.png

[Shift + E]を押すと連続して左右対称にボーンが押し出されます。

bone20b.png

「X軸ミラー」が有効になっていると、片側のボーンの位置やサイズを変更しても、左右対称になります。

bone20c.png


人型のモデルの場合、手の指の関節までボーンを埋め込もうとすると60ぐらいは必要です。 さらに顔の表情、目の向きといったところまでボーンでコントロールするのは大変そうです。 次回はヒトや動物のボーンの設定(リギング)を簡単に行う、最初から Blender に組み込まれているアドオンである Rigify の使い方を紹介します。


ページ先頭へ


Blender 2.8 の使い方 [目次]

copyright (C) 2019-2020 Jun Mizutani