今回はフェイシャルリグ関係で、モーフリンク (Morph Link) という機能を使ってみました

モーフを動かす時はモデルにモーフミキサーを読み込んで、モーフバーを動かして表情などを操作するんですが、ちょっと操作性が物足りない感じがあります

じゃっく

もう少し直観的に動かしたい

そこで何か良いもの無いかな~と探して、使ってみたのがモーフリンクというもの

実際に組み込んで使ってみましたが、これは

  • 二つのモーフを混ぜて直観的に使うことができる
  • 画面上に好きな形の操作パネルを作ることができる

など、視覚的に扱いやすいパネルが作れることが分かりました

だいぶ便利です

スライダーズというものも、モーフを扱う上では便利な機能でした

モーフリンクはさらに複雑なことができそう

というわけで忘れないように、メモしていきます

準備

モーフ付きモデルを用意

まずはモーフ付きのモデルが必要なので用意します

無ければいくつかモーフを作りますが、既に作ってある自作モデルを使うことにしました

頂点マップにモーフがあることを確認して、レイアウトにポイっと投げ込みます

これで準備OK

手順

それでは実際にモーフリンクを適用していきます

手順はこんな感じ

まずは操作用のパネルを作る必要があるので、Null というものを二つ用意します

形は自由ですが、とりあえずグリッドとリングで作成

四角形の Null を親として、丸型の Null を親子付けします

次にモーフが入っているモデル本体に、モーフミキサーを追加

グラフ編集を開いて、ビルダーからモーフリンクを追加します

あとは各モーフにモーフリンクを割り当てれば OK、という流れです

ちょっと文字だけだと難しいので、画像と合わせて書いていきます

操作用の Null を用意

STEP1
パネルとコントローラー用の Null を用意

Null の作成画面を開いて二つ作ります

各 Null の設定
  • パネル:100mm のグリッド
  • コントローラー:10mm のリング

名前を付けて、編集からサイズと形状を決定して作成

もし勢い余ってそのまま Null を作ってしまった場合は、オブジェクトプロパティの「アピアランス」から「アイテム形状」を追加すれば、大きさと形を変えられます

STEP2
親子付けと位置の調整

親子付けはシーン編集、もしくはモーションオプションから設定します

コントローラーをパネルの下に配置すれば OK です

じゃっく

ショートカットキー E でもできます

パネルをつかんで見やすい位置に移動しておきます

STEP3
位置制限を付ける

このままだとコントローラーがどこまでもすっ飛んで行くので、位置の制限をかけます

モーションオプションの「制御と制限」タブに移動して、位置タブから設定

XYZ の位置制限にチェックを入れて、移動範囲を記入します

じゃっく

単位がメートルのようなので、範囲は ー0.05~0.05 にしました

Z 軸は手前や奥に移動しないように、最大と最小を 0.0 にしておきます

モデルにモディファイアを追加

STEP1
モーフミキサーを追加

モデル本体を選択して、オブジェクトプロパティを開きます

プリミティブタブのジオメトリタブ、「モディファイアの追加」から「モーフミキサー」を追加

じゃっく

結構下側にあります

STEP2
モーフミキサーを上に移動

「モーフミキサー」を追加しましたら上に移動しておきます

「モーフィング」の一個下です

なぜかといいますと、追加された位置のままだと正常に機能しなかったためです

こちらを少しご覧ください

ちょっと見えにくいですけど、涙モーフの位置がおかしなことになっています

本当なら涙は目尻に置かれるはず

正しい状態にするには、「モーフミキサー」を「モーフィング」の一個下に置かないといけません

じゃっく

最初直し方が全然分からなかった

グラフ編集からモーフリンクを設定

STEP1
ビルダーを開く

次はグラフエディタを開いて、各アイテムのチャンネルから MorphGroup を探します

その中の blink モーフを選択

上のチャンネル枠にある黄色文字が選択されていることを確認して、「ビルダー」をクリック

STEP2
モーフリンクを選択

すると、「エクスプレッションビルダー」が立ち上がります

右上のコマンド、「ユーティリティファンクション」から「モーフリンク」を探して選択

STEP3
値を入力

英語で書かれているのでつい身構えてしまいますが、書いてあることはだいたいこんな感じです

  • Controller:モーフリンクをコントロールする駆動用のチャンネル
  • Control Min:コントローラーから最小値を入力
  • Control Max:コントローラーから最大値を入力
  • Morph Min:モーフリンクからモーフの最小値を出力
  • Morph Max:モーフリンクからモーフの最大値を出力
  • モーフは 0.0~1.0 で設定

コントローラーを下に動かした時に、まばたきさせたかったので、コントローラーの最大値を ー0.05 にしています

あとは名前を blink にして、「エクスプレッション作成」をクリック

STEP4
モーフにエクスプレッションを適用

すると、名前と値が入力されます

チャンネル枠内の黄色文字のモーフが選択されていることを確認して適用

じゃっく

黄色文字の左隣に丸が付いたら、適用された状態になっています

動作確認

そして、いざ動作確認すると・・・

・・・うん?

まばたきはできていますが、プラス方向にいったとたん恐怖映像の如く、目が開きまくっていますね・・・

じゃっく

うわぁっ怖っ!!

条件を追加

STEP1
名前を変更する

なんか失敗したので、ちょっと条件を加えます

プラス方向に進んだら何もしないという条件をつけたいので、まずは名前を blink_sub に変更

名前を変更したら、もう一度ビルダーを開きます

STEP2
条件を追加する

今度は条件ファンクションから条件を選びます

Greater Than か Less Than のどちらかですが、まばたきはマイナス方向でコントロールしているので、 Less Than を選択

STEP3
条件の値を入力する

条件式とその式に沿った結果を入れていきます

プログラミングを少しかじった方なら、なんとなく分かるかもしれません

もしY軸 < 0.0
  • 満たす場合:Input C を実行
  • 満たさない場合:Input D を実行

こんな感じなっています

なので、満たす場合は blink_sub を実行して、満たさないなら何もしないという意味で 0.0 を入れています

書き終わったら名前を改めて blink として、「エクスプレッション作成」をクリック

STEP4
モーフに再び適用する

もう一度同じように blink モーフに適用

じゃっく

今度こそ良いはず

動作の再確認

Y 軸がプラス方向に行ってもおかしなことになっていないですね

成功です

じゃっく

うまくいってよかった

モーフを四つ入れた動画

ちょっと調子に乗って、4つのモーフをいっぺんに入れてみました

じゃっく

良い!

良い感じにできたと思います

モーフリンクの使い方が分かったので、完了です

まとめ

それでは今回のまとめです

まとめ
  • Null を使ってパネルなどを作る
  • Null の形などは後からでも変更可
  • モデルにモーフミキサーを追加する
  • モーフミキサーは上から二番目に置く
  • モーフリンクはグラフ編集から作れる
  • 意図しないモーフなら条件式を追加する

今回はモーフリンクを使って、モーフをコントロールしてみました

計算式を使うので少し難しく感じていましたが、ビルダーを使えばいくらか簡単にできることが分かりました

このモーフリンクを使えば、もっと細かいフェイシャルリグが作れそうです

じゃっく

いろいろ作って身に付けよう

これまであまりレイアウトの機能を触ったことが無かったので、ちょっと新鮮でした

スライダーズも初めて使ったときは、おぉっ!と感動しましたからね

モデリングが終わった後はレイアウトでの作業も増えると思うので、少しずつ機能を確認していきたいと思います

それでは、お疲れさまでした

おまけ

実はクランプトマップレンジという似たものがある

実はモーフリンクと似たものとして、クランプトマップレンジ (Clamped MapRange) というものもあります

書き方はモーフリンクとほぼ同じ

ただ、こちらはわざわざ条件式を書く必要がありません

自動的に0%~100%の範囲でモーフが働きます

じゃっく

こっちの方が楽かも?

クランプトマップレンジの方ができることが多いので、初めからこっち使っておけば良いのでは?と思ったり思わなかったり・・・

使い分けとしては、こんな感じになりそうです

それぞれの使い分け
  • モーフリンク:ー100%~100% のモーフを使いたい場合
  • クランプトマップレンジ:0~100% のモーフを使いたい場合

参考資料

使用ツール

3DCG
  • LightWave3D
動画
  • Bandicam
  • ScreenToGif