Starworshipperの裁縫箱
-
セーブされない設定をスタートアップ時にセットするマクロ
追記:
この投稿に関しては、現在も色々実験中です。2021-10-15
一時非公開がないので公開されてますが、冗談半分の気持ちでお読み下さい。ちょっと色々実験してたら、一気に大量のブラシの設定をすると、
ブラシのアルファとかが飛ぶ時があるみたいです。
タイマーなどで調整する必要がありそうまた、editmodeに入ってないと、基本的にブラシの設定ができないようです。
スタートアップ時に空のドキュメントを開く設定のZBrushだと、
editmodeになっており、仮のメッシュが存在するドキュメントを開く必要があります。ここの環境に応じて、追加の設定が色々必要です。
セーブされないセッティングってありますよね。
一番よく思い当たるのは、ブラシのチョイスかと思います。例えば、起動した瞬間、
「MaskLassoで、SmoothStrongerで、KnifeCurveになっていて欲しい。」
なんてことがマクロで出来ます。https://www.zbrushcentral.com/t/setting-up-a-macro-to-run-on-startup/205347?u=star0worshipper
英語できる方は、普通にこっちを見ましょ
デフォルトでインストールした際の例ですが、まず、
C:\Program Files\Pixologic\ZBrush バージョン\ZScripts\DefaultZScript.txt
を、「DefaultZScript.txtbak」のように書き換えてバックアップした上で、[If,1, [IPress,Macro:Macros:Misc:StartupMacro] ] [pd]
という内容の、新しいDefaultZScript.txtに書き換えます。
次に、
C:\Program Files\Pixologic\ZBrush バージョン\ZStartup\Macros\Misc
のところに、「StartupMacro.txt」ファイルを作成し、
ここに、設定ではセーブされないけど、予めセットアップしておきたい処理を記述していく感じです。(マクロで録画した [Ipress] の塊を、
以下の「マクロで録画した好きな処理」あたりのコメントの場所にコピペしましょう。)[IButton]じゃないぞ。
その中に入ってる [IPress] の塊だぞ。
以下は、一例のStartupMacro.txtです。
[IButton,???,"start up config", [IShowActions,0] [IConfig,2021] [IKeyPress, 13, //ダイアログが出る系のブラシは、この処理の中に入れて、ダイアログを飛ばす 13はEnterキーのASCII [IPress,Brush:MaskLasso] ] //例えば [IPress,Brush:ContrastTarget] [IUnPress,Draw:Rgb]//例えば コントラストターゲットのRGBをオフにしておく [IKeyPress, 13, //スネークフックみたいな、ダイアログ出すブラシはこんな感じ [IPress,Brush:SnakeHook] ] [IUnPress,Draw:Rgb] //RGBをオフにする //ここにマクロで録画した好きな処理を追記していく //ここにマクロで録画した好きな処理を追記していく //ここにマクロで録画した好きな処理を追記していく //ここにマクロで録画した好きな処理を追記していく //[sleep,5,/*処理*//*処理*//*処理*/,1]//大量設定でブラシのアルファなどが飛ぶ時は、タイマー式のスリープで調整する? //サブメニューオープン系 の例 [IMaximize, Macro:Macros:, 1] //マクロのサブメニューを開く //(サブメニューって起動時閉じてるんですよね。これを書いておくと、起動した瞬間から指定したサブメニューが開いてくれているので、起動時の見栄えが安定します) //自動で2つ以上のサブメニューは閉じちゃう設定の方には関係ない設定ですね。 //以下辺りに、最初に選んでおいて欲しいブラシなんかを置く [IKeyPress, 13, [IPress,Brush:Smooth] //スムースに戻しておく ] [IPress,Brush:Move] ]
余談:
DefaultZScript.txtに直接書かないのは、「やらかさないように」のためではないでしょうか。
-
Command Referenceに乗ってないコマンドの一つ
「Zスクリプト→コマンドのエクスポート」には存在するが、
http://docs.pixologic.com/user-guide/customizing-zbrush/zscripting/command-reference/
サイトには載ってないコマンドがちらほら。一例として
「サブツールの可視性、ブーリアン、ポリペイントのON/OFF状態を、
正確にSet、Getしてくれるスクリプト」等。(マクロでサブツールの可視性を記録しても、[IModSet,Tool:SubTool:pm3d_sphere3d_2,56]のように、ほぼ使用不可能な状態で記録されてしまって普通には使えない。 こういう難儀する箇所に限ってサイトに載ってないのってちょっと辛かった)
[SubToolGetStatus,Subtool Index (zero based). If omited then use the currently selected subtool.] Returns the status of a subtool Output: Returns the status (Subtool Eye=0x01, Folder Eye=0x02,UnionAdd=0x10,UnionSub=0x20,UnionClip=0x40,UnionStart=0x80,ClosedFolder=0x400,OpenedFolder=0x800) . [SubToolLocate,Unique Subtool ID] Locates a subtool by the specified unique ID Output: Returns the index of the located subtool or -1 if error. [SubToolSelect,Subtool Index (zero based).] Selects the specified subtool index Output: Returns zero if OK, -1 if error. [SubToolSetStatus,Subtool Index (zero based). If omited then use the currently selected subtool.,New Value (Subtool Eye=0x01,Folder Eye=0x02,UnionAdd=0x10,UnionSub=0x20,UnionClip=0x40,UnionStart=0x80,ClosedFolder=0x400,OpenedFolder=0x800)] Sets the status of a subtool
//現在のサブツールを非表示にする例 [VarSet,st,[SubToolGetStatus]] //現在のサブツールのステータスをstに入れて [IF, [Val,st] & 0x01==0x1, //1ビット目(サブツールの可視性のフラグ)が「1」だったら、 [SubToolSetStatus,,st-0x1] //1ビットを引いた値を新しくセットすることで、サブツールが非表示になる。 ]
他にも色々「[MergeUndo]:Merge the next undo with the previous undo」とか。
増えたスクリプトの差分が載ってる所ないのかしら。 -
MAHmask Bias風 Z-modelerの設定
https://www.zbrushcentral.com/t/in-memoriam-of-mahlikus-the-black/444308
本家のMAH Biasはこちら。
以下は旧記事:
私はこの設定のZ-modelerを、リスペクトを込めつつ勝手に「Z-MAHmask Bias」と呼んでいます。
画像のようにZModelerを設定して、マスクしたいところでドラッグするだけ。MAHmaskとの違いは、MAHmaskはブラシを当てところだけを塗るのに対して、こっちは一気に面を掌握します。ハードサーフェス様のパリッとした造詣にはこっちの方が向いてる気も。
デメリットとしては、「同一平面」をドラッグに応じて一気にマスクするので、
カーソルを当てたつもりのない同一平面上にもマスクが当たってたりします。Zmodelerって基本的にクリックで作業するブラシなのに、
「平面アイランド」「平面内部」「平面外部」みたいな一部の機能だけ、
ドラッグでの作業もできるって、意外と気づきにくいと思うの・・・。
他にも、代替としてTranspose SmartMaskがあるんですけど。
やっぱり直感的に塗り塗りできるのは強いですよね。
普通のTransposeとマスクって同時に使うことが多いと思うので、ブラシ側でマスクできるのは便利かなと思います。🤪 -
ポリフレームカラーをトグルするマクロ
Zmodelerでチマチマやってるときに、ポリグループの色によってポリフレームが見にくい時がままあると思います。
4色にポリフレームをトグルできるマクロなんてどうでしょう。黒->白->赤->緑。
なんでこの色?私が見やすいと思ったからマクロが嫌な人は、
「環境設定→ ドロー→ Pfカラー」で、ポリフレームのカラー変えられますよ。以下のスクリプトをコピーして、PolyframeColorChange.txtとか、PfC.txtみたいに好きな名前をつけて、
マクロフォルダに突っ込めば動きます。//ZBRUSH MACRO - Recorded in ZBrush version 2022 [IButton,???,"Toggle PolyFrame Color. ( Black-> White-> Red-> Green )", [IShowActions,0] [IConfig,2022] //[note, // [IGet,Preferences:Draw:Pf Color] // black 0 white 255.999985 red 255.2668 green 104.997131 // ] [IF, [IGet,Preferences:Draw:Pf Color]==0, //If [ISet,Preferences:Draw:Pf Color,255.999985] , //Else [IF, [IGet,Preferences:Draw:Pf Color]==255.999985, //If [ISet,Preferences:Draw:Pf Color,255.2668] , //Else [IF, [IGet,Preferences:Draw:Pf Color]==255.2668, //If [ISet,Preferences:Draw:Pf Color,104.997131] , //Else [IF, [IGet,Preferences:Draw:Pf Color]==104.997131, //If [ISet,Preferences:Draw:Pf Color,0] , //Else [ISet,Preferences:Draw:Pf Color,0] ] ] ] ] ] //色の指定方法については、Command Referenceの [RGB, Red, Green, Blue]の項目参照
ifの入れ子・・・
-
メモ
ZAdjustor2.1 for ZBrush4R7 x64 (2023/11時点で多分最新版)が載った記事へのリンク
http://archive.zbrushcentral.com/showthread.php?182163/page8#post1130126 -
IMMを設置中にスペースバー押し続けると、いちいちギズモにいかなくても位置変えられるって知らなかった🤯
https://www.zbrushcentral.com/t/set-a-custom-pivot-point-for-an-insertmesh-brush/366439/5 -
ギズモの位置をサブツール間でコピペするマクロ
まず最初に。
Nick toolsにあります。
https://www.zbrushcentral.com/t/my-zbrush-plugin/308580/72
以下旧書き込み(回転が保持されないバグあり):
GizCpでギズモコピー、GizPstでギズモペースト。
https://cdn.discordapp.com/attachments/1010060802746749020/1099812653720936478/GizCp.7z -
キーボードショートカットの探し方
新しいキーボードショートカットを作るとき、
「すでに割り当てられている」
なんて言われて、何に割り当てられているか分からなかったりすることありますよね。以下の「The full list as a printable pdf – download here」のところからPDFをダウンロードし、
文字検索して引っかかってくれれば、まずは良し。
https://docs.pixologic.com/user-guide/keyboard-shortcuts/・・・なのですが、それでも引っかからない場合、つまり、
追加したアドオンにキーボードショートカットが割り当てられていたり、
自分が昔に設定したキーボードショートカットを忘れたりした場合は、
「環境設定 ->ホットキー ->保存」
が使えます。テキストを保存すると、以下のように、後ろ半分に人間が読める形のコメントを出力してくれるので、
キーボードショートカットの重複チェックをしたい方や、前のショートカットを思い出したい方は、
こちらも合わせて文字検索すると間違いが減ると思われます。 -
Tabの作業領域拡大をちょっと補正するマクロ
Tabを押すとクイックメニューが隠れて作業領域が広がりますが、サイドパネルもそのままで、更にドキュメント自体も大きくならないので、
使い勝手がいまいちと思ってる方は少なくないと思います。
(実の所、Preferences:Interface-> Float Menuにショートカットが当たってるだけなんですよね)最初から付属してるマクロに左右のサイドパネルを閉じるマクロがあったので、
ワンボタンで両方閉じるようにマージし、ドキュメントをちょっとだけ拡大する処理を追記しました。ドキュメントをシンプルに1.2倍に拡大するだけなのでジャギなどが出ますが、
Zmodelerなどで、ちょっとした細かい作業をしたいときなどは十分な動作かと思われます。以下をコピーして、「お好きな名前の.txt」に保存して、マクロフォルダに打ち込むと動作します。
DocumentToggle.txt
[RoutineDef,bothTrayToggle, //left tray // Script will compare the location of the tray position and keep clicking till it changes [VarSet,StartPosition,[IHPos,1000,1]] [Loop,5, [VarSet,CurrentPosition,[IHPos,1000,1]] [If,CurrentPosition=StartPosition, [IClick,1000] , [LoopExit] ] ] //righttray // Script will compare the location of the tray position and keep clicking till it changes [VarSet,StartPosition,[IHPos,1001,1]] [Loop,5, [VarSet,CurrentPosition,[IHPos,1001,1]] [If,CurrentPosition=StartPosition, [IClick,1001] , [LoopExit] ] ] // Float Menuを正確にトグルする。 [If, [IGet, "Preferences:Interface:Float Menu"], [IUnPress, "Preferences:Interface:Float Menu"] [ISet,Document:Zoom,1.2] , [IPress, "Preferences:Interface:Float Menu"] [ISet,Document:Zoom,1] ] ] [IButton,???,"Toggles the Trays Open or Closed.", [IShowActions,0] [IConfig,4.8] //[IFreeze, [RoutineCall,bothTrayToggle] //] ,,1/2,,,]
普段左パネルだけ閉じてる人、右パネルだけ閉じてる人、ドキュメントを1倍以外で使ってる人、
等には向かない作りの雑なマクロです。普段から両方のパネルを引き出しており、
かつドキュメントは基本的に等倍の人ならきちんと動作するはずです。 -
ZNote Interfaceのサンプル
ZBrushって、割とボタンだらけになりませんか?
こうやって別ウインドウメニューを呼び出せるマクロボタンを作り、
あまり使わないものなどをまとめておくと、UIが少しスッキリするんじゃないかなぁなんて思います。先に言っておきますと、
https://docs.pixologic.com/user-guide/customizing-zbrush/zscripting/interfaces/note-interface/
上のコーヒーメーカーのサンプルスクリプトで全部分かる人には全く役に立たない書き物です。コーヒーメーカーは、ループ処理とか画像の更新とか、やりたいこと全部入りのサンプルなので、
もっとミニマルに、2箇所書き換えるだけでいいサンプルに削ぎ落としてみました。/*--必要最低限いじるのはここだけ--*/
が2箇所あります。
まず、ボタンの名前を修正し、
次に、ボタンの番号に対応したIF文内に、マクロを切り貼りするだけ、
の2ステップでメニューが完成します。「適当な名前.txt」で以下をマクロフォルダにぶち込むと動作します。
/*--必要最低限いじるのはここだけ--*/ //これで検索した2箇所だけを置き換えれば、少なくともこの例の場合、6つのボタンが置ける。 // YesNo Note Interface Example //*********************************************************************************************** // Variables definition [VarDef, result, 0] [VarDef, PosX, 50] //縦一列のボタンを想定した例のための、ボタン位置の変数 [VarDef, PosY, 50] [VarDef, hSize, 200]//ボタンサイズ。小さすぎると、テキストや画像が欠ける [VarDef, vSize, 35] // Routines [RoutineDef, YesNoInterface, [IFreeze, //背景(Disableされたボタンで実装されている)--------------------------------- // Draw the interface 背景 result=1 //ボタンは置いた順に、上に描画されていく。 //背景をEnableにすると、背景を押されたときのデフォルト的な挙動もセットできる [NoteIButton,/*BackGround*/, /*Image Path*/, 0,1, //pressed?, disabled? デフォルトで押された状態か。非押下のボタンにするか。 1,1,//PosY, PosX ボタンの設置開始位置 300,300, //hSize, vSize 背景のサイズ ,, //color,text color 背景の色、テキストの色 1,1,1 //opacity, text opacity, image opacity ボタン、テキスト、画像の透明度0~1 ] //メインボタンたち--------------------------------- // ↓/*--必要最低限いじるのはここだけ--*/ //ボタン、置いた順に、2、3、4、5・・・ //ボタンのサイズの数だけ下にずらしている。シンプルな例 //計算は普通の四則計算ではなく、()くくりだけを優先して、左から順に計算される。1+2*3=9、1+(2*3)=7の世界。 [NoteIButton, "Yes", /*img*/ , , , PosX, PosY+(#vSize+4*0), hSize, vSize] //result2 [NoteIButton, "No", , , , PosX, PosY+(#vSize+4*1), hSize, vSize] //result3 [NoteIButton, "End", , , , PosX, PosY+(#vSize+4*2), hSize, vSize] //result4 [NoteIButton, "1", , , , PosX, PosY+(#vSize+4*3), hSize, vSize] //result5 [NoteIButton, "2", , , , PosX, PosY+(#vSize+4*4), hSize, vSize] //result6 [NoteIButton, "3", , , , PosX, PosY+(#vSize+4*5), hSize, vSize] //result7 // [NoteIButton,/*テキストボタンにしたいならここに文字を書く*/, // /*画像ならここにパスを指定する、絶対でも相対でもよい。マクロを実行したフォルダがカレントになるはず tmp/test.png/ */, // 0,1, //pressed?, disabled? デフォルトで押された状態か。非押下のボタンにするか。 // 1,1,//PosY, PosX ボタンの位置 // 300,300, //HSize, VSize ボタンのサイズ // ,, //color,text color ボタンの色、テキストの色 // 1,1,1 //opacity, text opacity, image opacity ボタン、テキスト、画像の透明度0~1 // ] // Get result これを呼び出すことで、上のノートインターフェイスの値がresultに格納される [VarSet, result, [Note, ""]] // ↓/*--必要最低限いじるのはここだけ--*/ // Process result //背景を押された処理を追加したいなら、背景をEnableにしたうえで、result=1の処理を書く [If, result == 2, [Note, "\CFF0000You clicked Yes!\n", , 2, , , 180] //バクスラCの次にhexカラーコードを置くと、NoteやNotebarで表示する文字の色を変えることができる。 ] [If, result == 3, [Note, "\C0000FFYou clicked No!\n", , 2, , , 180] ] [If, result == 4, [Note, "\C00FF00You clicked End.\n", , 2, , , 180] ] [If, result == 5, //ここにこんな感じで起動したい処理を書いていく。 //録画したマクロでもなんでも。 ] [If, result == 6, //ここにこんな感じで起動したい処理を書いていく。 //録画したマクロでもなんでも。 ] [If, result == 7, //ここにこんな感じで起動したい処理を書いていく。 //録画したマクロでもなんでも。 ] ]//ifreeze ] // Button for launching interface [IButton, "???","NoteInterFace Test", [RoutineCall, YesNoInterface] ]
ボタンを6個以上に増やしたかったり、2列にしたかったら、
IF文を増やして、ボタンのPosX、PosY等の値をあれこれ調整すれば、
手動で追加もできるかと思います。 -
サブツールやフォルダのON/OFFを切り替えるルーチン
https://www.zbrushcentral.com/t/imodset-tool-subtool-error/411109/4?u=star0worshipper
例えば、以下のコードは名前が"test"のフォルダを可視状態にします。
[RoutineCall,ToggleFolder,"test",1]
以下の書き方なら、"mysubtool"の可視状態をオンにします。
[RoutineCall,ToggleSubTool,"mysubtool",1]
マクロに組み込むと色々便利ですね。
マーカスさん、もう退社されてしまいましたが、残されたスクリプト達にこうやって今も助けていただいてます。ただただ感謝。
-
ベータ時代のボタン説明を見る
Ctrl+Shift押しながらボタンの上をホバーすると、「Beta Info」なる、詳しい説明が見れるというメモです。
表示されないボタンは表示されませんが、簡単な見分けなどに役立つかもしれません。