今回はフェイシャルリグ関係で、モーフリンク (Morph Link) という機能を使ってみました
モーフを動かす時はモデルにモーフミキサーを読み込んで、モーフバーを動かして表情などを操作するんですが、ちょっと操作性が物足りない感じがあります

じゃっく
もう少し直観的に動かしたい
そこで何か良いもの無いかな~と探して、使ってみたのがモーフリンクというもの
実際に組み込んで使ってみましたが、これは
- 二つのモーフを混ぜて直観的に使うことができる
- 画面上に好きな形の操作パネルを作ることができる
など、視覚的に扱いやすいパネルが作れることが分かりました
だいぶ便利です
スライダーズというものも、モーフを扱う上では便利な機能でした
モーフリンクはさらに複雑なことができそう
というわけで忘れないように、メモしていきます
準備
モーフ付きモデルを用意

まずはモーフ付きのモデルが必要なので用意します
無ければいくつかモーフを作りますが、既に作ってある自作モデルを使うことにしました
頂点マップにモーフがあることを確認して、レイアウトにポイっと投げ込みます
これで準備OK
手順
それでは実際にモーフリンクを適用していきます
手順はこんな感じ
まずは操作用のパネルを作る必要があるので、Null というものを二つ用意します
形は自由ですが、とりあえずグリッドとリングで作成
四角形の Null を親として、丸型の Null を親子付けします
次にモーフが入っているモデル本体に、モーフミキサーを追加
グラフ編集を開いて、ビルダーからモーフリンクを追加します
あとは各モーフにモーフリンクを割り当てれば OK、という流れです
ちょっと文字だけだと難しいので、画像と合わせて書いていきます
操作用の Null を用意

Null の作成画面を開いて二つ作ります
- パネル:100mm のグリッド
- コントローラー:10mm のリング
名前を付けて、編集からサイズと形状を決定して作成
もし勢い余ってそのまま Null を作ってしまった場合は、オブジェクトプロパティの「アピアランス」から「アイテム形状」を追加すれば、大きさと形を変えられます

親子付けはシーン編集、もしくはモーションオプションから設定します
コントローラーをパネルの下に配置すれば OK です

じゃっく
ショートカットキー E でもできます
パネルをつかんで見やすい位置に移動しておきます

このままだとコントローラーがどこまでもすっ飛んで行くので、位置の制限をかけます
モーションオプションの「制御と制限」タブに移動して、位置タブから設定
XYZ の位置制限にチェックを入れて、移動範囲を記入します

じゃっく
単位がメートルのようなので、範囲は ー0.05~0.05 にしました
Z 軸は手前や奥に移動しないように、最大と最小を 0.0 にしておきます
モデルにモディファイアを追加

モデル本体を選択して、オブジェクトプロパティを開きます
プリミティブタブのジオメトリタブ、「モディファイアの追加」から「モーフミキサー」を追加

じゃっく
結構下側にあります

「モーフミキサー」を追加しましたら上に移動しておきます
「モーフィング」の一個下です
なぜかといいますと、追加された位置のままだと正常に機能しなかったためです
こちらを少しご覧ください
ちょっと見えにくいですけど、涙モーフの位置がおかしなことになっています
本当なら涙は目尻に置かれるはず
正しい状態にするには、「モーフミキサー」を「モーフィング」の一個下に置かないといけません

じゃっく
最初直し方が全然分からなかった
グラフ編集からモーフリンクを設定

次はグラフエディタを開いて、各アイテムのチャンネルから MorphGroup を探します
その中の blink モーフを選択
上のチャンネル枠にある黄色文字が選択されていることを確認して、「ビルダー」をクリック

すると、「エクスプレッションビルダー」が立ち上がります
右上のコマンド、「ユーティリティファンクション」から「モーフリンク」を探して選択

英語で書かれているのでつい身構えてしまいますが、書いてあることはだいたいこんな感じです
- Controller:モーフリンクをコントロールする駆動用のチャンネル
- Control Min:コントローラーから最小値を入力
- Control Max:コントローラーから最大値を入力
- Morph Min:モーフリンクからモーフの最小値を出力
- Morph Max:モーフリンクからモーフの最大値を出力
- モーフは 0.0~1.0 で設定
コントローラーを下に動かした時に、まばたきさせたかったので、コントローラーの最大値を ー0.05 にしています
あとは名前を blink にして、「エクスプレッション作成」をクリック

すると、名前と値が入力されます
チャンネル枠内の黄色文字のモーフが選択されていることを確認して適用

じゃっく
黄色文字の左隣に丸が付いたら、適用された状態になっています
動作確認

そして、いざ動作確認すると・・・
・・・うん?
まばたきはできていますが、プラス方向にいったとたん恐怖映像の如く、目が開きまくっていますね・・・

じゃっく
うわぁっ怖っ!!
条件を追加

なんか失敗したので、ちょっと条件を加えます
プラス方向に進んだら何もしないという条件をつけたいので、まずは名前を blink_sub に変更
名前を変更したら、もう一度ビルダーを開きます

今度は条件ファンクションから条件を選びます
Greater Than か Less Than のどちらかですが、まばたきはマイナス方向でコントロールしているので、 Less Than を選択

条件式とその式に沿った結果を入れていきます
プログラミングを少しかじった方なら、なんとなく分かるかもしれません
- 満たす場合:Input C を実行
- 満たさない場合:Input D を実行
こんな感じなっています
なので、満たす場合は blink_sub を実行して、満たさないなら何もしないという意味で 0.0 を入れています
書き終わったら名前を改めて blink として、「エクスプレッション作成」をクリック

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

じゃっく
今度こそ良いはず
動作の再確認

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

じゃっく
うまくいってよかった
モーフを四つ入れた動画
ちょっと調子に乗って、4つのモーフをいっぺんに入れてみました

じゃっく
良い!
良い感じにできたと思います
モーフリンクの使い方が分かったので、完了です
まとめ
それでは今回のまとめです
- Null を使ってパネルなどを作る
- Null の形などは後からでも変更可
- モデルにモーフミキサーを追加する
- モーフミキサーは上から二番目に置く
- モーフリンクはグラフ編集から作れる
- 意図しないモーフなら条件式を追加する
今回はモーフリンクを使って、モーフをコントロールしてみました
計算式を使うので少し難しく感じていましたが、ビルダーを使えばいくらか簡単にできることが分かりました
このモーフリンクを使えば、もっと細かいフェイシャルリグが作れそうです

じゃっく
いろいろ作って身に付けよう
これまであまりレイアウトの機能を触ったことが無かったので、ちょっと新鮮でした
スライダーズも初めて使ったときは、おぉっ!と感動しましたからね
モデリングが終わった後はレイアウトでの作業も増えると思うので、少しずつ機能を確認していきたいと思います
それでは、お疲れさまでした
おまけ
実はクランプトマップレンジという似たものがある

実はモーフリンクと似たものとして、クランプトマップレンジ (Clamped MapRange) というものもあります
書き方はモーフリンクとほぼ同じ
ただ、こちらはわざわざ条件式を書く必要がありません
自動的に0%~100%の範囲でモーフが働きます

じゃっく
こっちの方が楽かも?
クランプトマップレンジの方ができることが多いので、初めからこっち使っておけば良いのでは?と思ったり思わなかったり・・・
使い分けとしては、こんな感じになりそうです
- モーフリンク:ー100%~100% のモーフを使いたい場合
- クランプトマップレンジ:0~100% のモーフを使いたい場合
参考資料
使用ツール
- 3DCG
- LightWave3D
- 動画
- Bandicam
- ScreenToGif
