Poserで組み込むERC
2017年02月22日(Wed)
今回義眼を作り直したついでに、虹彩を凹ませたり、瞳孔の大きさを変えるモーフなどを仕込んだ。当然両目のパーツに別々にモーフダイヤルが存在するわけだけど、表情ならまだしもこのテのモーフは片側だけを操作することはまずない。両目とも一度に変更できた方が便利だ。でもって、ダイヤルがHeadパーツにあるとなお使い勝手がよろしい。となるとERCを仕込むことになる。
ERCは"Enhanced Remote Control"の略で、Poser 4の頃に確立したテクニックらしい。直訳すると拡張式遠隔操作、みたいな感じで「あるパラメータを別のパートのパラメータで制御する」という仕組みだ。公式にはBODY上で全身のモーフを操作するFBM (Full Body Morph) 以外は動作保証外だったけど、仕組み上はシーン内のすべてのチャンネルを操作することができる。というわけで、関節の補正や服の追従に当然のように使用されまくっていたし、黙認されてる状態だったわけだ。
ところが、いつかのバージョンからこのERCがPoser上で編集できるようになった。なったんだけど全然使ってなかった。テキストエディタでやった方が慣れてるし、間違いないし。とはいえ、ファイルを直接編集するのが怖いという人もいるだろうし、いい機会なのでやってみることにする。
ちゃんと調べたらPoser上でERCを組めるようになったのはPoser 8かららしい。ただ、パラメータにキーを打ってスプライン補完するという手法で、残念ながら後方互換がなかった。11のPro版では旧来のERCも組めるようになったということなので、両方試すことにする。
ちなみにERCは公式ではDependent Parameters、依存パラメータと呼ぶらしい。……あんまり言いたくないけど、こう「連動パラメータ」とか、せめて「追従型パラメータ」とか、意味で訳した方が直感的じゃないかなー。いや、いいんだけどさー。
差分増加型連動パラメータ
とりあえず従来のERCで、虹彩を若干凹ませるモーフIrisInを動かすパラメータを作ってみる。日本語版の正式名称がわからないので、ファイル内の記述"ValueOpDeltaAdd"から差分増加型と呼ぶことにする。まずは挙動を整理してみよう。
動かしたいのは右目と左目にあるIrisInというモーフだ。Headにダイヤルを作って、そちらを1にしたら両目の各モーフも1になるようにしたい。この場合、Head上のダイヤルがマスター(主)で、両目にある実際のモーフがスレーブ(従)となる。
というわけで、最初にマスター側のダイヤルを作成する。Headのパーツを選択した状態で、パラメータパレットのオプションメニュー(右の三角アイコン)から「Create new Master Parameter (新規マスターパラメータを作成)」を選ぶ。

ダイアログが開くので、作成したいパラメータ名を入力する。ここではEyeIrisInとした。説明がややこしくなるのでスレーブ側のモーフとは違う名前にしたけど、もちろん同名でも構わない。一応、一度作ったらPoser上からは変更できない内部名として使われるので、できれば英数字だけで指定するといいかな。

OKボタンをクリックしてダイアログを閉じると、依存バラメータパレットというパレットが表示される。けど、今は無視して閉じてしまおう。

次に、スレーブ側からマスターを指定する。スレーブの一つである右目のパートを選択して、モーフダイヤルIrisInのオプションメニューから「Edit Dependencies... (依存関係を編集...)」を選択する。

すると先ほどの依存パラメータパレットの、Value Operationsタブが開く。今回は右目のパラメータを選択した状態だ。

「Create New Value Op」ボタンをクリックして、リストから「Delta Add」を選択する。

Delta Addはマスターの値が変化するごとに、一定の比率でスレーブ側のパラメータを増減する演算子だ。リストには他にも足し算だとか掛け算だとかがある。実はPoserは昔からパラメータ同士の四則演算ができるのだ。まあ加算と減算はDelta Addを使えばいいし、乗算と除算はややこしいし、とりあえず今は考えない。
次にマスターを指定する。まずはActor: 「Select Actor」となっているリストから、マスターとなるパートここではHeadを選択する。

するとHeadパートに含まれるすべてのチャンネルが、非表示のものも含めてParamaterのリストに表示される。リストを手繰って目的のパラメータを探し出そう。新しく作った項目なら、だいたい最後の方にあるかな。

これで選択したパラメータが上のウインドウに加わったはずだ。

Scale Factorは、マスターの値が1変化するごとにスレーブがいくつ変化するかを表す比率、つまり係数だ。ここではマスター側が1になった時スレーブ側のモーフも1になればいいので、値は1のままでいい。マスター1につきスレーブを2ずつ変化させたいなら2を、マスター2につきスレーブを1変化させたいなら1÷2で0.5を入力する。
これで設定が終わったので、依存パラメータパレットを閉じる。
Headのパーツを選択して、作成したマスターパラメータをひねってみる。スレーブである目の該当のモーフが連動して動けば、ちゃんと設定できていることになる。
もし間違ったマスターを指定してしまった場合は、スレーブ側から依存パラメータパレットを表示して、いらないものを消してしまおう。

同じようにして、左目のIrisInモーフからもマスターパラメータ(HeadのEyeIrisIn)を指定してやれば、Headから両目のモーフを動かすことができる、というわけだ。
あとは特に必要ではないんだけど、Headのパラメータの設定を使いやすく編集しておく。

パラメータパレットに表示される名前(外部名)を変えたいなら、ここで。

Force limitsは、フィギュアメニューからリミットを使用してない時でも最大値と最小値を強制するかどうかだ。オフにする必要もないので、ここではチェックを入れている。
新しく作成したパラメータは「その他」のグループに入っている。なんとなく居心地が悪いので、自分の作ったオリジナルグループに移動しておく。

空になった不要なグループは、そのグループを選択した状態でパラメータパレットのオプションメニュー「Delete selected groups(選択グループを削除)」を選ぶと削除することができる。

ちなみに作成したパラメータをエディタで開いてみると、こんな風に記述されている。

strengthってのは知らないパラメータだなあ……どうやらDeltaをそのままコピーしてるみたいだけど、配布のために後方互換を確保するなら、削除した方がいいかもしれない。自分しか使わないならそのままでいいと思う。
キー制御型連動パラメータ
さて。
次はPoser 8から加わったキーを打つ方法を使ってみよう。これも記述の"ValueOpKey"から、キー制御型と呼んでみる。OpはたぶんOperationの略だ(違ったらごめん)。ERCのメジャーな使い方の一つ、JCM (Joint Control Morphs) を作ってみる。パートの屈伸が他のモーフを動かすやつだ。
右腕を100度曲げたら、自作した上腕の力こぶモーフ"Muscle"が1になるような仕組みを考える。この時、マスターはrForeArmのBend(屈伸=Y軸回転)で、スレーブはrShldrにあるモーフダイヤルだ。

最初に、マスターパートであるrForeArm(右前腕)のBend(屈伸)を選び、オプションメニューから「Edit Dependencies...(依存関係の編集...)」を選ぶ。

依存パラメータパレットが開き、左のKeyed Dependenciesタブが表示される。マスターパラメータがBend(屈伸)になっているのを確認したら、「Start Teaching(学習を開始)」ボタンをクリックする。

するとボタンの文字が「Stop Teaching(学習を停止)」に変わる。次にこの停止ボタンをクリックするまで、シーン内に存在するすべてのパラメータダイヤルがスレーブ候補として扱われる。この状態でマスターとスレーブの値を変更すると「キーを打った」と記録され、連動記述が加えられるのだ。これをERCとして機能させるには、少なくとも《初期値》と《目的値》の2つの状態を記録しなければならない。
依存パラメータパレット上でマスターのダイヤルを動かすか、直接入力で目的値の100にする。

するとシーン上でrForeArmのBendが連動して動く。この時、力こぶモーフMuscleも1になって欲しい。というわけでスレーブであるrShldr(右腕)を選択し、Muscleモーフの値を1にする。rShldrを選択するのはツリーからでもプレビュー画面からでも構わない。

スレーブの目的値をセットすると、Dependent Parameters(依存パラメータ)の一覧にパラメータが表示される。さらに下のグラフも一緒に動く。

次に初期値を設定する。依存パラメータパレット上でマスターの値を0に戻し、スレーブMuscleモーフの値も初期値である0にする。

すると依存パラメータパレットのグラフが傾いて、変化が記録されたことになる。これで二つのキーを打ったわけだ。

「Stop Teaching(学習を停止)ボタンをクリックして記録を中止する。これで設定は完了だ。腕を回転させると、モーフが連動して動くようになっているはずだ。
キーによる連動設定はスプラインで補完される。なので、最初のうちは急激に変化し、あとの方はなだらかに変化させるような設定を作ることもできる。依存パラメータパレットを表示して、グラフの適当なところをドラックしてみれば新たなキーが打たれる。

このへんの操作はアニメーションや影響範囲のグラフと似た感じかな。
キー制御型の連動設定は、キャラクターファイル上ではこんな感じに表示される。

初期値と目的値の間はスプラインで補完されるけど、その前後つまりここでは前腕の屈伸がマイナスの時や100を超える時、スレーブが初期値や目的値を超えることはない。これが従来の方法との大きな違いの一つだろう。
では、他にも連動するパラメータを増やしてみよう。再び「Start Teaching(学習を開始)」ボタンをクリックして、マスターの前腕のBend(屈伸)を目的値の100にセットする。でもって表情モーフなんかを変化させてみる。

開始ボタンをクリックしてから変更されたパラメータだけが追加されるので、他のパラメータに値が入っていても気にすることはない。初期値をマスター・スレーブ両方とも設定するのを忘れずに。
ちなみに自分は目的値→初期値の順に記録してるけど、この順番はどちらでも構わない。
追加してからやっぱりこの連動はいらないな……と思ったら、一覧の該当するスレーブを選択して「Remove Selected(選択範囲を削除)」ボタンをクリックする。

以上。Poserだけでも、直接ERCを組み込むことができた。
まあ、慣れた人はもうエディタで直接編集する方が手軽だとは思う。Poser上でやるメリットは、そのシーン上に存在するパラメータならなんでも……つまりフィギュアでなくても小道具やライト、マテリアルのようなパラメータダイヤルを持つものならなんでも連動設定を追加できることだろう。しかもその記述を追加するために、シーンを閉じたり開き直す必要もない。髪と服のWindモーフをBodyで一緒に動かせるようにしたり、シーンを使い回す前提なら補助ライトの明るさを親ライトの明るさに連動させてもいい。その場で思いついたものをササッと組み込めるという点では、結構便利なんじゃないかな。