Blenderのウエイトペイントのコツがなんとなくわかってきた

いつもの開発と並行してアバターづくりにいそしんでいるのですが、Blenderのウエイトペイントにず~~っと苦しめられておりました。 最近ようやっとどんな感じにウエイトペイントとお友達になればよいか、雰囲気をつかみ始めてきましたので自分なりにまとめてみます。

※これは自分がこのように解釈しているというメモな側面があるので、必ずしも記載内容が正しいとは限らないことをご了承ください。

ウエイトペイントってなに?

モデルに対してボーン(骨と関節)を配置することで、ボーンの回転(姿勢変更)によってモデルを変形させることができます。あるボーンが動いたときに、モデルの頂点がどのくらいつられて動くか?という重みづけを「ウエイトペイント」で行います。

f:id:piyorinpa:20190329000121p:plain
胸まわりのウエイトペイントのようす

たとえば上記のように、胸のボーンに対してウエイトペイントをぬると、以下のように胸まわりを動かせます。青い色は重みが少なく、赤色は重みが大きめであることを表していますが、関節を動かすと重みに応じて頂点が動きます。

f:id:piyorinpa:20190329000713g:plain
胸まわりをうごかしてみる

「ペイント」と言われているとおり、0.0~1.0の範囲内でブラシの値を設定し、塗るように各頂点にウエイトを設定していくのですが、これが慣れないとなかなか難しいのです。ある関節に対するウエイトペイントを設定して「これでかんぺき!」と思っても、ほかの関節のウエイトペイントを塗ると、思っていたのと全然違う動きをしてしまう~~ということを2週間くらいずっと繰り返していました(つらい)。

f:id:piyorinpa:20190329002009p:plain
関節ごとにウエイトペイントを塗る(左:胸ボーン、右:脊髄ボーン)
ある頂点は複数の関節の動きに影響されるので、複数のボーンのことを気にかけないといけないのですが、このへんがよくわかっていなかったのが敗因のようです。 たとえば上記のウエイトペイントの場合、胸ボーンと脊髄ボーンとで、塗られている部分が一部重複している箇所があります。この重複している箇所は、どちらのボーンが動いてもウエイトに応じて頂点が移動することになります。

「じゃあ重ならないように塗れば、あのボーンとそのボーンの関連が~とか気にしなくて楽じゃん」と思うところなのですが、そうすると自然な変形にならないのです。

f:id:piyorinpa:20190329002918p:plain
ウエイトペイントをいい感じにしないと自然な変形にならない

じゃあどうやってウエイトペイントと仲良くなればいいんだ?ということについて私が試行錯誤した記録を書いてみます。

とりあえず塗ったあとでボーンを回転させてみる

※この記事ではBlenderの基本的な操作方法については解説しませんのであしからず。

まずは自動でウエイトペイントを設定できる機能があるので、自動でざっくりとした重みづけを行います。

nn-hokuson.hatenablog.com

そのあとはひたすらボーンを動かしてみます、ボーンを選択して「R」キーを押すとボーンを回転させることができます。回転したボーンは「Alt+R」で元の姿勢に戻すことができるので、安心してぐりぐり動かしていきます。

f:id:piyorinpa:20190329004122p:plain
へそがでている~~

自動でウエイトペイントを設定しても、だいたいはうまくいかないことが多いです。たとえば上記のように上体をそらすとおへそがでてしまったり。。

ある頂点ひとつに対するウエイトを設定してみる

f:id:piyorinpa:20190329012649p:plain
Vertex Weightの数値をいじってみる

ここでウエイトペイントを調整していくのですが、ウエイトペイントモードにしたうえで頂点選択モードにし、Vertex Weightsをいじってみます。選択された頂点におけるボーンごとのウエイトを設定できるのですが、ここをいろいろいじってみながらよさそうな値を探していきます。この過程を繰り返すと、関節に対するウエイトの振り具合などがわかってくるようになります。

上記の画像の例だと、選択した頂点に対して「Hips」「Spine」「Chest」などなどのボーンに対するウエイトを設定できることがわかります。

ボーンの動きに対して頂点が大きく移動してほしい場合はウエイトも大きめに、また、あるボーンに引っ張られたい(固定されたい)ときも大きめに設定する感じなのかな?と私は理解しています。

上記の画像の場合、脊髄まわりのボーンの姿勢変化に対しておへそを隠すには、Hips(おしり)のウエイトを大きくすると、おしりに頂点が引っ張られるのでおへそがかくれそうということが分かります。

設定したらもう一度ボーンを動かしてみて、よい感じかどうかを確かめます。良い感じであれば、周辺のウエイトも設定していきます。さすがに一つ一つの頂点に対してVertex Weightsの値をいじって設定するのは大変なので、Vertex Weightsで設定したウエイトを参考にしながら、ブラシでウエイトを置いていくとよさそうです。

f:id:piyorinpa:20190329011348p:plain
Vertex Weightsの数値を参考にウエイトペイントを「塗って」みる

これをひたすら繰り返し、「ある頂点をこのように動かすにはあのボーンに対するウエイトをああすればいい」という感覚を養っていくと、2週間もかけずにそれっぽいウエイトを設定できるようになりそう~と思います。(じぶんはここまで行きつくのにしばらく時間がかかってしまった。。。)

まとめ

ウエイトペイントつらい~~ってずっと思っていましたが、ようやく友達になりはじめることができそう...という雰囲気を感じ始めることができました。これからもちょくちょくアバター作成をすすめていきたいぞ~。 ではでは。