Starworshipperの裁縫箱
-
マスクをじわっと広げるマクロ
交差したり、埋まっていたりする部分に、
マスクを染み込ませてほじくり出すのとかに使えるのではないでしょうか。//ZBRUSH MACRO - Recorded in ZBrush version 2021 [IButton,???,"Press to run this macro. Macros can be aborted by pressing the ëescí key.", [IFreeze,//あるとないとじゃ、画面のチラツキがぜんぜん違うんだぜ [IShowActions,0] [IConfig,2021] [IPress,Tool:Masking:GrowMask] [IPress,Tool:Masking:SharpenMask] ] ]
マスクの拡張と、マスクのシャープを交互に押しているだけのボタンですが、
「拡張する代わりにどんどんボケていくマスクの拡張」よりは、より直感的な拡張なのではないかと思います。効きが弱いなって思ったら、
//ZBRUSH MACRO - Recorded in ZBrush version 2021 [IButton,???,"Press to run this macro. Macros can be aborted by pressing the ëescí key.", [IFreeze, [IShowActions,0] [IConfig,2021] [IPress,Tool:Masking:GrowMask] [IPress,Tool:Masking:SharpenMask] [IPress,Tool:Masking:GrowMask] [IPress,Tool:Masking:SharpenMask] [IPress,Tool:Masking:GrowMask] [IPress,Tool:Masking:SharpenMask] ] ]
こんなファンシーな追記をすると、良い効きのボタンになると思います。😂
-
全てのサブツールに同じ動作を適用したい時
マクロを録画して、適当に保存したマクロファイルを開き、
//このあたりに録画したマクロをコピーする のところに
その「IPress ナンチャラ」あたりの群をコピーすれば、
全てのサブツールにその動作が適用されるマクロの出来上がり。[IButton,???,"Press to run this macro. Macros can be aborted by pressing the ëescí key.", [IShowActions,0] [IConfig,2021] // [VarDef, qwSTN, [SubToolGetCount]] //マクロの時は多分要らないと信じたいもの [VarSet, qwSTN, [SubToolGetCount]] [IFreeze, //画面描画を停止して高速化するおまじない [Loop, qwSTN , [SubToolSelect, [Val, n]] // 上からn番目のツールを選択した状態にする //このあたりに録画したマクロをコピーする //このあたりに録画したマクロをコピーする //このあたりに録画したマクロをコピーする , n ] ] ]
で、あれです。こんな事しなくても、「ZRepeat It」があるじゃないですか。🤪
https://pixologic.com/zbrush/downloadcenter/zplugins/
保存したマクロを、「選択のみ」「表示」「全て」みたいな感じで適用できる孫の手公式プラグイン。
-
Zモデラーのカメラ移動(に近い挙動)をショートカットで
CameraControlという結構古いプラグインなのですが、
実は、「PixolGyro」と言うボタンの挙動が、Zモデラーに新しく追加された、
「カメラを垂直に設定する」というアクションとほぼ同じなのです。
こちらはボタンなので、お気に入りのショートカットに追加すれば、
いちいち筆を切り替えなくてもサッサッと視点を変更できます。
ハードサーフェスなどで、視点を頻繁に水平に保つような方は、
こちらのプラグインが役に立つのではないでしょうか。他にもトランスポーズを利用したカメラ移動など、様々な方法があるので、色々試してみるとニーズに合った動きが見つかるかもしれません。
https://www.zbrushcentral.com/t/orienting-view-based-on-transpose-action-line/206347/15(内部の正しい動きがよくわからないのですが、
カーソル上のpixolデータをもとにしているらしいので、ねじれポリゴン上などでは、
癖のある動きになったりするのではないかと思います。
絶対的な垂直が欲しい人は、また違った方法が必要でしょう。)
-
好きな刻み幅のブラシスライダー!
2021.5からブラシの挙動が変わってしまい、刻み幅が現状仕様とのことでしたので、
刻み幅1のブラシを強制的に「ドロー」の一番下にくっつける雑なマクロを書きました。
(スライダーの幅500とかなってるけど、どの数字が適正なんでしょ。)【追記
>オプション追加 : Shiftキーを押しながらスライダーを調整することにより、整数で数値を調整できるようになりました。
やっぱり2021.5.1で機能が付きましたね、余計なマクロなどが不必要になって何よりです】動的なスライダーの作り方が分からなかったので、調整しやすいように
0~30までのスライダーになっています。
多分、1刻みが欲しいのはこのへんかと。ついでに、5,7,13,15,20のワンタッチドローサイズ変更ボタン付き😋
//ZBRUSH MACRO - Recorded in ZBrush version 2020 [ISlider,"Draw:Draw Size1.0", 4,//デフォルトの値 //ここを好きな刻み幅にする 1.0 //ここを好きな刻み幅にする , 0,30 //スライダーの最小値から最大、5~10までとか、ニッチなスライダーを作れます , "Change Drawsize", //ポップアップテキスト [VarSet,qwBrush,[IGet, "Draw:Draw Size1.0"] ] [ISet,"Draw:Draw Size", qwBrush ] ,0,500 //slider width ] [IButton,"Draw:5","Change draw size.", [ISet,"Draw:Draw Size", 5] ] [IButton,"Draw:7","Change draw size.", [ISet,"Draw:Draw Size", 7] ] [IButton,"Draw:10","Change draw size.", [ISet,"Draw:Draw Size", 10] ] [IButton,"Draw:13","Change draw size.", [ISet,"Draw:Draw Size", 13] ] [IButton,"Draw:15","Change draw size.", [ISet,"Draw:Draw Size", 15] ] [IButton,"Draw:20","Change draw size.", [ISet,"Draw:Draw Size", 20] ]
-
ギズモの位置をサブツール間でコピペするマクロ(になる予定)
一時保存がないので公開状態ですが、色々問題あります。
位置は大丈夫そうなのですが、軸コピーがとてもきな臭いです。マーカスさんからTransposeGetでギズモの位置も記録できると教えて頂いたので、マクロを作ってみました。
ギズモだけでなく、由緒正しきトランスポーズラインの一時保存的な使い方もできます。
そんなにサブツール間で位置保持したいなら最初からトランスポーズライン使えと🤗マクロのフォルダにこんな感じでtxtと空フォルダを配置すると、
ギズモの位置をサブツール間でやり取りできるマクロの出来上がりです
(フォルダにギズモの位置を記録するための情報が入ります)
コピー側で「GizmoCopy」して、ペースト側で「GizmoPaste」押す。
それだけです。コピペできないときは、ペーストする側のギズモをほんの少し動かしてから、もう一度ペーストしてみてください。
何故か分かりませんが、複数回ペーストするとこの問題が発生します。😂
また、数字を見てもらうとわかりますが、ただGetしてSetしてるだけなのに、
処理の過程でほんの少し数値が丸められてしまうようです。
完全完璧な位置コピーではありません。更にコピーの過程で、コピー元のギズモの角度で、+ー方向やXYZが入れ替わったり、
ひどいと目に見えるくらいで地味にずれてます。凶悪です。GizmoCopy.txt
//ZBRUSH MACRO - Recorded in ZBrush version 2020 //最初にフォルダ作らないと動かない [IButton,???,"Copy the Gizmo and Transpose Position.", [IShowActions,0] [IConfig,2021] // [VarDef, qwSTN, [SubToolGetCount]] [VarSet, qwxPos, 0] [VarSet, qwyPos, 0] [VarSet, qwzPos, 0] [VarSet, qwRedx, 0] [VarSet, qwRedy, 0] [VarSet, qwRedz, 0] [VarSet, qwGreenx, 0] [VarSet, qwGreeny, 0] [VarSet, qwGreenz, 0] [VarSet, qwBluex, 0] [VarSet, qwBluey, 0] [VarSet, qwBluez, 0] [VarSet, qwendx, 0] [VarSet, qwendy, 0] [VarSet, qwendz, 0] [VarSet, qwTLength, 0] [TransposeGet, qwxPos, qwyPos, qwzPos, qwendx,qwendy,qwendz,qwTLength,//終端側の位置、そして長さ qwRedx,qwRedy,qwRedz, qwGreenx,qwGreeny,qwGreenz, qwBluex,qwBluey,qwBluez ] [VarSet, qwFFLUSH, [StrMerge,"x:",qwxPos, ", y:",qwyPos, ", z:",qwzPos ]] [Note, qwFFLUSH] [VarSave, qwxPos, "Rtem/qwxPos"] [VarSave, qwyPos, "Rtem/qwyPos"] [VarSave, qwzPos, "Rtem/qwzPos"] [VarSave, qwRedx, "Rtem/qwRedx"] [VarSave, qwRedy, "Rtem/qwRedy"] [VarSave, qwRedz, "Rtem/qwRedz"] [VarSave, qwGreenx, "Rtem/qwGreenx"] [VarSave, qwGreeny, "Rtem/qwGreeny"] [VarSave, qwGreenz, "Rtem/qwGreenz"] [VarSave, qwBluex, "Rtem/qwBluex"] [VarSave, qwBluey, "Rtem/qwBluey"] [VarSave, qwBluez, "Rtem/qwBluez"] [VarSave, qwendx, "Rtem/qwendx"] [VarSave, qwendy, "Rtem/qwendy"] [VarSave, qwendz, "Rtem/qwendz"] [VarSave, qwTLength, "Rtem/qwTLength"] ]
GizmoPaste.txt
//ZBRUSH MACRO - Recorded in ZBrush version 2020 [IButton,???,"Press to run this macro. Macros can be aborted by pressing the ëescí key.", [IShowActions,0] [IConfig,2021] [VarSet, qwxPos, 0] [VarSet, qwyPos, 0] [VarSet, qwzPos, 0] [VarSet, qwRedx, 0] [VarSet, qwRedy, 0] [VarSet, qwRedz, 0] [VarSet, qwGreenx, 0] [VarSet, qwGreeny, 0] [VarSet, qwGreenz, 0] [VarSet, qwBluex, 0] [VarSet, qwBluey, 0] [VarSet, qwBluez, 0] [VarSet, qwendx, 0] [VarSet, qwendy, 0] [VarSet, qwendz, 0] [VarSet, qwTLength, 0] [VarLoad, qwxPos, "Rtem/qwxPos"] [VarLoad, qwyPos, "Rtem/qwyPos"] [VarLoad, qwzPos, "Rtem/qwzPos"] [VarLoad, qwRedx, "Rtem/qwRedx"] [VarLoad, qwRedy, "Rtem/qwRedy"] [VarLoad, qwRedz, "Rtem/qwRedz"] [VarLoad, qwGreenx, "Rtem/qwGreenx"] [VarLoad, qwGreeny, "Rtem/qwGreeny"] [VarLoad, qwGreenz, "Rtem/qwGreenz"] [VarLoad, qwBluex, "Rtem/qwBluex"] [VarLoad, qwBluey, "Rtem/qwBluey"] [VarLoad, qwBluez, "Rtem/qwBluez"] [VarLoad, qwendx, "Rtem/qwendx"] [VarLoad, qwendy, "Rtem/qwendy"] [VarLoad, qwendz, "Rtem/qwendz"] [VarLoad, qwTLength, "Rtem/qwTLength"] [TransposeSet, qwxPos, qwyPos, qwzPos, qwendx,qwendy,qwendz,qwTLength,//終端側の位置、そして長さ qwRedx,qwRedy,qwRedz, qwGreenx,qwGreeny,qwGreenz, qwBluex,qwBluey,qwBluez ] [VarSet, qwFFLUSH, [StrMerge,"x:",qwxPos, ", y:",qwyPos, ", z:",qwzPos ]] [Note, qwFFLUSH] ]
-
扱いにくいところのシンメトリ編集
ZBrushに限った話ではない奴ですが、昔困ってたことをふと思い出したので。
独学だと、こういうベーシックなテクほど抜け落ちてたりするんですよね
「言ってよ~~!!!」みたいな。🙄脇の下とか内股とか、シンメトリ編集中に扱いにくいところってよくありますよね。(画像の赤部分)
かと言って、シンメトリ編集中は、片足だけを非表示にしたりはできない。
しかも、モデルは中途半端にアシンメトリー&ハイポリで、後でミラーリングするには重すぎる、
みたいな塩梅の時・・・。そんなときは、片足全部消そうとせず、邪魔な表側だけに一部非表示かければ、
裏側から内側にアクセスできるのです。
(他にもSmartResymとか、UV展開してモーフして編集とか、
軽い奴なら複製してミラーして投影とか、色々方法がありますね)
-
BPRレンダーパスの一括保存
Photoshop以外の他のソフトでコンポジットその他色々してる人。
一連のBPRレンダーパスを予め指定した場所へ、ワンボタンでボン!とファイルを記録します。PhotoShopでコンポジットしてる人はZPluginがあるから気づかなかったと思いますが、
実はレンダーパスのボタンをマクロ記録する際に落とし穴があったんですよね。(マクロで記録すると、謎の間違った記述になって、再生してもエラーになるという・・・。
Ctrl押してボタンのパスを見ても、同じボタンパスが記述がされていてお手上げ!ところが、以下の記述にしたら動いた、謎!👾
ファイルネームから推測して、ダメ元で書き直したら通りました。)記録される間違った記述→きちんと動く記述
[IPress,Render:BPR RenderPass:Img]→ [IPress,Render:BPR RenderPass:Shaded] [IPress,Render:BPR RenderPass:Dep]→ [IPress,Render:BPR RenderPass:Depth] [IPress,Render:BPR RenderPass:Shdw]→ [IPress,Render:BPR RenderPass:Shadow] [IPress,Render:BPR RenderPass:AmOc]→ [IPress,Render:BPR RenderPass:AO] [IPress,Render:BPR RenderPass:Mask]→ そのままで大丈夫 [IPress,Render:BPR RenderPass:Sss]→ そのままで大丈夫 [IPress,Render:BPR RenderPass:Floor]→ そのままで大丈夫
一連のレンダーパスを保存するマクロを録画したら、上の部分を書き直すと、
好きな場所に好きなものを保存するマクロが出来上がると思います。例えば:
"C:\tmp\ZBrush
に、一連のレンダーパスをbmpで吐き出すマクロ。tmp\ZBrushのフォルダを予め作っておかないとエラーになります。
(フォルダ操作のスクリプト(要DLL)あったけど、そこまで要らん😆)flatとか、影なしも一応保存。
*AOとかSSSとかがオフになってると、「画像がないぞ」っていう注意ポップが出ます。//ZBRUSH MACRO - Recorded in ZBrush version 2021 [IButton,???,"Save flat render, none shadow render and shadow BPR", [IShowActions,0] [IConfig,2021] [IPress,Render:Preview] [IUnPress,Render:Render Properties:Shadows] [IPress,Render:BPR RenderPass:Render Best Preview] [FileNameSetNext,"C:\tmp\ZBrush\BPR_Render.psd"][IPress,Render:BPR RenderPass:Shaded] [IPress,Render:Render Properties:Shadows] [IPress,Render:BPR RenderPass:Render Best Preview] [FileNameSetNext,"C:\tmp\ZBrush\BPR_Render2.psd"][IPress,Render:BPR RenderPass:Shaded] [FileNameSetNext,"C:\tmp\ZBrush\BPR_Depth.bmp"][IPress,Render:BPR RenderPass:Depth] [FileNameSetNext,"C:\tmp\ZBrush\BPR_Shadow.bmp"][IPress,Render:BPR RenderPass:Shadow] [FileNameSetNext,"C:\tmp\ZBrush\BPR_AO.bmp"][IPress,Render:BPR RenderPass:AO] [FileNameSetNext,"C:\tmp\ZBrush\BPR_Mask.bmp"][IPress,Render:BPR RenderPass:Mask] [FileNameSetNext,"C:\tmp\ZBrush\BPR_SSS.bmp"][IPress,Render:BPR RenderPass:Sss] [FileNameSetNext,"C:\tmp\ZBrush\BPR_FloorDepth.bmp"][IPress,Render:BPR RenderPass:Floor] [IPress,Render:Flat] [FileNameSetNext,"C:\tmp\ZBrush\Flat.bmp"][IPress,Document:Export] ]
ボタンコードよりは何保存してるか見やすいかなと。
https://www.zbrushcentral.com/t/question-coding-image-sequence-with-passes/316612
https://www.zbrushcentral.com/t/question-macro-script-problem/337859/2
-
Zpluginの作り方
ものすごく基本のところですが、日本語で説明してる文書が見つからなかったので。
あったらごめんなさい。見つけ次第ここにリンク書きます。📝認識が間違っていたら申し訳ないですが、
結局の所Zpluginは、マクロのテキストから生成されたZSCファイルが正体です。
要はソースコードを隠して、商材として使えるようにしてるのでしょう。自分でサブパレットを作る1文をマクロの本文内に追加して、
ボタンに対してフルパスをぴちっと記述すれば、
そのままプラグイン(風?)になります。🤔
では、一例として、実際にプラグインを作ってみましょう。
まず、STW0.txt
というファイルをマクロフォルダに用意して、//ZBRUSH MACRO - Recorded in ZBrush version 2020 [ISubPalette, "ZPlugin:STW0 Tools"] [ISubPalette, "ZPlugin:STW0 Tools:Tools2"] //この辺が生成されたマクロ、普通は[IButton,???, とか書いてあるはずです [IButton,"Zplugin:STW0 Tools:Hello1","say hello1", [Note, "Hello1"] ] //End of IButton [IButton,"Zplugin:STW0 Tools:Tools2:Hello2","say hello2", [Note, "Hello2"] ] //End of IButton
みたいな感じで記しましょう。
これ説明しますと、生成されたマクロの一番てっぺんに、
[ISubPalette, "ZPlugin:STW0 Tools"]
という感じで、サブパレットを生成するための文言をフルパスで置きます。
パレットを入れ子にしたいなら、
[ISubPalette, "ZPlugin:STW0 Tools:Tools2"]
のようにコロンで区切って、文字を付け足していきます。次に、マクロの「???」部分をボタンを置きたい場所のフルパスに書き直します。
全てのボタンにおいて、フルパスで名前が書かれていなければなりません。これを一旦マクロフォルダに置いて、ZBrushでマクロを読み込みます。
すると、
「STW0.zsc」
というファイルがマクロのtxtと同じ場所に生成されます。あとは、プラグインを一度でもインストールしたことがある人ならご存知、
いつものあの場所(\ZStartup\ZPlugs64)にこれを放り込めばいいのです。
これで、STW0 Tools謹製、「ハロー!」と叫ぶプラグインが完成しました。🤣いい感じのマクロが組めたら、2~3文書き加えて、Plugin化するのもオツではないでしょうか。
自分の書いたマクロをまとめて、「なんとかTools」とかネーミングして、
名だたるプラグイン達に仲間入りしちゃいましょう
ボタンの自在性
他のプラグインでもチラチラ見かけますが、
ボタンのパスはかなり柔軟で、Zplugin内に置く必然性はないらしく、[IButton,"Draw:Hello in draw","say hello!", [Note, "Hello from Draw palette!"] ]
なんて書けば、ドローパレット内にボタンを潜り込ませることも簡単です。
どこのボタンがどんなパスなのかは、ボタンの上でCtrlを押すと表示されるので、
プラグインパレット以外にボタンを置きたいときはそれが重宝するでしょう。
ボタンをフルパスで書かないとどうなるか?
[IButton,"Hello there","say hello there", [Note, "Hello there"] ]
例えばこれをSTW0.txtに付け足すと分かりますが、ZBrushの下に居座っている、
「チュートリアル表示」ことスクリプトウィンドウ
のところに追い込まれてしまいます。
スクリプトの方から再生を行っていた人には、お馴染みの場所ですね。マクロのボタンに名前をつけようとして、「???」を書き換えてしまい、
「あれ、マクロパレットに居ねぇ!ボタンどこ行った!?!?」
となった人は多いのではないでしょうか。😂
(なんでファイル名がそのままボタン名なの?なんて思った方も。)「???」は結局、「マクロのフォルダ構造そのままの場所に、ファイル名でボタンを置け」
と言うコマンドのようなものなのだと思います。
だから、1ボタン1ファイルなんですね。フルパスでボタンを書く方法を使えば、1ファイル1ボタンの必要もないですし、
ファイル名も好きな名前でつけることができ、管理が楽になります。
メモ群
マクロの再読み込みだけでOKな部分と、
ZBrush自体を再起動しないと反映されない部分がある。
少なくとも、サブパレットやボタンの位置や画像変更みたいなのは要再起動。ボタンの設置順序は、スクリプトが読み込まれた順序そのまま。
ファイル名でのソートや、ファイル内で記述する際、順番をを考えないといけない。
(と思う。ボタンの位置を繰り上げるようなコマンドがないように見えます。)処理のちょっとした高速化
長いスクリプトを書いた際は、適時、[iFreeze]と[MergeUndo]を練り入れると、
処理の高速化と、履歴のコンパクト化ができる、はず。
ついでに、リバースエンジニアリング防止😂🤔ボタンを好きな画像にして気分アップ
[IButton, "Zplugin:STW0 Tools:test", "Logo", //Commands [Note, "I am the LOGO!"] //Commands ,0// Initially Disabled? (0:Enabled(ByDefault) NonZero:Disabled) //ただのロゴにしたいなら0以外、ボタンにしたいなら0か空欄 ,0 //Button width in pixels (0:AutoWidth NonZero:Specified width) , //Optional hotkey , "フォルダ名/ファイル.psd"// (.psd .bmp + .pct for Mac Systems) //スクリプトフォルダから下に潜っていく。 上行きたい場合はフルパスで? 横幅160くらいが限界な気がする。ZBrush公式のやつはだいたい160x50の大きさ ,// Button height in pixels (0:AutoHeight NonZero:Specified height) ]
ノートに変数を出す
普通にやると、変数か、文字列のみのどちらかになってしまう。
StrMergeで変数と文字列をマージしたものを出力する
[Note,[StrMerge,"文字列", 変数, "文字列", 変数], 表示時間(0で待機、それ以外で秒)]
みたいな感じ。1StrMergeごとに255文字まで。255文字以上を、例えばNoteに表示したい場合は、Noteコマンドを追記型にするとよい。
ノートコマンドの最後に、,表示時間(省略可),-1(追記型)
[Note,長いの,,-1][Note,長いの2,,-1][Note,長いの3]
注意:あくまでも、頭がBASIC止まりで、
オブジェクト指向がどうとか、ポインタがどうとか、
もう聞きたくないレベルの人が苦心して書いてるので、
間違っていたら申し訳ないの一言です。
-
ボタンを好きな画像にして気分アップ
マクロのボタンを画像化したり、好きなサイズに調整して、UIを更にお好みの風貌にしましょう。
ちなみにwin10ではpsdだけではなく、pngも読めました。(ただ透過が死ぬようです)マクロを記録した.txtを開いて、Ibuttonのところへ下のような感じで追記すると、
ボタンサイズを柔軟に変えたり、お好きな画像ボタン化することができます。[IButton, ???, "ボタンの説明は英語", [IShowActions,0] [IConfig,バージョン] //Commands [処理] [処理] [処理] ・ ・ ・ //Commands //以下辺りをコマンドの下にコピペするといい感じになると思います。 ,0// Initially Disabled? (0:Enabled(ByDefault) NonZero:Disabled) //ただのロゴにしたいなら0以外、ボタンにしたいなら0か空欄 ,0 //ボタンの横幅ピクセル (0でオート横幅) , //Optional hotkey 書き方知らん , "フォルダ名/ファイル.psd"// (.psd .bmp + .pct for Mac Systems) //スクリプトフォルダから下に潜っていくきます。 上行きたい場合はフルパスを書く必要があると思います。 横幅160くらいが限界な気がします。ZBrush公式の「Z REPEAT IT」みないなヤツは160x50の大きさ ,0// ボタンの縦幅ピクセル (0でオート縦幅) ]
コメントなしのコンパクトバージョンの例
[IButton, ???, "ボタンの説明は英語", [処理] [処理] [処理] ,0,0, , "フォルダ名/ファイル.psd",0 ]
要は、
「,0,0, , “フォルダ名/ファイル.psd”,0」をボタンの中に追記して、
フォルダとファイルをマクロフォルダ内部に置くだけです。注意:私自身がやって不具合ないので大丈夫だと思いますが、
マクロ内に存在するボタン達に、こんな追記を勝手にしていいかちょっと怪しい所があります。😛