Blender入門#35:キャラクターアニメーション2(ウェイトペイント)

Share to..

前回のリギングでボーンコンストレイントは特に説明しないと書きましたが、IKという便利な仕組みくらいは説明しておこうかと気が変わりました。が、説明のために先にウェイトペイントについて説明して、キャラクターが動くようになってから説明することにしました。

そこで、今回は前回作成したリグをキャラクターに適用するところから説明します。適用するにはペアレントをしますが、その設定のときにウエイトと頂点グループが重要な機能として使われています。これを理解しておくことがとても重要ですので、その辺も説明します。

 

Step 1

オブジェクトモードでリグで(アーマチュアで)動かしたいオブジェクトであるトミー君を選択してから、「Shift」キーを押しながら、アーマチュアを選択します。そして、「Ctrl」+「P」キーを押してペアレントします。すると、下図のようなメニューが表示されるので、ここでは「自動のウェイトで(With Automatic Weights)」を選択します。

ペアレント設定

 

 

Step 2

アーマチュアだけを選択し、「Ctrl」+「Tab」キーを押してポーズモードに移ります。あるいは、3Dビューのヘッダーにあるモードリストから選択します。

fig2

 

このモードはアーマチュアを動かすためのモードです。頭の部分のボーンを選択して、「R」キーで動かしてみましょう。頭もボーンの動きに追従しているはずです。

ポーズモード

 

Step 3

ここで動作の仕組みを説明します。トミー君オブジェクトを選択し、編集モードに移ります。頂点を全く選択していない状態にします。プロパティ・エディターの「オブジェクトデータ」タブを開き、「頂点グループ」パネルのスロットの中から「Head」を選択します。そして、その下にある「選択」ボタンを押します。

頂点グループ設定

 

すると、図のように頭の部分だけ選択されます。自動で設定したので、オブジェクトの作り方次第で選択された頂点の位置がことなるかもしれません(特に首の辺り)。しかし、ここでの説明ではそのままで進めてください。

ff1

 

このようにボーン名と同じ頂点グループが作成され、その頂点グループに登録された頂点は、同じ名前のボーンにより動かすことができる仕組みになっています。

そして、登録された各頂点がどの程度ボーンの動きに対して追従するかを設定するのが「ウェイト」というプロパティです。先ほどのペアレント設定で自動的にを選択したので、ウェイトも自動で設定されています。それを見るには、3Dビュー上で「N」キーを押したときに表示される「頂点ウェイト」パネルで選択した頂点が属する頂点グループごとにウェイトの値が表示されています。

頂点ウェイトパネル

 

ここで、ウェイト値や属する頂点グループの編集を行うことができます。ここで編集してもいいのですが(時にはここでやった方がはっきり設定できるので)、視覚的に直観的に行う方法があります。3Dビューのヘッダーから「ウェイトペイント」を選択します(あるいは、一旦オブジェクトモードに移り、「Ctrl」+「Tab」キー)。

ウェイトペイントモード

 

すると、図のように色が付いた表示になります。見ての通り、色でウェイトの値を表しています。赤い部分がウェイト値が1を意味しています。そして、青色の部分は0に見えるけど0ではないです。ウェイトの値は0~1までであり、1になるほど強くボーンの動きに追従し、0は追従しません。0と1の間は、下図のように値に応じたグラデーションになります。

ウェイトペイント表示

 

このとき、ツール・シェルフの「オプション」タブを開き、表示された「オプション」パネルの「Xミラー(X Mirror)」にチェックを入れ、「アクティブ」ボタンを押すと下図のようになります。「Xミラー」はウェイト値を編集するときに反対側にも作用するようにするものです。「アクティブ」は同じ頂点グループに属した頂点以外を黒色で表示し、頂点のウェイト値がゼロの部分が黒色にするので判別がつきやすくなります。

fig8

 

操作結果

 

Step 4

ここでのウェイトの設定ではペアレント設定のときに自動で行いました。そのため、100%どこかに不適切な設定がなされます。キャラクターの形状がケースバイケースなのでしょうがないんです。特に腕の動きのボーンではそうなることが多いです。確認していきましょう。

では、頭の部分のボーンを選択して「Alt」+「R」キーで元の位置に戻します。頭の部分は、首と肩の動き方が不適切になることがありますが、分かりにくいので別の部分で説明します。

 

Step 5

テンキーの「1」キーを押して正面にし、上腕のボーン(Arm_upper_L)を選択して、「R」キーで動かしてみてください。下図のように肩の部分やわき腹の辺りも動いてしまい不自然です。

pro1

 

Step 6

ツール・シェルフの「ツール」タブを開き、「ブラシ」パネルの図の部分をクリックして「Subtract」ブラシを選択します。

ブラシ変更

 

Step 7

不自然な部分をマウス左ドラッグでなぞると(ストロークすると)、その部分のウェイト値が減少して最後には0の黒色になります。下図のようにペイントします。なお、ブラシの「強さ」プロパティでウェイト値の減少の強さを調整できます。「半径」はブラシの大きさです。「F」キーでも3Dビュー上で変えることができます。

また、慣れないうちは、マウス左ボタンをストロークさせるのではなく、マウス左ボタンをワンクリックしてペイントを確認しながら行うのも良いかもしれません。

腕を回転させて、修正後の動きを確認します。もし、やり過ぎた場合は、ブラシのタイプを「Brush」や「Draw」ブラシに変えてペイントし直します。このブラシは逆にウェイト値を付けることができます。

pro2

Step 8

確認していると、腕を上げたときの肩の部分が不自然です。ウェイトペイントでは修正が難しい場合もあります。そのときはモディファイアーの順番を入れ替えると良いです(最初からやっておけという話もありますが、理解を深めてもらうために後にしました)。

fig11

 

プロパティ・エディターの「モディファイアー」タブを開くと、このオブジェクトに設定されているモディファイアーが表示されます。上から「細分割曲面」、「アーマチュア」の順番になっているはずです。どちらのパネルでもいいので、パネルの上部ある三角の図が書いてあるボタンを押し、上下の順番を入れ替えます。モディファイアーは上から順番に処理されるので、これでアーマチュアによる変形の後に、メッシュの形状がスムーズになります。

モディファイアーの順番

 

ウェイトペイントをするとき、「Z」キーを押すと、ワイヤーフレームが表示されるので分かりやすいです。

fig13

 

Step 9

ボーンひとつひとつについて動かしては、変形がおかしくないか確認していきます。全部のボーンについて説明しません。以下は主要なところだけ説明します。

腕(Arm_lower_L)を選択して、「テンキー」の「7」キーを押して動かしてみましょう。下図のように上腕の部分が曲げが大きくなると細くなっていくことが分かります。これはキャラクター自体のメッシュ構造にもよります。ポリゴンが少なければ大きな範囲でボーンの動きに追従しようとして、より変形してしまう部分が出てきます。なので、メッシュ構造を修正することで直ることもありますが、メッシュの構造を弄らないで修正する方法もあります。

pro1

 

Step 10

プロパティ・エディターの「アーマチュア」モディファイアーパネルにある「体積を維持(Preserve Volume)」にチェックを入れます。

体積を維持

 

これでボーンを動かしてみましょう。細くならないことが分かります。

体積を維持した後の動き

 

Step 11

大きく歪みそうな部分は、肩のボーン(Shoulder_L)や太もものボーン(Leg_upper)かと思います。以下のように修正しました。

fig15

fig16

fig17

 

ウェイトペイントで直すには限界もあります。私の場合、これ以上の形状の修正はシェイプキーという機能を使ってしまいます。曲げたときに筋肉の膨らみを表現するのもシェイプキーを使うので。また、Blenderにはウェイトペイントについても便利な機能な沢山あります。この辺もBlender2.6マスターブックで書いてます。それらも学習しておくと良いかと思います。

 

12 thoughts on “Blender入門#35:キャラクターアニメーション2(ウェイトペイント)

  • 2015年10月27日 at 3:04 PM
    Permalink

    このサイトのおかげで、Blenderの理解が進みました。ありがとうございます。

    このページを読んでいるときにハマったのが、Step2でポーズをマウスで編集する時に
    「Manipurate Center Point」を有効にしていないとポーズが動かせなかったということです。

    同じところでハマっている人がいたら、3D Viewのメニュー内の左右矢印のアイコンを押してみて下さい。
    こんなところでハマるのは自分だけかもしれませんが・・・。

    Reply
  • 2015年10月28日 at 5:06 AM
    Permalink

    コメントありがとうございます。
    「Manipurate Center Point」が有効だと動かないの間違いではないですか?
    私のところでは有効だと動きません。

    Reply
    • 2015年11月2日 at 11:32 AM
      Permalink

      > 「Manipurate Center Point」が有効だと動かないの間違いではないですか?

      ありがとうございます。その通りでした。アイコンの濃い色・薄い色の認識が逆になってました・・・。

      Reply
      • 2015年11月2日 at 12:34 PM
        Permalink

        テーマによっては見にくいんですよね~

        Reply
  • 2017年7月4日 at 1:18 AM
    Permalink

    Blender初心者です。
    わかりやすいサイト、大変参考になっています。
    一つ質問がありまして、トミー君の関節を曲げるとき、オブジェクトが引き延ばされてしまいます。
    例えば、首を曲げた時、顔の部分が大きく引き伸ばされて、楕円のようになってしまいます。(顔周辺のウェイトはこのサイトのトミー君とだいたい同じのはずです。)
    腰を曲げた時も、腰より上の部分が、縦に引き伸ばされてしまいます。
    どのようにすれば、このような現象を防ぐことができるでしょうか?
    よろしくお願いします。

    Reply
    • 2017年7月4日 at 3:44 AM
      Permalink

      Step1での選択の順番やペアレント設定は指示通り行ったのか確認してください。

      Reply
      • 2017年7月4日 at 11:46 PM
        Permalink

        直りました!
        ありがとうございます。

        Reply
  • 2017年8月3日 at 6:38 PM
    Permalink

    はじめまして、一体成形のオブジェクトにボーンを入れてアニメーションさせていたのですが、あるフレームからオブジェクトが妙な形に変形してしまいます。ルートボーンで移動させていたのを止めて、ルート以下のボーンで移動させてしまったフレーム辺りからです。よろしくお願いします⤵

    Reply
  • 2017年8月3日 at 6:46 PM
    Permalink

    度々すみません。
    先程アニメーションでオブジェクトが変形してしまう、と質問した者ですが、変形のしかたは、お腹や胸の辺りのポリゴンが凹んだり体の厚みが薄くなったりします。

    Reply
  • Pingback:VRChat用人型アバターを作ってみた - Memoid

  • 2018年9月17日 at 6:47 AM
    Permalink

    Just want to say your article is as astounding. The clarity in your publish
    is simply great and that i could think you
    are a professional on this subject. Well along with your permission let me to take hold of your feed to keep up to date with forthcoming post.
    Thank you one million and please keep up the gratifying work.

    Reply
    • 2018年9月18日 at 3:59 AM
      Permalink

      Thank you!

      Reply

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください