3DCGで何をどう作るか考え中

ZbrushとBlenderの使い方、ヒント、コツなど。たまにZbrushプラグイン開発も。

GoBアシストツールがVer.2にバージョンアップ!大幅な安定化とシンプル化を実現

(約 12,600文字の記事です。)

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

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

GoBアシストツールがVer.2に生まれ変わりました!


GoBアシストツール(ZbrushとBlenderをワンクリックで連携させるツール)



シンプルさ、安定性に磨きがかかり、ZbrushとBlenderとを往復させる上でこれ以上のツールはないという自信作になりました。

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

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

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

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

基本的に実現できることはVer.1と同じで、快適性と安定性を大幅に向上させました。
なので、「何ができるの?」を知りたい人はこちらのVer.1のGIF動画などをご覧下さい。

ZbrushとBlenderを連携・同期させる「GoBアシストツール」の使い方 - 3DCGで何をどう作るか考え中

また、基本的な注意事項や制限事項などもVer.1と同様ですので、インストール方法などの基本的な情報は上記サイトをご覧下さい。Ver.2ユーザー様にとって必要な情報だけを上から拾い読みできるように上記サイトをメンテナンスしました。初めてGoBアシストツールをお使いの方はまずは上記サイトをお読み下さい。

既存ユーザー様は続きをお読み下さい。

更新履歴

2020/06/30 Ver.2.1.0公開。「全てのサブツールをBlenderにまとめて転送」「目玉アイコンONのサブツールのみまとめて転送」ボタンを実装。記事はこちら。

2020/06/29 Ver.2.0.2公開。Zbrush起動時にダイレクト転送モードがONになっているバグを修正。Ver.2.0.0、Ver.2.0.1公開終了。

2020/06/27 ページ下部にTipsを追加。サブツールが100近い場合や各サブツールが超絶ハイポリで重い場合の動作の遅さの回避策のヒントを追記。

Ver.2の特徴

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

Ver.1と比較した場合の特徴です。

  1. ZbrushからBlenderへの転送操作がGoBボタンワンクリック
  2. GoZキャッシュファイルに起因する複数のバグを修正(サブツール名に勝手に数字が付与される、別のツールに転送されるなどの修正)
  3. Zbrush起動後に2つのボタンをクリックするだけの初期化機能を追加
  4. 初期化機能により両者間で自由にオブジェクト転送可能(Zbrush→Blenderが必須でなくなった)
  5. 最初からBlenderで作ったオブジェクトを新規サブツールとして追加する機能

これにより、ZbrushとBlenderとの往復が更に簡単かつ安全・快適に行えるようになりました。
また、初期化動作を実装したことで、作業の途中でBlenderファイルやZbrushファイルを保存してPCをシャットダウンや再起動させても簡単に以前の往復可能状態に復帰させられます。これはかなり大きな改善ポイントです。

BlendファイルとZPRファイルとをセットで管理すればいつでも両者をリンクさせて再利用できるからです。

Ver.2の制限事項

Windows専用プラグイン」になりました。元々Mac版は、まず私の環境にMacが無いのでサポートがほぼできていなかったのですが。Ver.2では今までとは違って特定のフォルダにアクセスする必要があり、WindowsとMacとではファイルシステムが異なるので、そのフォルダパスが異なります。そしてMacがない以上動作検証できないため、今回から明示的にMacは動作対象外です。

今後、よほど熱心に動作検証して下さるMacユーザー様からのしっかりとした協力やサポートが無い限り、GoBアシストツールのMac対応版は作成未定です。
なおファイルシステムの違いが影響しないプラグインについては新旧関わらずどちらでも動作するはずなので、それは従来通りです。Windows専用版の話は、今のところGoBアシストツールに限っての話です。
(ただ今後の開発ではもしかしたらWindows版のみのサポートに限って開発する可能性はあります。未定。)

動作環境

執筆時点の動作確認済みの環境は以下の通り。

  • Windows10 Pro
  • Zbrush 2020.1.4
  • GoB Ver.3.3.12
  • Blender 2.83.1

はじめてお使いの人へ

まずはこちらのマニュアルに従ってGoBアドオンを正しくインストールしてください。

Zbrush とBlenderにGoBを正しくインストールする方法 - 3DCGで何をどう作るか考え中

例えばZbrushのテンプレートDogをZbrushからBlenderに転送できることを確認した上で、続きをお読みください。

使い方(初期化編)

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

Zbrushを起動させたら、まずはClearボタンを押す。OKを押す。

次にInitA(Initial All、全初期化)ボタンを押す。「ちょっと時間がかかるかもよ」というダイアログの後に、サブツールのフルスキャンが始まります。気長にお待ち下さい。
これで準備完了です。

他のボタンについてはあまり重要ではないので後述。

ZbrushからBlenderへ転送

Blender起動後にここを押して受け入れ準備を整えて下さい。

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

Zbrush側での操作はGoBボタン1クリック。以上です(笑)
ZbrushからBlenderに転送する場合には転送時にリンクが新規作成されるので安心して転送できます。

(つまり重要なのは逆にBlenderからZbrushに送る場合なのです。初期化動作の価値はそこにあります。)

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

メッシュ転送の安全性とその他の諸事情により、GoBアシストツールではZbrushからBlenderへはサブツールを1つずつ転送することをオススメしています。ハイポリメッシュは重いからBlenderが落ちるリスクもあります。1つずつの転送は面倒ですが安全性も重要です。

なお、Ver.2.1.0から「全てのサブツールをワンクリックでまとめてBlenderに転送」するボタンと「目玉アイコンがONのサブツールをワンクリックでまとめてBlenderに転送」するボタンとを実装しました。

f:id:yamato-tsukasa:20200630234204j:plain
f:id:yamato-tsukasa:20200630234619j:plain

各自使い分けてください。

BlenderからZbrushへ転送(Blender上のオブジェクト名が既にZbrush上のサブツール名として存在する場合)

まずは下準備としてZbrush側でサブツールを受け取りたい「ツール」を選択して下さい。現在選択中のツール内に「もし同名サブツールがあれば」置換されます。

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

GoBアドオンの操作です。オブジェクトモードでオブジェクトを選択してGoBエクスポートボタンを押すだけ。
選択したオブジェクトと同名のサブツールは自動的に置換されます。しかもそれまでのサブツールの履歴も保持されているので便利。

Ver.1みたいに「GoBアシストツール経由でBlenderに送ったオブジェクト」という限定がなくなります。必要な処理は初期化によって実施済みなのです。

BlenderからZbrushに戻す際には複数選択も可能です。その際には一括転送になり、選択したオブジェクトと同名のサブツールは次々と置換されます。

Blenderで作った新規オブジェクトをZbrushに転送(Blender上のオブジェクト名がZbrush上に存在しない場合)

一言で言うと「スザンヌはダイレクト転送モードでZbrushに送れば、今のツール内の最後にサブツールとして直接転送できる」ということです。
一方、普通にGoB転送すると新規ツールに転送されます。そこからサブツールのコピペで移動させるのが面倒だという人のためにダイレクト転送モードを用意しました。

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

まずはBlender側から転送したい「オブジェクトの名前が、Zbrushのプロジェクト内で使用されていない唯一の名前であるか確認」して下さい。これはとても重要です。

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


(1)Direct Transfer(ダイレクト転送)ボタンをクリック。重要事項の解説が出てきます。(後述)
(2)0だったスライダが1に(右側に)移動します。これはただの表示のみなので操作する必要はありません。


あとはBlenderからZbrushにエクスポートするだけでOK。オブジェクト名と同じ名前のサブツールがツールの末尾に追加挿入されます。1つでも複数でも転送可能。
転送が終わったら(3)を押してダイレクト転送モードをOFFにします。


ダイレクト転送モードの注意点

ダイレクト転送モードは色々なセーフティー機能がOFFになるので、ユーザーのInitA操作タイミング、キャッシュファイルの状態により、以下のような症状が出る場合があります。ですので、ダイレクト転送後にはツール・サブツール名の両方を必ず確認して下さい。

転送先に「ツール丸ごと重複で作成されていないか」

これはぱっと見では正常に見えるから厄介です。必ずチェックして下さい。

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

InitAボタンを押した後に、Zbrush側でのユーザー操作などによってリンク状態がおかしくなるとこういう症状が出ます。間違ったツールをDel Allで削除してから、Clear, InitAボタンで初期化して再度転送してみて下さい。

ツールの整理にはこのプラグインがオススメ。GoB対応済み。

Zbrushのツールを綺麗に片付けるプラグイン

yamato-tsukasa.booth.pm

新規ツールに転送される

もしかしたらダイレクト転送モードがOFFのままになっている可能性があります。
間違ったツールをDel Allで削除してから、Clear, InitA(InitAは省略可)ボタンで初期化します(重要)。これをしないと転送先が新規ツールにリンクされたままです。

次に、Offボタン、ダイレクト転送ボタンの順に押し直し、確実にダイレクト転送モード(1=ON)にして下さい。

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

Blenderから再度転送してみて下さい。
(終わったらOffボタンを押しておきましょう。)

同一の重複サブツールが転送される

例えばInitAボタンを押した後に、手動でサブツールをリネームすると、この現象が起こりえます。初期化情報にはリネーム後のサブツールの情報がない上に、ダイレクト転送モードなので名前チェック機能が働かない状態でサブツールとして転送されるため、サブツール名の重複が起こり得ます。こればかりはユーザー様の自己責任においてサブツール名の独立性を確保して頂く他ありません。当プラグインでは回避できませんし、問題発生時には責任を負いません。Zbrushではサブツール名の重複回避はユーザー様の自己責任で行う事になっているからです。(もちろん回避機構はいくつかZbrushに実装されていますが完璧ではないのです。なので最終的にはユーザー様の自己責任でサブツール名を管理・運用するしかありません。)


ダイレクト転送モードではユーザー様がサブツール名をきちんと管理できる状態でしか利用すべきではない、とも言えます。転送後に重複が見つかったらすぐに手動でリネームして、サブツール名の一意性を確保して下さい。

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

面倒くさがりな人へのアドバイス

最も安全なのは、ダイレクト転送モードを使わずに、ごく普通にBlenderからGoBエクスポートすること。新規ツールに転送されたサブツールをコツコツとZbrush内コピペで作業ツールに移植し、移植後に改めて手動でリネームする。(必要ならばその後にInitAボタンを押して休憩する。)

ただし、サブツールのコピペは一手間かかる。複数あれば手間は倍増する。で、サブツール名とオブジェクト名をユーザー様がきちんと管理できているならば、例えばBlenderでベースメッシュを作り、ダイレクト転送モードでサクッとBlenderからZbrushのツールの末尾に転送(&放置)できるので、手間を考えると結構効率的なのです。

ダイレクト転送モードをONにしてBlenderからGoBエクスポートボタンを押す。そして飲み物を冷蔵庫に取りに行くもよし、トイレに行くもよし。戻ってくれば全てが終わっています。そういう考え方もあります。
なおダイレクト転送モードでサブツール選択状態が上下に無駄に何回も往復するのはGoZ機能の仕様であり、GoBアドオンおよび当プラグインでは制御できない部分です。仕様だと思って諦めて下さい。


ま、例えて言うと「包丁も誤って使えば怪我するが、正しく使えば効率よく料理ができる。」
ダイレクト転送モードはそれに似ています。

転送が終わったらすぐにダイレクト転送モードをOFFにする理由

上記のように、少々危険な側面もあるため、基本的にはこれはOFFで運用して下さい。この機能がOFFの場合でキャッシュファイルが壊れるなどすれば、それらは全て新しいツールのサブツールとしてインポートされるので、動作の異常に気が付きやすいからです。
気付いた後にリネームしたり初期化動作を行えば、あとは転送が上手くいきます。

実は常時ONのほうが運用の効率がいい場合もあるのですが、今回のリリースでは安全なほうを採用しています。
また切り忘れ防止の安全策としてGoBボタンを押した時にダイレクト転送モードがONのままになっている場合には自動的にOFFになりメッセージが表示され、動作が強制終了します。再度GoBボタンを押して転送作業を開始して下さい。

(GoBボタンの動作とダイレクト転送モードとは無関係じゃないの?)
ダイレクト転送モードはBlenderからZbrushに戻すときに意味があるので、本来はGoBボタンとは無関係です(笑)ですが、数少ないボタン操作のうちZbrush側で当プラグインのボタンを押す機会が最も多いのは恐らくGoBボタンなはずなので、ダイレクト転送モードのうっかり切り忘れをチェックするためにGoBボタンを利用しています。
またGoAll, GoVisボタンにも同様の機能を実装しています。

Zbrushへの転送に失敗した場合の復旧方法

基本的にこの手順でほぼ既知の転送ミスは正しく直ります。

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

  1. 誤って転送されたツールを削除する(Dell All)
  2. Clearボタンを押す
  3. InitAボタンを押す
  4. Blenderから再度エクスポートさせる

つまり初期化動作です。キャッシュファイルが正常な状態に更新された場合は転送に失敗することはほぼありません。
なので、とにかくZbrush再起動時やこれから作業を開始する、という時には、迷わずClear, InitAボタンをポンポンッとクリックして下さい。そうすれば安心・安全。

サブツール名の一意性の重要性

以下、ツールとサブツールは別物ですので簡単に知識補充。

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

さて、プロジェクト内にユーザー作成のツールが複数ある場合でも、プロジェクト内で唯一のサブツール名となるようにして下さい。GoBアシストツールが正常動作するためには、

  1. サブツールがプロジェクト内で唯一であること
  2. 各ツールごとにInitAボタンで初期化すること
  3. (Blenderで転送する直前にInitAされていればより安全)

上記2つが重要です。これはZbrushでもそのような設計になっています。だからZbrush内でサブツールをコピペすると必ずリネームされるわけです。
そして現在選択されているツール内に同名サブツールが見つからなければ新規ツール内に転送されます。

ダイレクト転送モードがONの場合には転送後にユーザーの目視確認で同一ツール内にサブツール名の重複がないことを確認して下さい。(あるいはBlender側のオブジェクト名がZbrush内サブツールに存在しない名前になっていることを確認して下さい。)

サブツール名が唯一であって初期化動作を終えれば、あとはZbrushからBlenderだろうが、逆にBlenderからZbrushだろうが自由に往復可能です。シンプルでしょ?


他のボタン

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

InitS(Initial Solo、1つのサブツールのみ初期化)

一番右端のInitSボタンは、選択状態のサブツールを1つずつ個別に手動で初期化するためのボタンです。例えば何百というサブツールがあってそのうちの数個しかGoBアシストツールで転送しない場合など、利用できるかも知れません。が、安全策をとるならば素直にInitAを押してしばらく待つのが無難。

フォルダOn/Offボタン

フォルダOn/Offボタンはその名の通り、Zbrushのサブツールでフォルダ機能を利用している場合にそれの有効・無効をトグル切り替えさせるボタン。GoZ機能ではフォルダ機能が有効になっていると正常動作しないので、GoBアシストツールでは利用時に強制的にフォルダ機能をOFFにしています。それを再びONにしたい人のために用意したボタンです。フォルダ機能を使わない人にとっては無意味です。

Tips

サブツールが100近く(あるいはそれ以上)あるのでInitAに1分以上かかる(あるいは各サブツールが超絶ハイポリで重い場合)


サブツールが沢山ある場合、あるいは各サブツールが超絶ハイポリで重い場合、InitAで全サブツールを初期化するのは1分以上~数分かかると思います。そのような場合はGoB転送するサブツール1つだけを初期化する使い方がいいでしょう。InitAではなくてInitS(ソロのS)ボタンを押します。これは現在選択中のサブツール1つだけを初期化するので、せいぜい数秒でしょう。その後Blenderからオブジェクトを受け取ればいいでしょう。

またZbrushからBlenderに送る場合には「送るときに初期化されて送り出される」のでそもそも初期化は不要です。BlenderからZbrushに送るときに初期データが無いとGoZが新規ツールに転送してしまうわけです。

で、これについても待ち時間の問題があります。

ダイレクト転送をしない方が便利な場合がある

ダイレクト転送を実行するとサブツールの選択状態が上下に何度も往復します。これはGoZ機能の仕様であって、GoBおよびGoBアシストツールでは何ともできません。そしてサブツール数が沢山あると、この待ち時間もまた長くなります。
いっそのこと、一度新規ツールにインポートした後でZbrush内コピペで望みのツールに移動させたほうが早いこともあります(笑)

その際には「BlenderからZbrushの新規ツールに送りたいからダイレクト転送ボタンを押さない」、つまりごく普通にBlenderからZbrushにGoBエクスポートすればいいわけです。

ただしBlender上でGoBエクスポートボタンを押す前に、今一度「オブジェクト名がZbrush上にない唯一の名前」になっているかは確認して下さい!

その後、Zbrush内でサブツールをコピペして、ペースト後に正しいサブツール名に変更し、新規作成された新規サブツールを手動で削除すればOKです。

手間はかかりますが待つよりもマシ、という人にオススメです。

ただ、その際に、偶然別件などで過去に全く同じオブジェクト名のものを転送していた場合、過去のキャッシュファイルが悪さをする可能性があります。もしそうなったらクリアボタンを押して全クリアしてからやり直してください。それで恐らく正常に新規ツールに転送されるでしょう。

その場合にはクリアボタンとInitSボタンとを多用することになるかと思います。



ユーザー様の利用状況は人によって全く異なるため、全員を完全に満たす仕様は存在しません。今は、

  1. 最も安全な運用方法
  2. より簡単な運用方法、
  3. ケースバイケースの運用方法の紹介

の優先順位で実装して利用方法を作成しています。

今回はまずは「手順は簡単だけど待ち時間が長くなりすぎる」というケースを最初に紹介したので、次に「待ち時間を短くして手数を増やす方法」をご紹介しました。

Ver.2.1.0の変更点

(2020/06/30 追記)

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

全てのサブツールをワンクリックでまとめて転送可能。(動作完了までしばらくお待ちください。またBlender側での読み込みに時間がかかる場合があります。しばらくお待ちください。)
f:id:yamato-tsukasa:20200701002418j:plain

また可視サブツールだけをワンクリックでまとめて転送可能。(こちらもZbrush、Blenderのそれぞれの動作完了までしばらくお待ちください。)
f:id:yamato-tsukasa:20200701000901j:plain

全てのサブツールをまとめてワンクリックでBlenderに転送「GoAll」ボタン

必ず事前にBlenderファイルとZbrushファイルとを別名保存・上書き保存してください。(念のためZbrushファイルは別名保存かクイックセーブの選択ダイアログを実装しています。)
全てのサブツールをまとめてワンクリックでBlenderに転送します。

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

以下の画像のように、BlenderからZbrushに戻しても正しくサブツールが置換されます。
f:id:yamato-tsukasa:20200701004032j:plain



サブツール数が多い場合や、各サブツールが超絶ハイポリなどの場合には

  1. Zbrushでキャッシュファイルを作るのに1分以上かかる場合がある(画面が変化している)
  2. Blender側でキャッシュファイルを読み込むのに1分以上かかる場合がある(読み込みアイコンが回転し続ける)

私の環境では発生していませんが、場合によってはBlenderやZbrushが落ちる可能性もあります。なので必ず事前にファイル保存しておいてください。

目玉アイコンがONのサブツールをまとめてワンクリックでBlenderに転送「GoVis」ボタン

Visible(可視状態)のVisです。こちらも必ず事前にBlenderファイルとZbrushファイルとを別名保存・上書き保存してください。(念のためZbrushファイルは別名保存かクイックセーブの選択ダイアログを実装しています。)
今選択しているサブツールと、目玉アイコンがONのサブツールをまとめてワンクリックでBlenderに転送します。

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

こちらの利用上の注意点も「GoAll」ボタンでの説明と同様です。

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

こちらもBlenderからZbrushに戻した際に正しくサブツールが置換されます。

この2つの機能、まずはGoZ純正機能を使ってお試し下さい。
そうすれば当プラグインを利用するメリットが分かるかと思います。
サブツールの正しい置換と履歴の保持がポイントです。

GoBアシストツールはVer.2.1系が完成型

これで当プラグインはGoZ機能の全てを網羅しました。たぶん完成型です。今後はマイナーバグフィックス程度で新たな機能拡張はない予定です。


Ver.2.0.2の変更点

2020/06/29 追記。
Zbrush起動時点でダイレクト転送モードがONになっているバグを修正しました。最初からOFFになっています。またこれに伴い新たなボタンを追加しました。

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

GoBアシストツールではダイレクト転送モードのON/OFFを切り替えるのですが、当プラグインがZbrushの「Import as SubTool」のボタンを制御するとなぜか「以後はユーザーが選択不能」状態にになってしまうのです。Zscript上で選択可能状態を指定しても、結果として無視されます(泣)

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

色々試しましたが原因不明です。

というわけで対策として、新規実装のEtcボタンを2回以上押すことで、このボタンを選択可能状態に復帰させられます。

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

ま、GoZをGoBアシストツール以外で使っていない人にとっては全く問題ないのですが念のためサポートするためのボタンを実装しました。

この修正の伴いVer.2.0.0、Ver.2.0.1は公開終了しました。

最後に

GoBアドオンのバグ修正に協力しているうちに知識が増えた結果、GoBアシストツールの弱点とその回避策が分かったため、こちらも大幅に機能強化することにしました。GoB Ver.3.3.12はかなり安定していますので、それを利用するGoBアシストツールで更に快適性を向上させることに成功しました。転送は基本ワンクリック。これ以上は効率化できません(笑)

道具としてはついに、ZbrushとBlenderユーザーにとっては必須のツールになることでしょう。ただしWindows限定ですが。BlenderもスカルプトならばGPUが重要になるそうなので、Windows環境で揃えたほうが色々と便利かも知れない。


Zbrushをお使いでBlenderにこれから手を出そうと思っている人にもオススメです。連携の快適さが桁違いです。

ZbrushとBlenderを連携させるZbrush用プラグイン「GoBアシストツール」(Windows専用) - - BOOTH


ようやくGoBアシストツールが、本当の完成形になったと感じました。大変だったけど作って良かったプラグインの一つです。


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



筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonで何かを買うと1~3%ほどのお小遣いが私に寄付されます(笑)

Amazonギフト券 Eメールタイプ - Amazonベーシック

Amazonギフト券 Eメールタイプ - Amazonベーシック

  • 発売日: 2010/07/15
  • メディア: Ecard Gift Certificate