画力がないなら立体を作ればいい

3DCGでワンシーンメイキング(オリジナル小説の挿絵作り)

Zbrushのツールを綺麗に片付けるプラグインを作りました

(約 6,500文字の記事です。)
f:id:yamato-tsukasa:20191006011201j:plain

Zbrushで色々作ったり、外部ソフトで作ったメッシュなどをインポートしていると、だいたいツールがごちゃごちゃになってカオスになる。多くの人が経験しているように、目的のツールがゴミツールに埋もれて探し出すだけでイライラする。今回はそれをスッキリ解消するプラグインを作りました。その名も「YT Tool Cleaner」。表示・非表示のクリーンアップだけでなく、実際にZPR上から削除するデリート機能も実装してます。

まずはあるあるの画像をご覧下さい

f:id:yamato-tsukasa:20191005225559j:plain

デフォルトの状態だともっとボタンが大きいはずですが、以下のようにすることで上の画面のような正方形のコンパクトなボタンにできます。

f:id:yamato-tsukasa:20191005232546j:plain

変更したらConfig > Store Configを忘れずに押して下さい。でないと再起動で元に戻ります。

選択色を灰色からカラー(オレンジ色など)に変更する方法はこちら。
Zbrushの選択色をカラーにして見やすくしよう - 画力がないなら立体を作ればいい

さて、この中で実際に必要なメッシュは何個あるでしょうか?もうすでに見たくないです(笑)既にカオス。
で、当プラグインをワンクリックした結果がこちら。

f:id:yamato-tsukasa:20191005225559j:plainf:id:yamato-tsukasa:20191005225810j:plain
比較すると一目瞭然。

f:id:yamato-tsukasa:20191006011146j:plain

そもそもなぜごちゃごちゃになるの?

プラグインの使い方の前に、そもそもなぜZbrushのツールはごちゃごちゃになるのかの原理を説明します。分かってしまうと早いです。
まずは初期化する方法から。いきなりこれが分からない人の方が圧倒的に多いはず。だって誰も教えてくれないんだもの。

Zbrush純正のツールリセット方法

このボタンを押すとツールの表示数を最小限にする事ができます。リセットボタンです。そして画面のようにコンパクトになります。

f:id:yamato-tsukasa:20191005231653p:plain

私は以前、この青とか茶色とかの謎のツールを消そうと頑張りましたが、無理でした。そもそもリセットボタンですら消えないということは、これが初期状態なのでしょう。要らないのに……。

ツールの並び順とは?

メッシュをインポートしたり、ツールのコピペやクローンなどしていると思いますが、ツールを作成した順番に並びます。それ以外の並び替えはできません(笑)
一番上から順番に左上から右下に並びます。

f:id:yamato-tsukasa:20191005231157p:plain

ここで説明を分かりやすくするために、画面に常時見えているこのツールの箱のことを「ツールボックス」と呼ぶことにします。正式名称は分かりません(笑)

ツールボックス内の見え方の説明はここまで。次はZbrushに登録されたツールの順番の話です。見え方とは無関係です。
ツールの大きなアイコンをクリックするとこんなウィンドウが現れます。

f:id:yamato-tsukasa:20191005231359p:plain

で、画像のこの番号順の並びが実はツールの作成順です。この画面上の並び順は、ツールを削除&再登録しない限り変えられません。

この画像、普段の画面よりもコンパクトでしょ?青い四角い枠のボタンをONにすると2D系の使わないツールが非表示になって画像のようになります。(当プラグイン実行時にはここを常にONにしています。親切設計。)

ツールの一覧は実は「このウィンドウから呼び出した順」に並ぶ

で、ここから一番大きなアイコンをクリックしてウィンドウからツールを選ぶと、選んだ順番にツールボックスに登録されていきます。これがごちゃごちゃになる原因。
そして、もちろんobjやZTLをインポートしても、その順番にどんどんとツールボックスに登録されていきます。並び順はドラッグとかで変更できない。辛い仕様です。

そしてこれ、トランスポーズマスターやGoBプラグイン、結合(Merge)などでもどんどんツールボックスに追加されていきます。これがカオスの原因です。
カオスなのに並び替えられないからますますカオスに。

リセットボタンは役に立たない

リセットボタンでツールボックスをスッキリさせられるけれど、今度は必要なツールを1つずつ全部プチプチとクリックして並べ直しですか?
これは何の修行でしょうか?

そこで当プラグインの登場です。

使い方

加工できるメッシュ以外を非表示にしたい

ここを押すだけ。ポリメッシュ3Dテンプレートなどは全て非表示。自作のメッシュやインポートしたメッシュだけがツールボックスに並びます。シンプル。
f:id:yamato-tsukasa:20191005230834p:plain

これは実はこういうことです。
f:id:yamato-tsukasa:20191005231359p:plain

毎回確実にこう並びます。
f:id:yamato-tsukasa:20191005231157p:plain

ツールナンバー48が重要

別にアイドルグループとは無関係ですが、ZbrushではツールのNo.47までが「消すことのできない固定的なテンプレツール」です。ポリメッシュ3Dもそうです。ですのでZPRの初期状態で最初に加工が可能なメッシュのツールナンバーは必ずNo.48になっています。

f:id:yamato-tsukasa:20191005234047p:plain

ですので、ユーザーデータのツールナンバーはNo.48, 49,50... というように必ず48以上になります。それ以外に「なってしまう」方法もあるのですが後述。直し方も後述。
基本的にはNo.48からスタートだと思っていて下さい。また、ツールを削除するとNo.48に詰めるように番号がずれます。飛び飛びにはなりません。これも厄介な仕様なのですが。

Reset ViewボタンはNo.48から順番に並べる動作

f:id:yamato-tsukasa:20191005230834p:plain

以下の画像と中央やや右側の赤い球、Zsphereの右側、(1)からNo.48になります。そこから右に昇順でナンバーが増えていきます。
f:id:yamato-tsukasa:20191005231359p:plain

Reset Viewボタンを押すとNo.48から順番にツールボックスに読み直す動作になります。なのでポリメッシュ3Dテンプレートなどが消えます。

Active to topボタンは選択したツールを一番上に置く

f:id:yamato-tsukasa:20191005234607p:plain

現在選択中のツールを、ツールボックスの(1)の場所に配置し、他のツールは作成順に並べるボタンです。

f:id:yamato-tsukasa:20191005231157p:plain

ユーザーに残された唯一の自由な並べ替え方法です(笑)位置的にも分かりやすい。メインの作業をする場合にはActiveToTopボタンが便利かも知れない。

例えば後ろから2番目にあるはずのDogを選択してからそのボタンを押すとこうなります。

f:id:yamato-tsukasa:20191005235009p:plain

今、どのツールで作業をしているかが分かりやすいですね。

Zsphereツールは厄介

赤い球、Zsphereツールだけは挙動が他のポリメッシュ3Dテンプレートと違って挙動が独特です。というのも、Zsphereテンプレートは、一度でもツールに読み込むとその瞬間にコピーがNo.48以降の末尾に強制的に作られるからです。上の画面でも赤い球が2つあります。Zsphereは本来No.46なのですが、ツールに読み込むとNo.48以降と入れ替わり、コピーも当然No.49以降にできますので、当プラグインでも消えません。

このように、Zsphereに限らず、何かの拍子でもともとはNo.48未満のツールがNo.48以降になってしまうことがあります。

解決方法は名前を付けて保存してから復元(File > Revert)あるいはZbrush再起動

保存ファイルを開き直すか、Zbrush再起動でテンプレートツール群は元のNo.48未満に戻ります。なぜ戻す必要があるか?それはNo.48以降のツールしか「Del All」でツールを削除できないからです。今までは非表示の話でしたが、次は、直接ツール及びそのサブツール群を「削除」する話です。

ZPRにはツール一覧で表示される全てのツールが保存される

例え非表示にされていても、大きなアイコンをクリックしたときに表示されるツールが全てZPRに保存されます。

(厳密にはNo.48未満のツールは保存されていなくてZbrushで呼び出されているだけですが、No.48以降のデータは全てZPRに保存されます。ややこしいので、全部保存だと思ってOK。)

なので初心者が気が付かずにギガクラスのZPRを作っていたりすることも(笑)消しましょう。

Zbrush純正のツールの消し方

ここを押せば消えます。
f:id:yamato-tsukasa:20191006000008p:plain

要するにツール内の全てのサブツールを消せば、その上の階層のツールも消えてくれるのです。
例外は、No.48とそれ未満のツールは消せないということです。これが罠です。

正常状態のツールならば当プラグインでソートしたものは消せる

正常なZPRの状態で当プラグインで並べ直したツールは全てDel Allで消せます。3,4個ならプチプチ消してもいいでしょう。
ですが、大量に溜まったツールを毎回プチプチするのは嫌です。

しかも、Del Allで消すと必ず出てくるコイツ。
f:id:yamato-tsukasa:20191006005234p:plain

ツールNo.41のポリメッシュ3Dテンプレートなので消せません。なので永遠にツールボックスに居座るのです。邪魔。


そこで今度は、ツールを実際に削除するためのボタンを実装しました。

Scan+Deleteボタンで全部のツールについて個別に「消す?残す?」ダイアログ

f:id:yamato-tsukasa:20191006000744p:plain

これを押すと、一度ツールを全て作成順に並べ直した後、後ろから順番にツールを自動選択し、1つずつ個別に「消す?残す?」というダイアログを出します。
ツールの削除ですのでやり直しがきかないため、最初に保存ダイアログを出します。

f:id:yamato-tsukasa:20191006000932p:plain

ZPRで保存すると万が一の時にFile > Revertで復帰できるよ(おすすめ)YES、もしNOならクイックセーブするよ。あるいはキャンセル。

あとは普通に消すか残すかキャンセルかのダイアログになります。

f:id:yamato-tsukasa:20191006001104p:plain

消すならYES、残すならNO、中断するならキャンセル

こんな感じでポンポンとツールを自動で巡回しますので、トランスポーズマスターや一時的な結合ツールだと思ったらどんどん消せばいいです。
しかもこのときのツールの表示には「自動で画面いっぱいにオートフィットで表示」させる技術が使われていますので、画面上のサブツールが小さくて見えない、ということもありません。毎回全サブツールを画面内にフィット表示させる安定動作です。過去のプラグイン開発経験が生かされています。

f:id:yamato-tsukasa:20191006002108p:plain

あの赤い球も2,3クリックでスッキリ消えました。当然あのスターもいません。常にスッキリです。

作業中にキャンセルを選んで一時的に作業を中断できます。他のツールなどを眺めるなどして確認し、一連の作業に戻る際にはContinueボタンをクリック。

f:id:yamato-tsukasa:20191006001236j:plain

すると、現在の選択中のツールにかかわらず、前回のツールを自動で選択し直して続きを開始します。

ただし一時中断中にツールを手動で削除するなどしてツールの総数が変わると、再開時の選択ツールがずれます。そんな時には諦めて最初からScan+Deleteボタンを押してやり直して下さい。まぁ1,2個程度なら後から手動で消しても大した手間ではないですが。

HELPボタンは英語の簡単な説明

ここまででしたような「No.48以下のツールが表示されたときには別名保存後にRevertするかZbrush再起動ね」ということが英語のメッセージで表示されるだけです。

ツールの謎の挙動からの開放、無駄なツールの削除ですっきり

実はこれ、私がBlenderとZbrushとの連携でGoBを使っていたときに、やたらとトランスポーズマスターも使っていたので、とんでもなく中間生成ツールが増えて困っていたのだ。なのでこのツールを作る際にツールの挙動がわかり、かつまとめて一気に消す方法も分かった。何よりも自分で使って、お、こりゃ便利、という便利プラグインになってよかった。

Zbrushをお使いでツールの整理のお困りの方は是非ご寄付と共に便利な創作活動をしてみませんか?

DLはこちら。

Zbrushのツール操作プラグイン「YT Tool Helper」(サブツールではない) - YAMATO Tools - BOOTH

結構しんどかった。1日作業でした。シンプルな物をシンプルに使えるようにするためには、裏で色々な仕掛けが必要なのです。。。

(追記)実際に使ってみた感想はこちら。

久々にZbrush用のプラグインを作ったが満足です(実際に使ってみた) - 画力がないなら立体を作ればいい


今回の創作活動は約8時間30分(累積 約1,139時間)
(386回目のブログ更新)