background

インジェクション

2008年02月29日(Fri)

Poserの自由度の高さの一つに、Poseファイルを本来の目的以外に利用できることがある。その例の一つがMATファイルだが、他にもPoseファイルはフィギュアのあらゆる情報を上書きすることできる。モーフチャンネルも例外ではない。内部名をきちんと指定すれば、目的のモーフチャンネルの値だけでなく、モーフデルタ自体も書き替えることが可能なのだ。

これを利用して、あたかも新しいモーフチャンネルが追加されたように見せかけるのがインジェクションである。見せかけるということは、つまり実際は追加されているわけではない。

  1. キャラクターファイルの該当バーツにモーフデルタが空のモーフチャンネルを用意する。外部名には適当な名前を付け、パラメータパレットに表示されないよう非表示にしておく。
  2. Poseファイルを用いて用意した空のモーフチャンネルの内部名を指定し、そのモーフデルタを上書きする。
  3. 同時にモーフチャンネルの外部名を分かりやすい名称に変更し、非表示から表示に変更する。

これがINJファイルが実際にやっている動作である。REMファイルの場合は2と3を逆に辿り、

  1. モーフチャンネルを表示状態から非表示状態に変更する。
  2. モーフデルタを上書きして空白にする。

を行っている。モーフデルタが入るべきチャンネルは既に用意されていて、その内容を書き替えているのである。この予め用意されたモーフチャンネルを空きチャンネルという。空きチャンネルは普段非表示状態になっているから、新しいダイアルが追加されたように見えるのだ。

古いINJファイルでは、モーフデルタを上書きする部分と表示/非表示を切り替える部分を分割して2回記述しているものがある。また、INJ/REMファイルの中には適用時に自動的にダイアルの値も変更するものがあるが、これも分割されていることが多い。おそらく、過去のバージョンではこれらの操作を同時に行うことができなかったか、Poserの動作が不安定になるなどの弊害があったのだろう。現在、少なくともP6以降ではまとめて記述しても問題なく動作する。

では、びっきさんを例にしてファイルの中身を見てみよう。

Victoria 3 SAE.cr2をテキストエディタで開くと、空きチャンネルが大量に用意されていることがわかる。モーフセットが入る名前のついたチャンネルの他にも、PBMDC~とかPBMCC~とかいう内部名の空きチャンネルがある。これらはキャラクターセットなどを使用するときに利用できるチャンネルである。DCがDAZ専用チャンネルで、CCがCommon(共用)チャンネルだ。

080229-1

この状態では非常に簡潔な記述しかされていないが、Poserにロードすると動作に必要なデータが付加される。ここに適当なモーフをインジェクションしてみると、

080229-2

このように、内部名と表示/非表示、そしてモーフデルタの部分が変更される。

DAZのモーフセットのINJ/REMファイルは、実際には "readScript" 命令によってモーフデルタ用の外部ファイルと表示切替用の外部ファイルを参照している。

080229-3

readScriptはロード時に外部ファイルを読み込む命令である。ファイルを細分化することで、(例えばAll Morph INJと個別のINJ等で)モーフデルタの記述が重複することを避けることが可能になる。ただ、これは同時にPoserのどうしようもない仕様によって、非常に面倒くさい問題を引き起こすことになるのだが……そのへんは、またいずれ。

インジェクションの登場で、まず第一にモーフの追加が容易になった。モーフの追加や削除の操作はそれほど難しくはないが、一度に大量のモーフを追加するとなると手間暇がかかる。Poseファイルを適用するという単純操作でこれを解決できるのだから、キャラクターセットの配布やモーフセットの販売に大きな弾みをつけたことは疑いないだろう。

またインジェクションはキャラクターファイルからモーフデルタを分離し、ユーザーが必要とする分だけを追加することを可能にした。モーフデルタは前回説明した通り、頂点の移動距離を示したものである。ユーザーがリアルさを追求し、フィギュアがハイポリゴンになればなるほど、頂点の数は増えモーフデルタの行数は飛躍的に増大する。モーフデルタのために費やされるディスク容量の増加はPoserが宿命的に抱える問題である。D|SをリリースするまでのDAZにとっては、このインジェクションが一つの回答だったのだろう。

ところで、インジェクションにはその発想からして根本的な問題がある。それは、あらかじめキャラクターファイル内に空のモーフチャンネルを大量に用意していなければならないという点である。また、チャンネル数が充分に用意されていたとしても、誰がどのチャンネルを使用するかはまったくの任意である。2つのキャラクターセットがあったとして、それが同じ空きチャンネルを使用していたら、先に適用した方が後から適用されたモーフで上書きされ消えてしまうのだ。このチャンネルのコンフリクト(衝突)を回避するのが、V4.1から導入されたExPである。

個人的には、使用されない空きチャンネルの容量も馬鹿にならないと思うのだが、DAZはそのへんはもう開き直ってしまったようである。そんなわけで、続きは次回。



Comments

今晩は~
普段目にする(モーフチャンネル追加)Poseファイルがそういう仕組みだったのかと感心するしかないです。
でも読んでいて面白かったです。
自分でキャラ作成や服を作成される人には面白いだけでなく必需的な知識なんでしょうね。
私の場合残念ながら実用まで持っていけそうも無いですが、面白いと思える事自体、有益な事だと思うので、これからもこのシリーズ楽しみにしています。

Name
sannzi #u2lyCPR2
Site
URL
Post Date
2008-02-29
Post Hour
23:20:59

Edit

>sannziさん
こんにちは~(^^
INJファイルはMATファイルに並ぶぐらい広く使われていますが、実はこんな動作をしてたんですね~。手作業でやろうと思うと結構な時間や知識がいる作業でますから、最初にこれを思いついた人はやっぱり凄いと思います。
他にもキャラクターの配布方法は何種類かありますが、使う側はINJ/REM方式が一番楽ですから、押さえておいて損はないですね。
そんなわけでいよいよV4に移るわけですが、色々と今立て込んで……(ああっ・汗)

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2008-03-01
Post Hour
14:01:31

Edit

今のところ最高性能はPMD形式だと思いますです。
ただpmd形式はP5以降って弱点がありますが・・・(笑)

Name
ほげほげ #-
Site
URL
Post Date
2008-03-02
Post Hour
20:56:50

Edit

>ほげほげさん
私も.pmd形式が一番容量も記述も色んな面で優れていると思います。なかなか利用されてないですが……pmdファイルを平のテキストに直すスクリプトなどもあるそうですし、開発側がちゃんと使い方をサポートすればいいと思うんですけど。(とっつぁん、それは言わない約束よ)

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2008-03-03
Post Hour
00:17:07

Edit

Post Comment

管理者にだけ表示を許可する


Trackback

※このブログにトラックバックを送信する場合、お手数ですが本文中にブログ該当記事へのリンクを含めてください。

トラックバックURL:http://rutenshikai.blog63.fc2.com/tb.php/300-6acc1d42



Menu

Profile

Kyotaro

確定名:Kyotaro
ネタを探しているらしい。

Categories

Calendar

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

Comments

Archives

Track back

RSS feed

Links

Search

※2011年4月6日のサーバ障害の為、エントリのアドレスが以前のものからズレています。当Blogのエントリにリンクを張っておられた方は、お手数ですがアドレスのご確認をお願い致します。

※Internet Explorer非推奨。