本連載は、筆者のオリジナルキャラクター『流流(るる)』を題材に、リアルタイム向けのシンプルなリグとモーション制作について紹介します!

今回は、リギング篇の締めくくりとして、リグデータの仕上げと、フェイシャルセットアップについてお話しします。

記事の目次

    Topic 1:リグの仕上げ

    そのひと手間で使いやすく

    第1回で述べたように、リグは道具です。使い方がわかりづらい道具や、操作を少し間違えると壊れてしまう道具なんて嫌ですよね。アニメーターがリグを使う場面を想像し、円滑に作業できるように配慮するべきです。

    これは、辛辣な言い方をすれば、アニメーターのオペレーションを信用しないということでもあります。思いもよらぬ使われ方をしてトラブルが発生すれば対応に追われてしまいますし、最悪、頑張ってつくったモーションデータが吹き飛んでしまうかもしれません。

    では丁寧なマニュアルを用意すれば良いのでしょうか?

    残念ながら、他人の発した言葉や文章を100%理解できる人間は少ないです(悪口ではなく、筆者も含めそういうものです)。だからこそ、堅牢なデータづくりが重要になります。

    階層の整理

    さて、これまでも何度か説明したように、(主にリアルタイム向けの)キャラクターデータは以下のように構成されます。

    1. 出力体 ※ゲームエンジンに送る部分
     ├ メッシュ
     └ バインドスケルトン

    2. リグ
     ├ コントローラ
     └ ダミースケルトンなど、リグに必要なノード

    これらの構成要素別にノードが整理されているかを確認します。特に、出力体の中に余分なノードが混ざらないよう注意が必要です。

    ディスプレイレイヤーも活用しましょう。ただしレイヤーが多すぎても逆にわかりづらいため、必要最低限に。複数人が関わるプロジェクトでは、しっかりと運用ルールを決めないと雑多になりがちなので気を付けてください。

    • ▲要素別にグループ化して整理する
    • ▲ディスプレイレイヤーの整理例

    アトリビュートの整理

    アニメーションに使ってほしくない項目は、容易に触れないようにしましょう。
    具体的には以下のように対策します。

    使わないアトリビュートをロックする。
    ・使わないアトリビュートを Channel Box から隠す
    使わないノードを選択不可にする。

    Channel Box のアトリビュートの右クリックメニューから、各アトリビュートのロックや表示制御を設定できます。

    Lock Selected

    選択アトリビュートをロックする(値を変更できなくする)

    Unlock Selected

    選択アトリビュートのロックを解除する

    Hide Selected

    選択アトリビュートを ChannelBox から非表示にする

    Lock and Hide Selected

    選択アトリビュートをロックし、ChannelBox から非表示にする

    Make Selected Nonkeyable

    選択アトリビュートをキー設定不可にする(値は変更できる)

    Make Selected Keyable

    選択アトリビュートをキー設定可能にする

    ▲筆者が常用するのは「Lock and Hide Selected」。値の変更不可、キー設定不可にしつつ ChannelBox にも表示しない、つまり余計な要素は完全に隠してしまう。コントローラだけでなくオフセットノードやグループノードなどもロックしておくと安全

    ▲ChannelBox の表示がスッキリしているだけでリグが使いやすくなる。誤って不要なアトリビュートにキーが設定されてしまうこともなく、タイムラインがスッキリする

    ちなみにアニメーターによっては「隠さずに全ての値を解放してほしい」という人もいます。リグの自由度と堅牢さはトレードオフです。どこまで譲るかは作業者次第、プロジェクト次第で判断が必要です。つまりは相談が大事なのです。

    コントローラシェイプの工夫

    「アフォーダンス」という思考概念があります。例えばドアノブの形状で開き戸か引き戸か判別できるように、モノの性質(形状、色など)がユーザーにその機能を伝えるという考え方で、ユーザーインターフェイス設計における大事な要素です。

    ▲われわれは誰かに教わらなくても自然にドアノブを握り、適切な操作でドアを開くことができる。道具の外見や配置そのものが機能を示しているからである

    これはリギングにとっても決して無視できない要素です。リグのユーザーインターフェイスとは、コントローラの見た目、配置です(ピッカーツールが使われる場合も多いですが、ここではビューポートで直接触るコントローラのことを指します)。

    例えばリグのコントローラが全て同じ形状、色で統一されていたらどうでしょうか?

    ▲全てのコントローラシェイプが似たような見た目のリグ

    パッと見てわかりづらくないでしょうか。まだ人型リグなら初見でも何とか操作できる可能性はありますが、これがユニークなモンスターリグだったら、リグを理解する前にモーションをつくる気を失ってしまうかもしれません。コントローラを見るだけで触る場所が何となくでもわかるように、アフォーダンスを意識したリギングが重要です。

    基本は第2回のTopic 5で説明した通りです。ルールを決めてシェイプの見た目を整えてみましょう。

    大きさ:使用頻度が高いものは大きく、低いものは小さくする。
    :動かし方によって色分けする(移動は青色、回転は赤色など)。
    配置:メッシュや他コントローラと干渉しすぎない。稼働軸を意識する。

    ▲重要なものは目立たせ、触りやすいサイズと形状にしよう。逆に使用頻度の低いものは主張を控え目に。普段は非表示にして必要なときだけ表示させるしくみを設けても良い

    また、操作方法に適した形状を選ぶことも重要です。悪い例として、回転させるコントローラが完全な円形だったら、コントローラがどっちを向いているのかがわかりにくいと思います。指標としてどこかに尖った部分をつくったり、円ではなく多角形や立方体などを選ぶと良いでしょう。

    ▲Spineなどの回転操作用のリグは、角度が視認しやすい形に

    シーンクリーンアップ

    もはやリグに限った話ではありません。綺麗なシーンデータづくりを心がけましょう。仕事なら当然のこととして、たとえ個人制作でも適当でいいわけがありません。汚いデータは未来の自分自身の首を絞めるからです。

    以下、筆者がいまいちだと思うシーンデータの例を挙げます。

    1. 不要なノードが残っている

    キャラクターの出力体とリグ以外の余計な要素があれば削除してください。不要なディスプレイレイヤーも同様です。

    マテリアルやユーティリティノードなどは初期設定のアウトライナに表示されず、[Outliner → Display → DAG Objects Only]のチェックを外すと可視化されますが、アウトライナ上ではどれが不要なのか判別しづらいため、[File → Optimize Scene Size]などの機能で機械的に処理するのが確実です。

    2. 作業中のノードが残っている

    1つ目に似ていますが、不要だけどあえて残しているパターンです。作業中データのバックアップ、リギング作業にのみ必要なノードなどがこれにあたります。「Temp」などのグループでまとめてもダメです。不要なものは削除しましょう。

    もし作業中データを残しておきたい場合は、別シーンで管理するのをオススメします。第三者に受け渡すシーンデータには必要なもの以外は残さない。これが鉄則です。

    ▲一見整理されているように見えるが、アニメーション作業に不要であることには変わりない。中身によってはシーン容量も無駄に増えてしまう

    3. コントローラの値が初期値ではない/キーが打たれている

    リグの動作チェックのためにコントローラを動かしたまま元に戻すのを忘れていませんか? 一見デフォルトポーズに見えて、細かい値が残っている場合もあるので注意してください。

    コントローラにアニメーションキーが打たれていないでしょうか? リグをリファレンスした先のアニメーション作業シーンでコントローラにキーが打てなくなってしまうので絶対NGです。

    ▲見かけ上、デフォルトポーズに見えても微細な値が残っている場合もあるので注意

    コントローラ数の多い複雑なリグになると目視では発見しづらいため、デフォルトポーズに戻す機能のあるピッカー、ポーズツール、チェックスクリプトなどの力を借りると、より安全なシーンチェックが可能になります。

    シーン整理はリグ自体の機能・使いやすさと同じくらい大切なことだと思います。リグを使ってくれる誰かのために、そして自分のために、丁寧な仕事を心がけましょう!

    Topic 2:フェイシャルセットアップ考察

    ここからはフェイシャルリグの話題に移ります。ボディリグのようなチュートリアルではありませんが、基本知識や筆者の考えを中心にお話ししていこうと思います。

    セットアップ手法の選択

    人間の頭蓋骨は14種22個の骨から形成されています。そのうち、下顎骨以外は連結された不動関節、つまり動かない骨ですが、頭蓋骨の数を超える30種以上の表情筋の働きによって多彩な表情がつくられます。

    そんな複雑な顔をセットアップするのは考えただけでも大変そうですが、要点を押さえればシンプルなリグでも魅力的な表情はつくれるので安心してください。まずは知るところから始めましょう。

    以下、代表的なフェイシャルセットアップ手法を紹介します。

    1. テクスチャ

    1つ目はテクスチャによる表現、ズバリ「表情を描く」ことです。

    まだゲームハードスペックが非力だった頃の古の手法ではありますが、画力さえあればクオリティを担保しやすく、状況によっては今でも有用かもしれません。目元と口元のUVを分割して、福笑いのようにパーツを組み合わせて表情をつくるテクニックや、頭部モデルごと差し替えてしまうような例もあります。

    ▲256流流をテクスチャに置き換えた例。これは固定表情だが、表情を変える場合は複数の表情を配置し、UVアニメーションによって切り替えることになる

    メリット
    ・セットアップコストがほぼない。
    ・表現の幅が広く、極端な表情をつくりやすい。

    デメリット
    ・立体的な表情がつくれない。
    ・表情パターンを増やすとテクスチャ容量も増える。
    ・表情の切り替わりが段階的になる(繋ぎパターンをたくさん用意して、テクスチャアニメなのにスムーズな表情変化を実現しているすごい実例もあります)。

    2. ブレンドシェイプ

    VRChatやMMDからモデリングを始めた方にはメジャーな手法でしょう。元のシェイプと同じ頂点構造のターゲットモデルを複数用意し、それぞれの形状をブレンドして(混ぜて)元のシェイプを変形させることができます。

    コントローラにこだわらなければ、Maya標準の ShapeEditor によるスライダ操作だけでアニメーションを作成できるため、モデリングの知識があればすぐに始められる、敷居の低いセットアップ手法です。

    ▲メイキング画像でよく見る、顔がたくさん並んでいるアレがターゲットモデルである。表情の量産がモデリング作業であるため、モデラーがセットアップを兼任することになる
    ▲最終的にブレンドシェイプを採用した256流流のフェイシャルリグ

    メリット
    ・実質モデリングなので工程がシンプル。
    ・ジョイントでは表現が難しい、複雑な変形が可能。
    ・アニメーターによる表情のバラつきが出にくい。

    デメリット
    ・量産後のターゲット修正コストが高い。
    ・モーフターゲットの範囲でしか表情がつくれない。
    ・表情パターンを増やすとターゲット容量が増える。

    3. ジョイント

    ボディリグで解説したように、顔のメッシュを表情スケルトンにスキンバインドし、ジョイントを動かすことで変形させる手法です。原理は単純ですが、最もセットアップが難しい手法になります。

    ▲人間の柔軟な表情筋をジョイントで再現するためには、こだわり次第では30どころでは済まないジョイント数になってしまう場合も。キャラクターの顔はプロジェクトごとに様々なデザインがあり、ジョイント配置ルールが定めにくいのも難易度を上げる要因

    メリット
    ・容量を削減できる(表情のリソースがアニメーションデータのみ)。
    ・モデル修正や仕様変更に強い。
    ・アニメーションの自由度が高い。
    ・エンジンへの実装がシンプル。

    デメリット
    ・セットアップ難易度が高い。
    ・アニメーション難易度も高い。
    ・表情の自由度と引き換えにジョイント数が増加し、負荷も高まる。

    どれを選べばいい?

    いくつか紹介しましたが、どれも一長一短で結局何を選んだら良いか迷ってしまうかもしれません。チームで運用するリグであれば慎重に決める必要がありますが、個人制作であればまずは色々と試してみて、自身のスキルと目的に合った手法を見つけてみてはいかがでしょうか。

    どれか1つだけに縛る必要もありません。基本的にブレンドシェイプで構築しつつ、各部位に仕込んだジョイントでさらに細かい変形ができるようなハイブリッドリグも検討してみてください。『流流』のフェイシャルリグも、ブレンドシェイプベースの一部ジョイント駆動になっています。

    ▲流流のフェイシャルリグ。ブレンドシェイプだけでは硬くなりがちな表情に揺らぎを加えられるようセットアップした。眼球運動はジョイント駆動、虹彩と瞳孔はブレンドシェイプの合わせ技となっている

    ただし特殊な構造になるほど実装の手間が増え、データの最適化もしづらくなってしまう可能性があります。表現したい画だけでなく、実装面も考慮しながらキャラクター仕様を決められると理想です(あくまで仕事であれば、の話です)。

    それでもどれか1つだけ選ぶとしたら?

    アニメーションの表現力を追求するのであれば、やはりジョイントセットアップが万能かなと思います。ジョイントを増やせば変形の自由度は上がり、こだわりが強いアニメーターの要求にも応えやすいです。

    キャラクターに命を与えるリグ

    「顔」は千差万別。1人として同じ顔の人間は存在しません。似顔絵や二次創作イラストを描いた経験がある方なら実感できるかと思いますが、目の配置が1mmちがうだけで顔の印象は大きく変わります。表情変化においても同様に、眉、口角、まぶたなど各パーツの繊細な変化が複雑な表情をつくり出します。

    わずか1mmがキャラクターに感情を生み出すわけです。フェイシャルアニメーションとは、その微細な変化に全力を込める作業とも言えるでしょう。フェイシャルリグもそれに応えられる機能性と柔軟性が求められます。

    ▲感情は喜怒哀楽4種類だけではない。ちょっとした変化でニュアンスが変わってしまうのが表情の難しく楽しいところ。稼働範囲が限られたフェイシャルリグはフェイシャルアニメーションの足枷にもなりかねない

    こだわりだすとキリがないので、要点を列挙します。

    ・左右非対称な変形が可能であること
    ・眉、唇が柔軟に動かせること
    ・瞳の変形が可能なこと

    フェイシャルリグをセットアップする際は、上記を意識してみてください。3つ目の瞳については、次の項目で補足します。

    目は口ほどにものを言う

    フェイシャルアニメーションでこだわりたい最重要パーツは「」だと考えています。「目は口ほどにものを言う」ということわざがあるように、人は目から情報を読み取ったり、目で語ることが多い生物です。

    人と人以外の動物の目を見比べると、大きなちがいがあることに気づきます。

    ▲左:猫の目、右:人の目

    猫には白目の部分がほとんど見えませんが、人間は白目の面積が広く、黒目との境目がはっきりと見えます。

    自然界で生きる動物には、視線を悟られたくないという生存本能があると言われています。自分の意志が敵に悟られてしまうことは命の危険を意味するからです。

    それに対し、人は感情を交わすコミュニケーションを重視します。感情が目に表れるように、白目部分が見える形に進化したのではないかと考えられているそうです。実際、誰かの顔を見るときや面と向かって話すときにはまず相手の目を見ようとしますよね。

    フェイシャルアニメーションにとっても、目が重要であることは言うまでもありません。ちょっとした視線の動き、瞼の開き具合、瞳孔の変化によって演技のニュアンスは変わります。

    ▲目元の演技だけでキャラクターの印象は大きく変わる

    目を柔軟に操作できるフェイシャルリグがあればキャラクターの表現力は格段に上がるでしょう。労力をかける価値のある部分だと思いますので、これからキャラクターのフェイシャル仕様を決める際は、魅力的な目の演技が実現できるようなセットアップを検討してみてください。

    ここまでのまとめ

    リギング篇はここで区切りになります。概念的な説明も多かったと思いますが、何となくでもリギングの流れや要点が伝わっていれば幸いです。

    ここでブルース・リーの言葉を引用します。

    「Be water(水になれ)」

    リギングの正解はひとつではありません。コップに注がれる水の如く、状況に応じて形を変え変化していくものです。そして武術の流派のように思想も様々で、命名規則ひとつとっても組織やリガーによってポリシーが異なります。ですので本記事の内容を鵜呑みにせず、色々なリグを研究したり周りのアニメーターの意見を参考にしながら自分なりのリグを組んでみてください。

    さぁ、次回からはいよいよモーションの話題に移ります。これまでよりは感覚的でとっつきやすい内容になると思いますので、引き続きよろしくお願いします。

    ※記事のご感想、リクエストなどお待ちしています!

    Lee

    ゲーム会社でコンシューマタイトルの開発に携わる傍ら、自主制作ゲームの進捗やCG作品などをTwitterで日々ゆるく発信している。インディーゲーム『ヤマふだ!』シリーズのグラフィック全般を担当。

    X(旧Twitter):@leedoppo

    TEXT_Lee
    EDIT_小村仁美 / Hitomi Komura(CGWORLD)