渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】

【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】

こんにちは、エンジニアのオオバです。

お悩みさん
お悩みさん
  • ボーンをキャラクターに適用して動かす方法を知りたい
  • きれいにアニメーションさせるためにはウェイトが必要?
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    Blenderでキャラクターをモデリングしたらアニメーションをさせたいですよね。アニメーションに必要なのは 「ボーン」「ウェイト」 です。ボーンはいわゆる「骨」。人間や動物も骨が動き、骨に連動して肉が動きますよね。3Dも同じなのです。

    ボーンとあわせて紹介する「ウェイト」も超重要です。 ウェイトとは骨の動く量に対してどれだけ周りの頂点を動かすかを調整する項目 です。この2つはセットで考える必要があります。

    ぜひこの記事をとおしてボーンとウェイトを設定できるようになりましょう。

    前回ボーンをキャラに配置するところまでは完了しました。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_0

    まだボーンを追加していない方はこちらの記事から参照してみてください。

    👉 【Blender】かんたん初心者ボーンの追加方法

    👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

    ボーンをキャラクターに適用する2つのステップ

    ボーンは配置しただけでは何も起きません。 「スキニング」 という作業をすることで各ボーンと各頂点は関連付きます。では、ボーンをキャラクターに適用(スキニング)する手順を順に解説します。

    ボーンをキャラクターに適用する2つの手順

    ①キャラクター → ボーン(Armature)の順に選択

    ②「With Automatic Weights」を実行

    ステップ①キャラクター → ボーン(Armature)の順に選択

    スキニングする際はBlenderのOutliner(アウトライナー)を使います。アウトライナーにはBlender上に配置された全オブジェクトが管理されています。Unityで言えばHierarchyウィンドウのような存在です。

    では、スキニングするためにキャラクターモデルを選択して、ボーンを選択しましょう。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_1

    まずは キャラクターモデル(ここではChara) をクリックしてください。コマンドキー(Windowsの方はCtrlキー)を押しながらボーン(Armature)をクリックしてどちらも選択された状態にします。

    ここで 重要なのは選択する「順番」 です。

    スキニングしたいオブジェクトを選択してから、ボーン(Armature)を選択 するのです。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_2

    するとボーンよりキャラクターモデルの方が 濃いオレンジ色 になったら成功です。以上でスキニング前の準備は完了です。

    ステップ②「With Automatic Weights」を実行

    次に実際にスキニングを実行します。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_3

    Objectモードの状態で、 メニューObject > Parent > With Automatic Weights をクリックしてください。ショートカットは「⌘ + P(or Ctrl + P)」です。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_4

    再びOutlinerをチェックしてみます。すると上図のように Armatureの中にキャラモデルが内包 されます。以上でスキニングは完了です。

    本当にスキニングが成功しているのかボーンを動かしてみましょう。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_5

    Blenderのモードを 「Pose Mode」 にします。

    どこかボーンを1つ選択してで回転させてみましょう。ショートカットは「R」です。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_7

    すると、このようにボーンに連動してメッシュが動き出しました。もし動かないという方は、スキニングの手順をもう1度確認してみましょう。Armatureとモデルの選択順を間違えているかもしれません。

    ボーンを動かすと分かるのですが、 動いてはいけない部分まで動いてしまう箇所があります。 ボーンの影響度を制御するために 「ウェイト」 を設定していきます。

    Blenderでウェイトを設定する3ステップ

    本章ではスキニングしたキャラクターのウェイトを設定していきます。

    Blenderでウェイトを設定する3ステップ

    ①ボーンの可視化

    ②Weight Paintの準備

    ③頭部頂点のウェイト値をWeight Paintで設定する

    ウェイトを設定する方法はいくつも存在します。今回紹介する方法は1つの参考として捉えてください。インターネットを検索するとさまざまな方法がありますので、ぜひ他の方法も調べてみましょう。

    ステップ①ボーンの可視化

    Blender内のキャラクターを見ると分かるのですが、 ボーンはキャラクターのメッシュ内に隠れて見えません。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_8

    この状態では作業しづらいため、ボーンを可視化します。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_9

    ボーン選択した状態で、人アイコン(Object Data Properties)の中の 「In Front」 にチェックを入れます。注意点は ボーンを選択していないと人アイコンは表示されないこと です。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_10

    「In Front」にチェックを入れるとボーンがメッシュより前面に常時表示されます。

    ステップ②Weight Paintの準備

    ここからは実際にウェイトの値を設定していく工程です。「Weight Paint」と呼ばれるツールを使います。 ウェイトとhは頂点ごとに設定される値 です。頂点にブラシで塗っていくようにウェイトを設定していきます。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_11

    キャラクタモデルを選択してモードを 「Weight Paint」 に変更します。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_12

    すると着色されたキャラクターモデルが表示されました。この「色」がウェイトの値です。色の範囲は赤から青です。 赤色が「1.0(最大値)」、青色が「0.0(最小値)」 のウェイト値となります。

    最初から色がついている理由は「ステップ②「With Automatic Weights」を実行」でスキニングした際に自動的にウェイトの値が設定されたからです。自動的に設定されたウェイト値が完璧なら良いのですが、そうはいきません。

    実際にウェイトを設定するとボーンと頂点は以下のような関係になります。

    • ウェイト値が1.0(赤色)の場合、ボーンの動きに対して頂点は100%追いかける
    • ウェイト値が0.0(青色)の場合、ボーンをいくら動かしても頂点は無反応
    • ウェイト値が0.5(緑色)の場合、ボーンの動きに対して頂点は50%追いかける

    といった感じです。 ウェイトの値によってアニメーションのクオリティは大きく左右 するのです。

    ではキャラクターの頭のウェイトを設定していきましょう。 ボーン名は「Head」です。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_13

    上図の①逆三角形アイコン(Object Data Properties)を選択します。リストアップされたボーンの中から②「Head」を選択します。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_14

    すると、頭部が赤く、体の方は青い状態のモデルになります。この状態の何が悪いのかを確認するために、ボーン「Head」を回転させてみましょう。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_15

    すると頭を動かしているのに体も引っ張られて動いてしまいます。これで良い場合もありますが、本記事ではボーン「Head」は 頭部の頂点だけが動くようにしてみます。

    ステップ③頭部頂点のウェイト値をWeight Paintで設定する

    頭部頂点のウェイト値を設定していきます。やるべきことは頭部を含むすべての頂点のウェイト値を0にし、頭のウェイト値だけを1にするのです。

    すべてのウェイト値を0にする

    ウェイトを設定する前にWeight Paintのブラシを設定します。「Brush Settings」からブラシを以下の設定にします。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_16

    • Weight(設定するウェイト値)を0
    • Strength(設定の強さ)1
    • Radiusは各自調整

    ※Brush Settingsが表示されていない場合は「Nキー」をクリックしてみてください。

    ボーン「Head」を選択した状態にします。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_17

    そして、上の動画のように、頂点にウェイトをペイントしていきます。青(ウェイト値 : 0)をすべての頂点に塗りましょう。

    全身「青色」が塗れたら頭の頂点に1を塗っていきます。

    頭部頂点にウェイト値「1.0」を設定する

    再びBrush Settingsからブラシを以下のように設定します。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_18

    重要なのは「Weight」を1.0にすることです。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_19

    頭部頂点だけにペイントしていきます。はみ出てしまった場合は、Weight値を0にして修正しましょう。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_20

    上図のように用に頭部だけ赤が塗られたら完了です。

    この状態で正しくアニメーションするか、モードをPose ModeにしてボーンHeadを選択して動かしてみます。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_21

    すると無事に頭部だけ動くようになりました。

    ウェイト設定後ウェイト設定前
    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_22
    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_22
    頭部だけ動作頭部外も動作

    このようにウェイトを適切に指定することでボーンの動きを適用した頂点を設定することができるのです。

    ボーン「Head」の要領で他のボーンのウェイト値を設定してみてください。

    指定したウェイト値を一発で設定できないときの対処法

    ウェイト値を1.0に設定しているにも関わらず、ワンクリックで赤くならない(1.0に設定できない)ときはFalloffを疑いましょう。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_23

    Falloffを 「Constant」 に設定することで、指定したウェイト値を一撃で設定できます。

    Blenderでウェイト値を設定する方法まとめ

    本記事ではBlenderでウェイト値を設定する方法を解説しました。簡単に内容をまとめます。

    Blenderでウェイト値を設定する方法まとめ

    ①ボーンをモデルに適用する(スキニング)

    ②作業しやすいようにボーンを可視化する

    ③Weight Paintを使ってウェイトを設定

    こんな感じです。3Dモデリングウェイトは必須スキルです。どんなに良い造形物を作ったとしても適切にアニメーションできなければ、その良さは伝わりません。しかし、ウェイトの指定方法はとても地味ですよね。頂点ごとに調整していくのは骨が折れる作業です。

    この小さな作業の積み重ねが素晴らしい作品を生み出すことに繋がると思っています。

    冒頭で述べたとおりウェイト設定は人それぞれのやり方が存在します。何度もウェイトを設定していくうちに自分なりのやり方を手に入れてみてください。

    そして、まずは基本的なウェイト設定の方法をマスターしましょう。この記事を何度も読み返して基本的なウェイト設定を覚えてみてください。1度覚えると3Dモデリングの幅は広がり、そして楽しくなるはずです。

    この記事があなたの人生を豊かにする手助けになるとうれしいです。

    【Blender】キャラクターにボーンとウェイトを設定する方法【初心者向け】_24

    ※最後にジョジョ立ち風ポーズを、ボーンを動かして作ってみました。

    オススメ記事
    検証環境
    • Blender2.93.1