ZBrushのZScript入門

漠然とZBrushのプラグインか何かを作れるようになりたいとか思いながら、何も手をつけずに6年も経った(笑)



公式ドキュメントを読んでも、イマイチZScriptやZPluginの感覚(メンタルモデル)が掴めなかったのだ。
http://docs.pixologic.com/user-guide/customizing-zbrush/zscripting/
http://docs.pixologic.com/reference-guide/zscript/

記法もわからない段階からZScriptをゼロから書こうとしてもなかなか前に進まないので、とりあえずZScriptに慣れるところから始めようか。
まずはUI操作を記録してZScriptに書き出してみよう。こちらの記事を参考に↓
http://sassembla.github.io/Public/2018:01:19%2022-12-27/2018:01:19%2022-12-27.html

GUI上での操作がScriptコマンドとして残るのはMayaのMELみたいですね。


スポンサーリンク


普段よくやる操作をZScriptで簡略化するのを最初の目標とする。
最近のアヴァンガメラ制作作業の区切りで必ずやっている作業履歴の動画書き出し(F履歴録画)設定をZScriptで自動化してみよう。
アヴァン・ガメラ
まだ作り途中…模刻の練習として、映画「小さき勇者たち ~ガメラ~」の冒頭に登場する通称アヴァンガメラをモデリング。「特撮のDNA」で撮影したレプリカヘッドの写真を参考に。ZBrushでフォームの作成、ディティールの追加まで...


この設定値はZProjectに保存されず、毎回リセットされてしまうので地味に時間を取られていた。

ZScriptのRecord(記録開始)を押して、一連の操作を行ったらEnd Rec(記録停止)を押す↓



そして記録したZScriptをファイルに保存する。ZScriptの拡張子は普通に.txtなのね。
これが設定・録画のZScript↓


スポンサーリンク
//RECORDED ZSCRIPT 2021
[IButton,Play,"Press to play this ZScript. ZScript can be aborted at anytime by pressing the eesci key.",
[IConfig,2021]
[IPress,Movie:Doc]
[IPress,Movie:Large]
[ISet,Movie:Modifiers:Recording FPS,30]
[IPress,Movie:TimeLine:Auto]
[ISet,Movie:Overlay Image :Opacity,0]
[ISet,Movie:Title Image :FadeOut Time,0]
[ISet,Movie:Title Image :FadeIn Time,0]
[IPress,Movie:F History]
]/*End of ZScript*/

ZScriptをシンタックスハイライトするVSCode拡張があるので有難く使わせていただく↓
https://marketplace.visualstudio.com/items?itemName=ouelletjonathan.zscript

読みやすくなった↓



.txtファイルと同じファイル名で一緒に出力される.zscファイルは何だろうと思ったら、ZBrushが.txtのZScriptを読み込むと同じフォルダにコンパイル済み(?)の.zscを書き出すのね。
Pytyonの.pyから.pycが作られるみたいな感じだな。(つまりバージョン管理外にしておいた方が良い)

あ、ZBrushのインストールフォルダの中のZPlugsフォルダ(またはZPlugs64フォルダ)に入っているのも.zscファイルだから、これらはつまりコンパイル済みのZScriptということか。そして、そのZScriptがdllを叩いているわけか。

ようやく理解した。ZPluginと呼ばれるものはZScriptの延長にあり、外部のデータやdllと連携するエントリポイントをZScriptで作るのね。
こちらのブログに書かれていることの意味が分かるようになってきたぞ↓
https://ichiyonnana.hateblo.jp/entry/2017/10/22/200228
https://ichiyonnana.hateblo.jp/entry/2017/10/23/030924

外部に処理を投げて、完了したら結果を受け取るコールバック的な実装はちょっと難しそうだな。クローズドにはSDKが存在するのかな。

公式のZScriptサンプルをちゃんと読んでみよう↓
http://docs.pixologic.com/user-guide/customizing-zbrush/zscripting/sample-zscripts/

ZPlugin interfaceのサンプルに従えば、パレットを自作してボタンから任意のコマンドや外部関数を叩けそうだな。
ZScriptの記法というか、コマンドの一覧はこちらを見れば良いのか↓
http://docs.pixologic.com/user-guide/customizing-zbrush/zscripting/command-reference/

GitHubを漁ってみると個人でZPluginを開発している人もチラホラいるようなので、SDKが開示されてなくても結構拡張できるようだ。
https://github.com/fuzzzzzz/zbrush-dll-template
https://github.com/n-taka/n_ZBrushPlugins


スポンサーリンク

関連記事

最近のフィギュアの製造工程
『手を動かしながら学ぶエンジニアのためのデータサイエンス』ハンズオンセミナーに行ってきた
Blender 2.81でIntel Open Image Denoiseを使う
ZBrushで仮面ライダー3号を造る 仮面編 Clay Polish
オープンソースの人体モデリングツール『MakeHuman』のAPI開発プロジェクトがスタート
html5のcanvasの可能性
この本読むよ
Maya API Reference
動的なメモリの扱い
Alice Vision:オープンソースのPhotogrammetryフレームワーク
Subsurface scatteringの動画
ラクガキの立体化 1年半ぶりの続き
ニンテンドー3DSのGPU PICA200
Siggraph Asia 2009 カンファレンスの詳細
MRenderUtil::raytrace
Mean Stack開発の最初の一歩
BlenderのPython環境にPyTorchをインストールする
openMVGをWindows10 Visual Studio 2015環境でビルドする
海外ドラマのChromaKey
ZBrushで仮面ライダー3号を造る 仮面編 DynaMesh
Pythonの自然言語処理ライブラリ『NLTK(Natural Language Toolkit)』
ZBrushでアヴァン・ガメラを作ってみる モールドの彫り込み・身体の形出し
Python拡張モジュールのWindows用インストーラー配布サイト
Unity ARKitプラグインサンプルのドキュメントを読む
WebGL開発に関する情報が充実してきている
Maya には3 種類のシェーダSDKがある?
ZBrushの作業環境を見直す
人型3Dキャラクターアニメーション制作サービス『Mixamo』で遊ぶ
ヘッドマウントディスプレイとビジュアリゼーションの未来
Blender 2.8がついに正式リリース!
フルCGのウルトラマン!?
FreeMoCap Project:オープンソースのマーカーレスモーションキャプチャ
BlenderのRigifyでリギング
グローバルイルミネーションに手を出す前に、やり残したことがあるんじゃない?
サンプルコードにも間違いはある?
Javaで作られたオープンソースの3DCGレンダラ『Sunflow』
Open3D:3Dデータ処理ライブラリ
ZBrushのZmodelerとDynamic Subdivisionを学ぶ
WordPressのサーバ引っ越し方法を考える
SIGGRAPH 2020はオンライン開催
映画から想像するVR・AR時代のGUIデザイン
Adobe Photoshop CS4 Extendedの3Dモデル編集機能

コメント