Blenderを覚える日記

箱うし本でBlender基礎の習得を目指す、3DCG初心者の日記。

【箱うし本】STAGE 3-1(後編) 人型キャラクターにボーンを入れてみる

LESSON-14、人型キャラクターにボーンを入れる

今回はキャラクターに1からボーンを入れていく。

f:id:komanotes:20200604155323p:plain
今回用意されているモデル
今回使うのはこちらのモデル、白くまかな?

まずはボーンを作る

f:id:komanotes:20200603184002p:plain
アーマチュアを追加して、前面に表示されるようにした。


f:id:komanotes:20200603184006p:plainf:id:komanotes:20200603184010p:plain
腰から頭までのボーンを作る
1本目を腰のボーンとして、位置と大きさを整える。
それから押し出しを繰り返して頭までのボーンを作った。
正面からの視点でボーンを作ったら、横からY軸方向の位置を整える。


f:id:komanotes:20200603184014p:plain
片腕のボーンを作る
お次は腕のボーン。

f:id:komanotes:20200603184019p:plain
上からY軸方向の調整と、親指ボーンを作る

f:id:komanotes:20200603184026p:plain
視点を変えて位置調整

f:id:komanotes:20200603183858p:plain
手のボーンの確認
手のボーンはこんな感じになりました。

f:id:komanotes:20200603183905p:plain
肩(鎖骨)ボーンの接続を外す
こうすることによる効果は、ちょっとよくわかってない。


f:id:komanotes:20200603183908p:plain
脚のボーン作り
脚のボーンを作る。
腰ボーンから押し出しでボーンをつなげていって、
視点を変えながら位置を整える。

ボーンの命名と対称化

f:id:komanotes:20200603183913p:plain
ボーンの命名
ボーンの名前を変更する。腰のボーンは「Hip」、頭なら「Head」というように。

f:id:komanotes:20200603183919p:plain
オートネーム(左右)
次に行う対称化の準備も兼ねて、オートネーム(左右)という機能を使う。
左側に位置するボーンなら「.L」、右側なら「.R]が、
それぞれのボーン名の末尾に自動で付け加えられるみたい。


そしてここまでで腕や脚のボーンは片側しか作らなかったんだけど、
対称化(Symmetrize)をすることによって、自動で足りない部分を追加して左右対称の状態にすることができる。

f:id:komanotes:20200603183923p:plain
オートネームと対称化後
このようになった。

これでボーンができあがり。

アーマチュアをペアレントする

まずは自動のウェイトでペアレントをしてみる。

それとボーンを使ってキャラクターを動かす準備として、2点ほど設定を変えた。

1つはキャラクターに付加されているモディファイアの順番。
今作ったアーマチュアと、サブディビジョンサーフェスの2つのモディファイアが付いているので、
アーマチュア(ボーン変形)→サブディビジョンサーフェス(ポリゴン細分化)の順で反映されるようにする。

もう1つはアーマチュアモディファイアのプロパティにある、「体積を維持」の有効化。


f:id:komanotes:20200603183931p:plain
自動ウェイトの確認
ウェイトの不具合を洗い出すために、ぐにぐに動かしてみる。


f:id:komanotes:20200603183936p:plain
自動ウェイトの不具合

このキャラクターモデルに自動でウェイトを付けたときに現れる問題点は、
・腕を上下させると肩や脇にも影響が出てしまう
・顔を横に向けると目や鼻の位置がずれてしまう

主にこの2点を修正していく。

補助ボーンで変形を修正する

ここでは、
・腕を上下させると肩や脇にも影響が出てしまう
というところを修正する。
この不具合に対しては、ウェイトペイントより補助ボーンを追加したほうが楽、らしい。


f:id:komanotes:20200603183941p:plain
補助ボーン作成
4つの補助ボーンを追加した。
オフセットを保持してペアレントをしてある。


f:id:komanotes:20200603183946p:plain
補助ボーンの効果
自動ウェイトを付け直す。
補助ボーンを作ったことで、肩周りがきれいに変形するようになった。

ウェイトペイントで変形を修正する

・顔を横に向けると目や鼻の位置がずれてしまう
これはウェイトペイントで修正する。


f:id:komanotes:20200603183952p:plain
修正前のHeadボーンのウェイト


手順としては、

1.頭部の頂点をすべて選択し、
ObjectDataPropertiesから、ウェイト1.0で「Head」頂点グループに割り当てる。
(っていうことで合ってるかな??)

2.手順1によって複数の頂点グループに属することになった頂点はウェイトの合計が1.0を超える。
ウェイトペイントモードで[ウェイト]-[すべて正規化]することで「Head」以外のウェイトを0にすることができる。

3.[ウェイト]-[クリーン]([使用部分:All-Group])
これによって、「0」のウェイトを各頂点から削除する。

4.ウェイトペイントのブラシ操作で首付近のウェイトをなだらかにする。

こんな感じだろうか。
操作自体は本に細かく書いてあるのだが、頂点グループの仕組みとかが微妙に飲み込みきれてない。


箱うし本を少しさかのぼってみると、頂点グループについて

([ペアレント]-[自動のウェイトで]によって)ボーンの名前と一致した頂点グループが作られます。頂点グループごとに、同じ名前のボーンが動かせる影響力を、各頂点ごとに「0.000」~「1.000」のウェイトとして設定されています。


頂点グループを使用して自分でウェイト値を設定するには、(中略)頂点グループを追加し、名前をダブルクリックしてボーン名と同じ名前に変更、オブジェクトを編集モードにして頂点を選択したら、[ウェイト:]の値を決めて[割り当て]ボタンを押します。

と書いてあった。
これを今回の作業内容と照らし合わせると、頂点グループとウェイトの仕組みがまあまあ理解できる、気がする。


f:id:komanotes:20200603183957p:plain
修正後
そんなこんなで修正後。無事、鼻が顔から剥がれることはなくなった。

スムーズ(修正)モディファイアを使う

スムーズ(修正)モディファイアは、必須ではないけど見栄えを良くする調整に便利な機能、とのこと。
ボーンによる変形後の形をなめらかにするモディファイア、なのかな?

使う上でのポイントは、
・モディファイアの順序を[アーマチュア]の直後にする。(他のモディファイアをはさんで頂点数が変わると無効になる)
・設定によって指定の頂点グループにのみ効果を反映する、あるいは指定した頂点グループ以外に効果を反映することができる。
 (今回は効果をかけたくない部分のみウェイトをつけた新しい頂点グループを作った)

っていうことなのかなーと思ったんだけどなんか間違ってたら嘘言ってすみません。


f:id:komanotes:20200605173338p:plain
肩と膝のあたりをスムーズ(修正)から外すためのウェイトペイント

f:id:komanotes:20200605173343p:plain
スムーズ(修正)(CorrectiveSmooth)の設定
頂点グループ「Group」を除外する設定。

f:id:komanotes:20200605173349p:plain
左半身が肩と膝を除外したスムース(修正)適用、右半身は全体にスムース(修正)適用
比較のために左右でモディファイアを一部かけないかどうかを変えてみた。
肩は確かにスムースをかけないほうがしっかりしてるかも。
膝はちょっと良し悪しがわからない、ウェイトの塗り方でも変わってくるとは思うけど。

回転軸を限定する

これはかなり大事な設定だと思う。
肘や膝など、曲がる方向が決まっている関節のボーンに対して、
回転軸を限定することでおかしな方向へ曲がらないようにする。

f:id:komanotes:20200605173355p:plain
ボーンの回転をリセットした
自分の場合はボーンを押し出しで作ってる段階で、ボーンがくるくる回ってしまっていた。
なのでこれをまっすぐに戻してみた。

f:id:komanotes:20200605173401p:plain
肘の回転軸をロック
回転軸が一番わかりやすい肘関節。ほぼ一方向にしか曲がらないもんね。
今回の場合はz軸方向にだけ曲がればいいので、xとyの回転をロックする。

ひざなど、他の関節でも適宜回転軸をロック。

手首、ねじれちゃうね。

f:id:komanotes:20200605173405p:plain
手首ねじれる問題
作業は一通り終わったんだけど、今回のやり方だとここが一番気になるところかもしれない。

今回作ったアーマチュアだと、前腕をひねる動きが再現できていない。
手首を180°回しただけで、手首付近だけが極端にねじれてしまうのだ…
これを解消する方法もあるはずなので、またの機会に勉強しよう。


あと、今回はボーンの回転軸を限定するやり方を覚えたけど、
さらにボーンの回転する範囲を限定することってできるのかな……?
それができたらポージングやアニメーションが捗る気がする。

完成!

f:id:komanotes:20200605173410p:plain
謎ポーズ

無事、キャラクターに基本的なボーンを入れることができました!

めでたしめでたし。                 つかれたー!笑