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

じゃっく
もう少し直観的に動かしたいな
そこで何か良いもの無いかな~と探して、使ってみたのがモーフリンクというものです
実際に組み込んで使ってみて、複数の表情を簡単に動かせることが確認できました
スライダーズというものも、画面上に簡易的なバー表示して操作するものでしたが、モーフリンクはより複雑なことができそうです
というわけで忘れないようにメモメモ( ..)φメモメモ
準備
モーフ付きモデルを用意

まずはモーフ付きのモデルが必要なので用意します
無ければいくつかモーフを作りますが、既に作ってある自作モデルを使うことにしました
頂点マップにモーフがあることを確認して、レイアウトにポイっと投げ込みます
これで準備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
- 画像
- CLIP STUDIO PAINT PRO