Fixモーフの作り方
2010年06月14日(Mon)
せっかくなので、首と頭部の繋ぎ目のFixモーフも作ることにする。

まず、空のシーンにM3-M3RR合成版ウィードをロードする。

そのままファイルメニュー>書き出し>Wavefront OBJを実行。範囲の指定ダイアログではシングルフレームを選択し、次のダイアログの階層ツリーでは一度ユニバースをクリックして選択を全解除してからNeckとHeadを選択。

さらに、出力オプションでは「モーフターゲットとして出力(ワールド変換なし)」と「ポリゴングループにボディのパーツ名を含む」にチェックを入れる。

名前と保存場所は適当にWeed.objとかでデスクトップに放り出す。
「あれ? IKをオフにしたりジョイントエディタでゼロポーズするのは?」と思った方もいるかもしれない。ゼロポーズにしたりIKをオフにするのは、ロードした状態ではワールド変換(パラメータパレットの変形グループのパラメータ、移動や軸回転、拡大縮小のこと)がかかっている可能性があるため、それをゼロに戻す必要があるからだ。なので出力時に「モーフターゲットとして出力(ワールド変換なし)」のオプションを選択しておけば、その工程は省略できる。習慣になってるなら無理に省略しなくてもいいけど。
ちなみに、出力オプションの補足説明をF3Dに投稿したので、おさらいしたい人は一読してもらえるといいんじゃないかなと思う。
さて、いったんPoserから離れて補正モーフを作る。モデラは入出力時に頂点順序を変更しないものならなんでもいい。画面はHexagon。Hexagonでは素のままインポートするとちょっと小さくなってしまうので、倍率を100掛けすると良いとのこと。

補正モーフはポリゴン数の少ない首側の頂点を動かして頭側に重ねることにする。
でき上がったら、今度はneckだけを出力する。Hexagonの場合は非表示パーツは出力しないので、headを非表示にした状態でエクスポートする。インポート時に倍掛けした時は、元の倍率に戻すのを忘れないように。今回は100掛けしてたので0.01倍にする。後のオプションは必要なし。
次に、Poserに戻ってHexagonで出力したジオメトリをモーフとして読み込む。けど、その前に今のモーフダイアルの値で、一時保存モーフを作成しておく。
空シーンにフィギュアをロードして、neckパーツを選択してオブジェクトメニュー>モーフターゲット作成を実行。最終的に削除するので、表示されるダイアログでは適当なモーフ名を入力する。

なんでこんな作業をしなければいけないのだろう? それは、モーフターゲットというものがあくまで「元のジオメトリとの差分」であり、モーフターゲット同士の組み合わせは「足し算」されるからだ。

今、いくつものモーフダイアルをいじって好みのキャラの顔にしていたとする。仮に、ある頂点が元のジオメトリからキャラ成分Xだけ移動しているとしよう(そこの人、記号が出てきたからって読むのを飛ばさないように!)。
Poserから出力した形状をモデラで微調整し、最終的に移動量はキャラ成分X+Fix成分αになった。このモーフ用ジオメトリをモーフターゲットとして読み込むと、Poserは元のジオメトリと読み込んだジオメトリを比較して、X+αの移動量を持ったモーフターゲットを新たに作成する。なので新しいモーフのダイアルを1にすると、元々のキャラ成分Xに新しいモーフのX+αをプラスして、2X+αの変形をしてしまうことになる。ところが本当に欲しいのは、モデラでFixしたαだけのモーフなのだ。
X+αのモーフターゲットからFix成分αだけを取り出すにはどうすればいいか。-Xを追加してゼロにするんである。具体的に、今までいじっていたモーフダイアルの正負を逆転させてやればいい。とはいえ、ダイアルが2つ3つ程度ならまだしもキャラの顔にするのに数十のダイアルを調整してるとなると、作業量が多くなって仕方ない。そこで、キャラ成分Xをひとまとめにした仮のモーフTempを作成したのだ。
特性パレットの「モーフターゲットの追加」ボタンをクリックし、右の「…」ボタンからモデラで作成したモーフ用ジオメトリを指定する。

作成されたダイアルの値を1にし、先ほど仮作成したモーフTempの値をマイナス2(各ダイアルの値を打ち消すのと、FixモーフのXを打ち消すのとで2倍)にする。これで、合計の移動量はFix成分だけになる。ここでオブジェクトメニュー>モーフターゲット作成を実行し、Fix成分だけのモーフを作成。

仮モーフTempと読み込んだモーフはもう必要ないので、右の三角印のメニューから「モーフの削除」を選択して削除してしまおう。

これで首と頭部の隙間がちょっとマシになった。どうしても目立つところは残ってるけど、レタッチで充分なんとかなる範囲かなあ、と思う。

モーフの足し算や引き算を使えば、ちょっとした補正モーフをモデラで作れるようになる。ただし、パーツにモーフやデフォーマ以外の変形、つまりワールド変換による変形がかかっていると、単純計算では解決できないので要注意。DAZの第四世代フィギュアは一見モーフダイアルに見えて、その実パーツの拡大縮小を遠隔操作してる、みたいなのが結構含まれている。単純に合成モーフを作成しても、元の変形が再現できないことがあるのはそのためだ。理屈を説明するとややこしくなるけど、モーフ同士の変形は足し算であるのに対して、回転や拡大縮小の変形はかけ算だからと考えておくといいかもしれない。