形状の回転・拡大・縮小・移動を保存し、元に戻したり任意の形状に適用する ZBrush 用プラグインです。
変形前・変形後の 2 形状からアフィン変換用の 4x4 行列を求め、形状に適用したりテキストファイルに保存したりできます。
任意のメッシュ(例えばシンメトリカル編集している軸に従っている形状)を回転や移動や拡縮を行い任意の位置に配置した場合にそのときの変形を記憶して最初の位置と配置した位置を自由に行き来させられます。 移動先で編集してトポロジーが変化しても問題ありません。
全く別のメッシュに同じ変形を適用することも出来ます。図では変形後の位置に追加した別のメッシュに対して変形を適用しています。
2017/4/16 ver 0.1.1
自動適用機能で正しい .matrix が適用されない場合があったため修正
すでにインストール済みの方は DLL ファイルを上書きするだけで大丈夫です。
SubdivisionLevel がある場合は Lv1 で手順を行う方が早いです。どのレベルでも結果は同じです
アクティブな変形情報は [Calc Matrix] するたびに上書きされてしまうので必要であればファイルに保存しましょう
すべての Subtool に対して同じ変形を適用するのではなく、 Subtool ごとに別の変形を適用する場合があると思います。その際に Subtool ごとに [Import Matrix] -> [Apply Matrix] を繰り返さなくて良いように、複数の変形情報が保存されたディレクトリを指定すると Subtool 名から自動で適切な変形を適用することができます。
[Set MatrixDirectory] でそのフォルダを指定します (プラグインのフォルダ (ZPlugs64/ZMatrixOperator)は指定しないでください)
このとき default.matrix を保存するダイアログが出ますが、フォルダを指定するだけなので既に default.matrix が存在しても上書きはされません
default.matrix が存在しない場合は新規作成されます (「変形を行わない」 という変形情報が保存されます )
[Apply DM] を押します
Subtool 名と同じ名前のファイルがあれば自動で選択し適用します (アクティブな変形情報は上書きされません)
もし同じ名前のファイルがない場合は default.matrix が適用されます
[Apply DM Inversely] を押します
Subtool 名と同じ名前のファイルがあれば自動で選択し戻す方向に適用します
ZBrush のレイヤー機能は頂点モーフなので回転や拡縮のあるレイヤーがある場合は期待したように動作しません。回転や拡縮のあるレイヤーがある場合、すべてのレイヤーはそのレイヤーが記録された時の姿勢を再現しなければいけません。
そういった場合でも本プラグインを使用すれば回転や拡縮のあるレイヤーの変形情報をエクスポートし、スカルプトのあるレイヤーもすべて基本の位置に対するスカルプトとして再構成できます。
おそらくレイヤー機能は全く動かないものに対するスカルプトの度合いを調整したり、こまめに Bake していくのが本来の使い方なんじゃないかなと思います。詳しい説明が必要であれば別途書きます。
既存の機能の組み合わせで似たようなことは出来るのですが使いづらかったり手順が面倒だったりそもそも出来ないことがあったりします。
頂点モーフなので回転を含んだレイヤーがあるとそれ以外のレイヤーの操作方向がずれてしまう
頂点モーフなのでトポロジーを変えられない
サブツールが煩雑になる
あまり精度が良くない
操作が面倒だしスクリプト化しづらい
ハイポリでも早いのは良いところ
全部出来るようになりました。めでたい。
スキューや XYZ が同一の倍率ではないスケールは [Calc Matrix] で求めることは出来ません
ただしそういう行列を自分で作って .matrix ファイルにし [Import Matrix] すれば [Apply Matrix] [Apply Inversely] 自体は正常に使えます
変形前形状と変形後形状が異トポロジーの場合は [Calc Matrix] が正常に動作しません。
もし異トポロジーな変形前後のデータしかない場合は変形前形状をうまく変形後形状に位置合わせするか、変形前と変形後でそれぞれ代表的な頂点を結んだポリゴンを作成し、そのポリゴン(三角形 1 枚で大丈夫です)間で変形行列だけ別個作成してください (頂点オーダーは一致させてください)
自動適用機能使用時、サブツール名に __ (2連続アンダースコア) があった場合は __ 以降は無視します
ZSceneManager と同時に使用できるようにするためサブツール名は __ (2連続アンダースコア) 前までを使用します
例えば hogehoge__1__1b_Group1__1 というサブツール名に対して [Apply DM] した場合は hogehoge.matrix が適用されます
32bit 版はありません
ZBrush 5 では 32bit 版は無くなるそうなので作らない予定です。
[Calc Matrix] や 各種 [Apply *] は SubDivision Lv1で行ってください。上位レベルで行うと (変形適用では無く import/export が) 重いです。
結果はどのレベルでも同じなのでレベル変更による再計算をして欲しくないときはそのままのレベルでも構いません。
自動で最下位レベルに下げてから適用する様に変更する予定は今のところありません
自動適用機能 のサブツール名とmatrixファイル名の比較は大文字小文字を区別しません。
Windows が大文字小文字を無視するうえ ZBrushがサブツール名の頭文字を強制的に大文字にしてしまうため全部無視することにしました。もし部分的に大文字小文字を区別しているところがあれば意図しない動作なので報告いただければ幸いです。
自動適用機能は現状 subtool 名とファイル名の完全一致なので、例えば hair を分割して hair2 hair3 が出来た場合、同じ変形を適用するには同一内容のファイルをそれぞれ hair.matrix hair2.matrix hair3.matrix という名称で保存しておく必要があります。これは面倒なので出来れば hair+.matrix があれば hair1 や hair2 や hair-base 等の Subtool に対して適用されるような機能が欲しいです。
ZSceneManager を使用してない人は hair hair__2 hair__3 という名前を使用すると全部 hair.matrix が適用されますが、ZBrush は Subtool 名を入力しようとすると US 配列っぽいよく分からない何かになるのでアンダースコアが気軽に入力出来ません。今のところ以下のような方法を考えています
他人の Subtool 名を見たことがほぼないのでフィードバックいただければ参考にします。
全サブツールが同じ変形で良い場合は default.matrix を使用してください
ユーザーに 6 点指定する手順を行ってもらえるのであれば作るのは簡単なので多分そのうち追加します。
この機能があると同トポロジーでの変換行列作成も爆速に出来ます。変換の作成だけで適用は早くなりません。
不具合報告は @ichiyonnana にリプライください。余裕があればなんとかします。