この説明は、DAZの第三世代のV3やM3などをターゲットに記述してあります。
また、第三世代までのDAZのフィギュアでモーフキットを利用した場合、「Injection Pose Builder」を使うとめちゃくちゃ簡単にできます。
まずはINJ.pz2というファイルが、どんな構造になっているのか再チェック。PMDの時にもpzファイルは作ったが、PMDを使用しない場合はモーフのScript呼び出しが増えます。
- Poser ver宣言
- (どんなツールを使って作成されたか、ベースは何かなどのメモ)
- Call Script(既成モーフキットの場合、実際のモーフが入っている個別pzファイルへのパス)
readScript”:Runtime〜以降のファイルまでのパス”という書式。
例えばDAZの第三世代のフィギュアの場合、これらのモーフキットのファイルは
Libraries>!DAZ>キャラクタ名>Body or Head>ChanVis or Deltas
に あります。
例えばM3だと、Chanvisのフォルダには「Hide/Unhide」Deltasのフォルダには<「INJ/REM Deltas」系のファイルがはいってます。(第四世代は仕様が変わってもっとややこしくなってますが。。)
内容を見ると、実際のモーフ情報は「Deltas」フォルダの方ですが、「Hide/Unhide」で hiddenを制御しているのでこの2つを対にして記述するようです。
INJファイルの場合(モーフを適用)
Deltas - readScript ":Runtime:libraries:!DAZ:Michael 3:Head:Deltas:InjDeltas.〜pz2" ChanVis - readScript ":Runtime:libraries:!DAZ:Michael 3:Head:ChanVis:Unhide.〜pz2" つまり指定のモーフをインジェクトして、見せる。(隠さない)
REMファイルの場合(モーフを削除)
Deltas - readScript ":Runtime:libraries:!DAZ:Michael 3:Head:Deltas: RemDeltas.〜pz2" Chanvis - readScript ":Runtime:libraries:!DAZ:Michael 3:Head:ChanVis:Hide.〜.pz2" つまり指定のモーフをリムーブして隠す。
4.CR2のモーフ適用部分
actor内のchannnel以下のgroupも不要で、TargetGeomのみのシンプルな構造。TargetGeom内もただkeysの数値のみ。
actor〜 { cannnels { targetGeom〜 { keys { k x x } }
5.閉じ
と、まぁこんな流れになっているようです。実際の作業としてはPMDのときにやったのと同じような流れでCR2builderを利用させていただきました。
1.actor head,leftEye,rightEyeのモーフ部分だけ残して後は削除。
2.上部メニューより「LeftPage>TreeView>Remove 0 TargetGeom ALL」を選択で値が0のモーフも削除。
3.あとは間にある不要部分の記述もさくさく削除
ちなみにCR2Builderでの削除は「Delete」。まとめて複数の行を削除する場合は、一行をクリックした後、目的の最後の行を「shift」を押しながらクリックで範囲選択できます。(その間ずっとshiftを押し続ける必要もなし)
手作業でやる人は、モーフ呼び出しの形式は決まっているので、最後のファイル名だけ省いたフォーマットを用意しておくといいかもしれない。こんな感じであとは最後のファイル名だけコピペすればいいように。。。
// --- M3 Deltas Includes ---// readScript ":Runtime:libraries:!DAZ:Michael 3:Head:Deltas:InjDeltas." readScript ":Runtime:libraries:!DAZ:Michael 3:Head:Deltas:InjDeltas." readScript ":Runtime:libraries:!DAZ:Michael 3:Head:Deltas:InjDeltas." // --- M3 ChanVis Includes ---// readScript ":Runtime:libraries:!DAZ:Michael 3:Head:ChanVis:Unhide." readScript ":Runtime:libraries:!DAZ:Michael 3:Head:ChanVis:Unhide." readScript ":Runtime:libraries:!DAZ:Michael 3:Head:ChanVis:Unhide."
Head:Deltas:InjDeltas〜やHead:ChanVis:Unhide〜以降の最後の〜.pz2のファイル名は基本的に全て一致します。
なので実際にはひとつの項目のパスを埋めたならば、その部分をコピーして、「全て置換」でその前のパスを変更してやったものをはりつけていけば、テキストエディタでも早いでしょう。
<異なる箇所>
<INJ> Deltas:InjDeltas ChanVis:Unhide
<REM> Deltas:RemDeltas ChanVis:Hide
テキストエディタを使ってこの部分を。。。
そうするとほら、一気に入れ替わりました。
こうやってできたファイル構造はこんな感じになります。これはINJの場合。
REMの場合は上記のパスが変わるのと、actor以下のKeysの数値が全て
k 0 0 (つまりモーフダイヤルが0の状態)
となるだけです。
ここも上記のファイルを作る際に、CR2BuilderでREM用に0にしたものを一緒に吐き出しておけば楽です。
完成したファイルに適当に名前をつけて、拡張子の「cr2」を「pz2」に変更して保存。これをPoseフォルダの適当な位置につっこむ。pngも作成してつけといた方がいいのは言うまでもないでしょう。
形式的にはPMDと一緒で、チャンネルに数値がそのまま読み込まれた状態ででてきます。
※ご注意
私は読み込みの負担とファイルサイズそのものを軽減するために、k 0 0 を省いた数値の入っているモーフのみを読み込む形式をとっております。
そのため、INJ前になんらかの表情系やモーフに関するダイアルなどをいじっていたフィギュアに適用すると、その分も加算されて狙ったものとは違った顔になってしまう危険性も秘めております。
それを回避するためにはk 0 0のダイヤルも含めたINJを作成してあらかじめリセットするようにするか、ノンモーフ状態のフィギュアに適用するよう注意書きをつけておいたほうがいいかもしれません。