FaceRig途中経過

FaceRig作成途中経過とFaceRig作成に必要なTipsを少し…

当記事はBlender Advent Calendar 2014にも参加中です。Blender Advent Calendar 2014はBlenderに関するいろんな記事を発信しています!

※Gif動画多めで重たいので閲覧には注意して下さい。

FaceRig途中経過
FaceRig途中経過
現在作成中のFaceRigの途中経過です。本当はある程度のレベルまで完成させてからこの記事に挑もうと思っていましたが、連動のことを考えてBoneを組むと、まだもう少し時間がかかりそうなので途中経過で報告いたします。
ちなみに私は以前に人体モデルを作成した際にFaceRigを一度作っています。その動画がこちらです。
この当時はBoneを人体に対して垂直に配置し、BoneのLocationを操作することによって顔を動かすようにしていました。ネット上を見回すと、そのようなやり方ではなくて、Boneを寝かせてマスク(お面)のような形のRigを見かけるほうが多いと感じていまして「きっとその方が実用的なのだろう…」と勝手に考え、自分もマスク型のFaceRigを組んでみたいと思ったのが事の発端です。

前置きが長くなってしまいましたが、そう思って何年越しでようやく今年とりかかったわけですが、FaceRigを作ろうと思った際に障害となったのが次の通り。

  • (デフォルメ的なものは結構あるが)ややリアルよりなもののチュートリアルが少ない
  • 特にBlenderでは少ない
  • 1から自分で掘り下げる必要がある
  • 最適解なのかさっぱりわからないまま製作を続けるためモチベーションの維持が必要

などといったところ。
正直、時間かけて作ったものの、最終的にうまくいかない、やり方が外れすぎている。と言った時の絶望感を克服する勇気が必要でした。まぁこれはBlenderを使用する上で常に意識しないと行けないのかなとあきらめモードで開き直ることでクリアしたものの、チュートリアル的なものが見当たらないのはかなり堪えました。なにせ私はCGとは縁遠い人間。ネットで知識を得るしか無いのです…。
ネット上に有る画像や動画を見ながら、しかもほとんど英語のもでしたので「見て覚える」という感じで、手探りで「あれはこういう意味か~」ということを繰り返しつつ、BlenderのConstraintやモディファイアなど再勉強しながらここまで出来ました。

マスク型FaceRigの概要

facerig1
facerig1
自分なりの解釈なのですが、人間のの体は形が変形しても体積は同じだと思うのでどこかが膨らめばどこかが伸び、空間が広がる。というのが普通なのだと思います。それをBoneで表現することがマスク型のFaceRigにとって大きいのではないかな。と一人で考えました。
それを表現すると隣のGif動画のような感じでしょう。

もう一つはこのような動きをキーとして他のBoneを連動させて動かす事が簡単にできることが大きな意義のではないかと思います。上記のような動きは実際にはScaleが変化しています。Y軸が伸び縮みしてX/Zもそれに合わせて膨らんだり縮んだり。その値を他のBoneに渡してやれば結構柔軟な動きを実現することが可能なわけです。

Stretch To Constraintを使用

Stretch To ConstraintはBoneを伸ばしたり縮めたりする動きをさせるConstraintです。使用方法はこちらを参照してみてください。
マスク型のFaceRigにおいてこれが一番基礎になるのでしっかりと使い方を覚えておく必要があります。
ちなみにBoneにStretchToConstraintを設定して動かしてみるとこのようになります。

StretchToConstraint
StretchToConstraint

Deform用・Target用のメインのBoneを組んでみる

Deform用Boneとは変形のことで、変形の為のBoneのことです。Target用Boneとは基本的にDeformBoneの向かう先となるBone(※中にはそうでないものも有ります)で、主にKeyFrameを打つBoneにもなります。子になるBoneの動きをどうするかの設計が大事ですので親子関係を十分に考えながら設計します。
組み方はモデルの面割やどういう変形を望むかによって変わります。基本的には画像のような感じになるんじゃないかと思います。ちなみに現段階でDeformBoneが144個、TargetBone85個となっています。そんなになさそうに見えて、案外たくさんあります。

DeformBoneとTargetBone
DeformBoneとTargetBone

FaceRig基本機能はとりあえず完成

実はこの段階でFaceRigとしては基本的に完成です。目の周りのTargetBoneを動かせば目を閉じさせることもできますし、口の周りのTagretBoneを動かせば口を開ける事もできます。ただ先程も書いたようにTargetBoneは85個もあります。これら全てを動かしながらキーフレームを打つのも大変です。その労力を軽減させるために追加工事が必要なわけです。

facerig3
facerig3
例えば「目をとじる」という現実の動作をひとつ考えると、その動きが基本的には多様ではないと思います。このRigでは目の周りに目頭と目尻を含めて8個のTargetBoneがありますが、これらを「目をとじる」という動作にまとめてしまうと楽だと考えたんです。
それを実現したんですが、このRigでは目の上瞼、下瞼の真ん中のTargetBoneを動かすと両脇の2つのBoneが動く仕組みになっています。

便利なTransformConstraintを使用

TransformConstraint
TransformConstraint
言い方が難しいのですが、これは動作によって生じた動作の値を自らが吸収し、他Boneの動作を助けるためのBone、又は他Boneの動きに合わせて、連動するBoneのために必要なBoneです。
このBoneにはTransformConstraintを利用します。例えばある特定のBoneのX軸回転に合わせて自らはその回転量に応じて変化する。というもの。Y軸Scaleを変化させるBoneであれば、特定BoneのX軸回転によって、その回転量に応じて自らのY軸Scaleを変化させることができます。

本当はこのBoneの存在は必要ありません。ただ特定のBoneの動きをたくさんのBoneに伝える場合、受ける側Boneの全てにTransformConstraintを設定するのが結構面倒だったりするために、このようなBoneの存在が便利になるわけです。一つTransformConstraintを設定しておけば、あとはその動きを受けたいBoneに「Copy~Constraint」を設定するだけなので設定がかなり楽になります。
Gif動画では目の動きをTransformConstraintで他のBoneへ伝えるデータを作っています。ここには表示されていませんが、目のDeformBoneのX軸とZ軸の回転を4つのBoneで受け取っています。※このRigでは22個のTransformContraint専用のBoneが使用されています。
TransformConstraintの詳細はこちらを参照下さい。

TransformContraint使用例

TransformContraint使用例
TransformContraint使用例

他Boneの動きに合わせて連動するBone

他のBoneへ影響を与える
他のBoneへ影響を与える
左の先端に有るBone(Bone1-Child)はその下にあるBone(Bone1-Parent)の「子」です。それで(Bone1-Parent)にはCopyScaleが設定されており、右にある(Bone.001)のScaleをコピーします。ですから左の下のBoneは右の下のBoneを同じScaleになります。この場面で注目するのは左の上にあるBone(Bone1-Child)です。このBoneは「子」なので(Bone1-Parent)についていきますね。この特性(親子関係)を活かしてBoneを組むといろんな自動化ができそうです。

他のBoneの値を受け取り変形するBone
他のBoneの値を受け取り変形するBone
このRigでは全体で178個のBoneが他のBoneに合わせて動きが連動します。このBoneは前述したTransformConstraintで変形したBoneの値を受け取り、自らも変形し、自らの「子」に成るBoneへ影響を与えます。TransformConstraintだけでなく、StretchToで変形したデータを受け取ったりもします。Boneは基本的に少ないほうがいいと思っているのでStretchToをTransformに変換することは例外を除いてしていません。

下の画像は一部をアップに表示してみました。口周りのものですが、3つも4つもBoneがつながっていて最終的にTargetBoneへ向かいます。元が親でどんどん子、孫、ひ孫…という関係性になっています。これらはすべて顔の中のどれかのBoneの値を受け取ってY軸Scaleを縮ませたり、Rotationを構うものとなっています。※基本的にY軸Scaleが扱うのが簡単なのでそれを主に使います。

連動Boneの一例
連動Boneの一例

口周りのデモ

連動するBoneのデモ(口周り)
連動するBoneのデモ(口周り)

目の周りのデモ

連動するBoneのデモ(目周り)
連動するBoneのデモ(目周り)

おわりに

このFaceRigは連動するBoneをまだ組み入れている途中なので完成まではもう少し掛かりそうです。今回はあまり見かけないFaceRigの記事ですが、そのFaceRigを作るためのちょっとしたTipも交えてみました。いちおう自分なりに考えてみたものです。正解とか、正統とかよくわかりませんが、とりあえず動いているので良いかな。と思っていますので、FaceRigを作ってみたいけど今までよくわからなかった…。と思っていた人は参考にでもして下さい。

ということで今回の記事はBlender Advent Calendar 2014にも参加中です。他の記事もいろんな分野のネタが書かかれてますのでぜひ見て下さい!
えっと、次はc5h12さんで「かんたんななにか(仮)」です!

「FaceRig作成途中経過とFaceRig作成に必要なTipsを少し…」への2件のフィードバック

  1. Blender Advent Calendar 2014からブログを拝見させていただきました。
    表情ジョイントがこんなにも仕込まれていて、なおかつそれがたくさんの表情を作るというところが面白いです。私も3DCGを趣味でやっているのですが、ここまで表情を作ることにこだわったことがないので参考にしてみたいと思います。

    >人間のの体は形が変形しても体積は同じだと思うのでどこかが膨らめばどこかが伸び、空間が広がる。

    そのはずなんですが、普通にボーンを仕込んで体積維持とかを行っても思ったような体積維持にはならないのでやはりこういった考え方が大切なんだろうと思いました。

    筋肉の動きの基本となりそうな内容なので参考にしてみたいと思います(^^

    1. 喜多川春望さんこんばんは。
      Blender Advent Calendar 2014見て頂いてありがとうございます!
      FaceRigとか細かいジョイント系のRig組みってあまりネット探しても出てこないですよね。ここまで理解するのに僕は何年もかかってきました。
      動画作りを前提としていて、正直僕は面倒くさがりなのでキーフレームを打つときにどうやって楽しようか…ということばかり考えて作ったのが今回のRigです。

      >人間のの体は形が変形しても体積は同じだと思うのでどこかが膨らめばどこかが伸び、空間が広がる。

      この件については正直その答えがStretchToが正しいのか未知なのですが、少なくとも色々試してみた結果、StretchToで伸縮が見られるのでこの原理を活かせば人間の体などの筋肉の動きを再現できそうな気がしたんですよ!でも完全な体積の維持には使えないと思うので、少ないBone数であればTransformConstraintを使ってリグを組むほうが得策かと…。

      いずれにしてもBoneの親子関係が結構重要なのでコツを掴むまでは結構大変です。コツが掴めるとこのRigみたいに何重にも動きを制御できますし、ここまで来るとモデリングみたいな花型作業ではなく地味なBone組も結構楽しくなります(笑)
      ひとに大層なことを教えれるほどではありませんが、ひとつの参考として見て下さいね~!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

3DCGソフトウェア「Blender」を使ったあれこれ+PHOTOGRAPH