ZBrush 向けプラグイン ZAffineTransformer

概要

形状の回転・拡大・縮小・移動を保存し、元に戻したり任意の形状に適用する ZBrush 用プラグインです。

変形前・変形後の 2 形状からアフィン変換用の 4x4 行列を求め、形状に適用したりテキストファイルに保存したりできます。

使用例

任意のメッシュ(例えばシンメトリカル編集している軸に従っている形状)を回転や移動や拡縮を行い任意の位置に配置した場合にそのときの変形を記憶して最初の位置と配置した位置を自由に行き来させられます。 移動先で編集してトポロジーが変化しても問題ありません。

全く別のメッシュに同じ変形を適用することも出来ます。図では変形後の位置に追加した別のメッシュに対して変形を適用しています。

ダウンロード

ダウンロード (ver 0.1.1)

更新情報

2017/4/16 ver 0.1.1

自動適用機能で正しい .matrix が適用されない場合があったため修正

すでにインストール済みの方は DLL ファイルを上書きするだけで大丈夫です。

インストール

  1. ファイルをダウンロードします
  2. ZMatrixOperator.zsc と ZMatrixOperator フォルダを Program Files (x86)\Pixologic\ZBrush 4R7\ZStartup\ZPlugs64 内にコピーします
  3. 次回の ZBrush 起動時から自動で Zplugin メニューへ読み込まれます

メニュー構成

Set BaseObject
変形前の形状を表示した状態で押すとその時点での形状が変形前として記憶されます。
Set TransObject
変形後の形状を表示した状態で押すとその時点での形状が変形後として記憶されます。
Calc Matrix
変形前の形状と変形後の形状の違いからどのような変形がなされているのか計算し記憶します。計算された変形情報がアクティブになり Apply Matrix 等の機能で使用されます。
Clear Object
変形前の形状と変形後の形状を記憶していない状態に戻します。
Export Matrix
アクティブな変形情報をファイルに保存します。
Import Matrix
ファイルから変形情報を読み込みアクティブにします。
Apply Matrix
現在編集中の SubTool に対してアクティブな変形を適用します。
Apply Inversely
現在編集中の SubTool に対してアクティブな変形を戻す方向に適用します。
Set MatrixDirectory
複数の変形を自動で使い分ける機能 (後述) で使用するディレクトリを指定します。
Apply DM
現在編集中の SubTool に対して 自動で選択された変形を適用します。
Apply DM Inversely
現在編集中の SubTool に対して 自動で選択された変形を戻す方向に適用します。
Version
プラグインのバージョンを表示します。
Show Status
通常は使用しません。

使用手順

変形を記憶し適用する

SubdivisionLevel がある場合は Lv1 で手順を行う方が早いです。どのレベルでも結果は同じです

  1. 基本形状で [Set BaseObject] を押します
  2. 任意の移動・回転・拡縮を行います。最終的な座標値のみで計算するため移動・回転・拡縮の順序や回数は自由です。ただし拡縮に関しては XYZ が同じ倍率になるようにしてください
  3. [Set TransObject] を押します
  4. [Calc Matrix] を押します。変形情報が計算されアクティブな変形情報として記憶されます
  5. この状態で [Apply Inversely] を押すと変形前の状態に戻ります
  6. [Apply Matrix] を押すと記憶した変形と同じ変形が適用されます

変形情報をファイルに保存する

アクティブな変形情報は [Calc Matrix] するたびに上書きされてしまうので必要であればファイルに保存しましょう

  1. [Calc Matrix] が済んでいる状態で [Export Matrix] を押します
  2. ファイルの保存先とファイル名を指定して保存します。後述する変形の自動適用機能を使用する場合は "SubTool 名.matrix" のまま保存してください

変形情報をファイルから読み込む

  1. [Import Matrix] を押します
  2. ファイルを指定して開きます。読み込まれた変形情報がアクティブになります

変形の自動適用機能

すべての Subtool に対して同じ変形を適用するのではなく、 Subtool ごとに別の変形を適用する場合があると思います。その際に Subtool ごとに [Import Matrix] -> [Apply Matrix] を繰り返さなくて良いように、複数の変形情報が保存されたディレクトリを指定すると Subtool 名から自動で適切な変形を適用することができます。

  1. [Export Matrix] で保存した .matrix ファイルを同一のフォルダに保存しておきます
  2. [Set MatrixDirectory] でそのフォルダを指定します (プラグインのフォルダ (ZPlugs64/ZMatrixOperator)は指定しないでください)

    このとき default.matrix を保存するダイアログが出ますが、フォルダを指定するだけなので既に default.matrix が存在しても上書きはされません

    default.matrix が存在しない場合は新規作成されます (「変形を行わない」 という変形情報が保存されます )

  3. [Apply DM] を押します

    Subtool 名と同じ名前のファイルがあれば自動で選択し適用します (アクティブな変形情報は上書きされません)

    もし同じ名前のファイルがない場合は default.matrix が適用されます

  4. [Apply DM Inversely] を押します

    Subtool 名と同じ名前のファイルがあれば自動で選択し戻す方向に適用します

レイヤーで管理されている変形の分解

ZBrush のレイヤー機能は頂点モーフなので回転や拡縮のあるレイヤーがある場合は期待したように動作しません。回転や拡縮のあるレイヤーがある場合、すべてのレイヤーはそのレイヤーが記録された時の姿勢を再現しなければいけません。

そういった場合でも本プラグインを使用すれば回転や拡縮のあるレイヤーの変形情報をエクスポートし、スカルプトのあるレイヤーもすべて基本の位置に対するスカルプトとして再構成できます。

おそらくレイヤー機能は全く動かないものに対するスカルプトの度合いを調整したり、こまめに Bake していくのが本来の使い方なんじゃないかなと思います。詳しい説明が必要であれば別途書きます。

プラグインの作成目的と類似機能との違い

既存の機能の組み合わせで似たようなことは出来るのですが使いづらかったり手順が面倒だったりそもそも出来ないことがあったりします。

レイヤー機能

頂点モーフなので回転を含んだレイヤーがあるとそれ以外のレイヤーの操作方向がずれてしまう

頂点モーフなのでトポロジーを変えられない

コンタクト

サブツールが煩雑になる

あまり精度が良くない

操作が面倒だしスクリプト化しづらい

ハイポリでも早いのは良いところ

既存の機能ではできないけどどうしてもやりたかったこと

全部出来るようになりました。めでたい。

制限事項

その他特記事項

追加したい機能

自動適用機能でワイルドカードを使用可能にする

自動適用機能は現状 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 にリプライください。余裕があればなんとかします。

戻る