ZNote Interfaceのサンプル
ZBrushって、割とボタンだらけになりませんか?
こうやって別ウインドウメニューを呼び出せるマクロボタンを作り、
あまり使わないものなどをまとめておくと、UIが少しスッキリするんじゃないかなぁなんて思います。
先に言っておきますと、
https://docs.pixologic.com/user-guide/customizing-zbrush/zscripting/interfaces/note-interface/
上のコーヒーメーカーのサンプルスクリプトで全部分かる人には全く役に立たない書き物です。
コーヒーメーカーは、ループ処理とか画像の更新とか、やりたいこと全部入りのサンプルなので、
もっとミニマルに、2箇所書き換えるだけでいいサンプルに削ぎ落としてみました。
0_1708928486437_upload-5592cd0e-6961-47f9-bf2a-0e4e7bb1fe7a
/*--必要最低限いじるのはここだけ--*/
が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等の値をあれこれ調整すれば、
手動で追加もできるかと思います。