scenario-zbrush-pose-print について
複数の SubTool を持つモデルのポージングと、寸法を測定した 3D プリント部品の準備を支援する ZBrush スキルです。数値検査、可逆的なポーズ設定、造形形状の検証、手順化された書き出しを扱います。
主な機能
- 01スケールと包絡寸法の確認
- 02複数 SubTool の可逆ポージング
- 03頂点順序を保護したポーズ転送
- 04中空化、分割、嵌合の測定
- 05メッシュ削減と造形レポート
活用シーン
- 01SubTool を維持してキャラクターをポーズ設定
- 02レジン造形用フィギュアキットの準備
- 03壁厚、隙間、空洞の確認
- 04ミリメートル単位を明記して部品を書き出し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-zbrush-pose-printインストール後、Claude Code で/scenario-zbrush-pose-printを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/critique.mdexpert-notes.mdgui-paths.mdprocedures.mdsources.mdscripts/zb_pose.pyzb_print.py詳細
ZBrush のポージングと 3D プリント
エキスパートレベルとは、安定して立ち、ポーズが明確に読み取れる状態にし、レベルを失わずにすべての SubTool にポーズを転送し、エクスポートしたファイル上でサイズ、壁厚、はめ合い、空洞をミリメートル単位で測定したプリントパーツを作ることです。基本方針:あらゆる判断をエージェントが確認できる数値に変換します(スケール、ポイント順序、関節角度、壁厚、隙間)。ポーズは元に戻せる状態を保ち、ストロークは仕上げにだけ使います。ここに記載されている関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。無人で進める場合は、ツールのスキーマをもとに作業し、不足している点を明示してください。
必須の前提知識: scenario-zbrush-expert(ブリッジ、ストロークエンジン、レビューの反復、2026 年の落とし穴)。
基本方針(エキスパートに求められる違い)
- Gaboury:最初に決めるのはスケールです。 SubTool の 1 番目はクライアント指定サイズのボックスにし、どの部分もその外にはみ出さないようにします。サイズは後から変わるため、ツール全体を一度の操作でリサイズできるようにします(15 か所に可動部がある高さ 6 インチのモデルが、高さ 4 インチで可動部 8 か所に変更された例もあります)。エージェントでは、
brief_box、zb_print.envelope、set_export_scale(target_mm)を使います。 - Munoz Gomez:最低レベルでポーズをつけ、Transpose Master を使って複数の SubTool に適用し、3D Layer にポーズを保存します。 プレートや持ち物(武器、盾、杖)は、剛体パーツとして TPose メッシュ内に残します(Auto Groups で各パーツを個別のグループにし、全体をマスクします)。Move Topological で交差を解消します。Plouffe が禁止しているのはプリミティブの変形であり、剛体として動かすことではありません。持ち物を取り出して、回転だけで配置し直すことは決してしないでください。
- Maxon のドキュメント:転送を壊す要因は 2 つあります。 一部が非表示になっている SubTool(Vertex Mismatch)と、TPose メッシュ上の Gizmo 3D デフォーマーです(ポイントの順序が変わり、TPose>SubT で SubTool が壊れます)。Pavlovich:「頂点の順序は非常に重要です。」クリーンなプロジェクトから開始し、TPose メッシュが存在する状態で ZPR を保存します(Transpose Master のデータはそこに保存されます)。
- Plouffe:一緒に曲がるパーツは、レベル 1 で同じポリゴンサイズにする必要があります(マスクのぼかしはポリゴン単位で広がります)。曲げた後にボルトやディスクを配置し直します。最終サイズと見る距離で分かる部分だけにディテールを加えます。
- Pavlovich:レベルを持たない DynaMesh には、Proxy Pose と ZSphere リグを使います。 サイズより位置が重要です。補助パーツでボリュームを保ち、回転だけで動かします。
- Gaboury:900 万ポリゴンのスカルプトを中空にしないでください。 軽量な DynaMesh のコピーをシェル化します(車の高さが 9 インチの場合、128 で十分でした)。内壁を残して Polish を適用し、Live Boolean でディテールを損なっていない元のパーツから差し引きます。Create Shell Thickness はミリメートル単位ではありません。必ず測定してください。
- Bennett(Hasbro):最小壁厚は 1 mm(0.85 mm は不合格と判定されました)、エッジは 0.5 mm、Formlabs パーツのはめ合いオフセットは 0.12 mm です。 外側の形状を変えないように、薄い壁は内側から厚くします。
- Gaboury:見た目で Decimation の度合いを決めます(メッシュあたり約 100 万ポリゴンで十分です。1 万~2 万三角形でもプリントできます)。顔や手など、重要な部分にマスクをかけて Decimation Master の処理を誘導します。編集後は必ず再度前処理を行い、SLA ではすべてのカップに通気口を設けます。
まず確認すること
| 入力 | 計画に影響する理由 | 指示がない場合のデフォルト |
|---|---|---|
| 製造方法:レジン(SLA、MSLA)、FDM、成形または鋳造 | 壁厚、クリアランス、中空化、収縮(Hasbro は PVC を 104 % でスカルプトします)。金型では Hasbro のルールも適用されます。指が触れていると金型が開かなくなり、Group Front でパーティングラインを確認し、Draw Draft Analysis で抜き勾配を確認します | レジン、直接プリント |
| サイズ:比率と実際の高さ、幅 x 高さ x 奥行きの外形寸法、台座を含むかどうか | エクスポート時のスケール、指定サイズ、特徴部の最小寸法 | 1/6 = 立ち姿の高さ / 6(1,800 mm なら 300 mm)、休息ポーズで計測 |
| プリンターの造形サイズ、スライサーの上限 | 分割(Gaboury は Form 2 の造形ベッドに合わせて車を分割しました)。ポリゴン数またはファイルサイズの上限(同氏の例では 50 MB) | 確認する。各パーツのサイズを報告する |
| パーツ:一体型かキットか、接着するかダボで接合するか | 分割位置とキー(Carratala はスカルプトしながら分割位置を計画します) | 自然な分割位置(襟、ベルト、袖口、手元の武器)、接着する各接合部にキーを 2 つ [追加] |
| ポーズのソース、別ポーズ | ルートとレイヤー | ポーズごとに 1 レイヤー |
| 納品物 | STL には単位がなく、3MF には単位が定義されています | パーツごとに mm 単位の STL と 3MF、JSON レポート |
マウスを使わないポージング
アーティストの標準的な操作(Ctrl+クリックでポリグループを選択し、ギズモのリングをドラッグする)は、キャンバス上のジェスチャーです。SDK ではマスクデータを読み取れません。また、press_key はドキュメントに記載されていますが、インストール済みの 2026 スタブでは「Does not work, hidden for now」とマークされています(canvas_click と同様、Maxon フォーラムでは信頼性が低いと報告されています)。決定性の高い順に、次の方法があります。
| 方法 | 対象 | 方法 | 状況 |
|---|---|---|---|
| A. 数値指定の外部リグ(Munoz Gomez の Blender 方式を厳密化) | ヒューマノイド、極端なポーズ、多数のポーズ | TPoseMesh、export_tpose、それぞれ 1 つのボーンに厳密にウェイト付けした loose_pieces、角度でポーズを指定して同じ順序で返す scenario-blender-rigging、import_pose、TPose>SubT | 決定論的。ガードをオフラインでテスト済み |
| B. コードによる ZSphere リグ | ZBrush 内、オーガニックモデル、または Proxy Pose 経由の DynaMesh | ポリグループの境界から関節を作成し、zs_build、順運動学の zs_pose | FK をテスト済み。API 編集後のバインドメッシュの追従 [live_p02 で要確認] |
| C. SubTool 全体のリジッド移動 | ベース、スタンド、ポージング後に追加した小道具 | rotate_subtool_matrix(X、Y、Z)と translate_subtool でキャリア全体を変換し、エクスポート結果から補正 | 数学的にはテスト済み。符号 [live_p03、p08 で要確認] |
| D. マスクとギズモまたはアクションライン | コンピューター操作エージェントまたは人間によるクリーンアップ | Ctrl+クリックでグループを選択し、Alt でピボットを設定してドラッグ | このエージェントには不向き |
人間の介入なしでは難しい作業:ジェスチャーの設計、Plouffe による手描きのグラデーションマスク、大規模な折り目の再設計。
シームのスムージングと Move Topological には procedures.md の P6 にエージェント向けの手順がありますが、まだ[要確認]です。
ワークフロー
zb_pose.call("name", ...) は ZBrush 内で実行され、zb_print はエクスポートした OBJ を処理します。コード全文は
references/procedures.md にあります。
- 受け入れ。 バージョン管理された ZTL、
inventory()、mm 単位のターゲットとエンベロープ。GATE:すべての SubTool に名前が付いており、 一意で、ポイントとレベルがあること。 - スケール。
set_export_scale、export_parts、check_scale、続いてbrief_box(エクスポート中は非表示)。GATE:高さが 0.5 % 以内 [added] であること、すべてのパーツに同じエクスポートスケールが設定されていること(別の ZTool から追加したパーツは異なるスケールで取り込まれます)、envelopeが問題ないこと、指定寸法をcaliperで確認すること。 - ポーズの準備。
clean_project(ZTL を保存し、デフォルトプロジェクトを開いて Load Tool を実行);各セグメントにポリグループを設定し、 プレートと小物は独立したパーツのままにする;preflight_tposeを実行。GATE:preflight が問題なく、密度のばらつきが 2 倍未満 [added] であること。レベルがない場合は、scenario-zbrush-retopology-export または Proxy Pose を使用します。 - ポーズ。 小物とプレートを表示した状態で
tpose_mesh(layer=True, groups=True)を実行し、export_tpose(順序の基準)を実行して、save_projectで保存します。ルート A または B を使い、まず中心を移動し、親を子より先に処理して、回転のみを行います。 Gizmo デフォーマーは使用しません。GATE:rigid_piecesが問題なく、followsにより各付属小物がその支持パーツの移動先に配置されていること(0.5 mm [added])、piece_interferenceが空であるか P6 用に記録されていること、tpose_to_subtools(expected, rest_obj)が順序ガードとポイント数のチェックを通ること、rigid_deltaが計画から 2 度以内 [added] であること、balanceで自立するか、台座を計画していること。レビューシートでシルエットと重心を確認します(Plouffe:「不安定なポーズは作品全体を損なう」)。 - 変形の修正。 最上位に新しいレイヤーを作成します。まず継ぎ目を修正し、その間は残りを保護します(Munoz Gomez はマスクを解除する前にスムーズ化し、移動します)。次に、新しいポーズに合わせてボリュームと
折り目を再スカルプトします(引き伸ばされた関節には張力、内側の曲げには圧縮を加えます [added])。プリミティブを再配置し、パーツには Move Topological を使います。レイヤーは線形にブレンドされるため、ポーズ専用レイヤーにポーズ固有のディテールを追加します。GATE:
stretch_reportがレストポーズに近く、piece_interferenceが問題なく、Polyframe のタイルが揃っていること。 - 分割。 自然な切れ目でパーツを分割し、一体で印刷するものは結合します(軽量コピーに対する Live Boolean union または DynaMesh:Hasbro のエンジニアはデシメートしたメッシュを使用)。成形パーツには、ループ、パーティングライン、抜き勾配を設けます。GATE:各パーツが閉じており、造形エリアに収まること。
- 必要に応じて中空化。
hollow_copy(内側に挿入し、DynaMesh を約 128 に設定して Create Shell を実行)、keep_inner_shell、Live Boolean の順に使用します。詳細なパーツを開始形状とし、内殻、排出口、通気口を差し引きます。 薄い端部は中実のままにします。薄すぎる場合は、カッターを内側へ移動し、外側は決して動かしません。GATE:壁の目標厚さに対するthicknessp01、 樹脂用に密閉空洞がないこと、outer_driftが問題ないこと、カップ部分に通気口があること。 - カットとキーの作成。 Live Boolean の QCube カッター、またはポリグループを分割して Close Holes を実行する方法 [added] を使います。
plan_keysを実行します。ソケットはクリアランスの 2 倍だけ大きくしたペグとします。GATE:clearanceの中央値が目標値で、干渉がないこと。 キットを作る前に、キーのペアを 1 組試しに印刷します(Gaboury)。 - デシメート。 名前を一意にします。SubTool ごとに予算を設定し、Pre-process の前にマスクを適用します(
mask="cavity"[added])。編集のたびに再度 pre-process を実行します。GATE:面数が予算内であり、deviationの p99 が プリンターの XY 解像度未満 [added] で、前後のクローズアップ画像があること。 - 納品。 パーツごとに mm 単位の STL と 3MF を用意し、
print_report(..., envelope_mm=...)を実行します。実寸のレビュータイルを用意します(工程の最小サイズを下回るディテールは埋め戻すか、融合するか、塗装に委ねます:Hasbro)。GATE:print_report["ok"]が true で、「要確認」の項目をすべて確認し、単位を明記していること。
数値
| 項目 | 値 | 出典 |
|---|---|---|
| 最小肉厚 | 1 mm;0.85 は警告対象 | Hasbro、PVC、Formlabs の複製品 |
| トリミング後のエッジ | 0.5 mm;約 0.2 mm では浮いてしまう | Hasbro |
| フィットオフセット | 0.12 mm(Formlabs);ZTool で Inflate 2 がこの値だった | Hasbro、ZTool ごとに調整 |
| シェルの複製 | DynaMesh 64 は低すぎ、128 で十分(車内に 9 個) | Gaboury |
| From Thickness | mm にスケール後、最小 1、最大 5 | Maxon のドキュメント |
| デシメーション | メッシュあたり約 1M;20 % で 2.7M から 545k へ変更なし;8k ではファセット化 | Gaboury |
| デシメーション品質 | 40~100 % はほぼ同一、2~40 % では差が見える | Maxon のドキュメント |
| 縮小を考慮したスケール | 高さ / 12 + 4 %(高さ 6 in の PVC フィギュアの場合) | Hasbro |
| Proxy Pose のスキン | Adaptive Skin Density 1、DynaMesh Resolution 0 | Pavlovich |
品質ゲート
- 測定(mm 単位の OBJ に対する
zb_print):水密性、体積、薄壁の割合(サンプルの 0.2 % [追加済み])、閉じた空洞、浮いたシェル、高さ、外形、単一のエクスポートスケール、ビルドボリューム、 クリアランス、バランス、面数、外形のずれ。ポーズ:点の順序、rigid_pieces、follows、piece_interference、rigid_delta、stretch_report。 - 目視(scenario-zbrush-expert の
zb_review.review、MatCap Gray、5 方向):ジェスチャーと バランス;Polyframe を使った関節;プリミティブが丸いこと;グリップがハンドルを囲んで閉じていること;brief box を 1 回表示;コピー上の From Thickness;一覧にあるすべての箇所;デシメート後のクローズアップ。判定にはreferences/critique.mdを使用します。
よくある間違い
| 間違い | その結果 | 修正方法 |
|---|---|---|
| 最上位レベルのポーズ、粗いマスク、早すぎるマスク解除 | ポリゴンが引き伸ばされ、重なります | 最下位レベルを使い、マスクをぼかし、解除する前に境目を滑らかにして移動します(Munoz Gomez) |
| 持たせた小道具をTPoseメッシュから引き出し、その後、片方の角度で回転させる | 持ち上げて曲げた手の横に剣が現れます。interference が0でも検査を通過します | TPoseメッシュ内に剛体パーツとして保持します。それができない場合は、持ち手全体のトランスフォームを使い、follows をゲートします |
| TPoseMeshで一部が非表示のSubTool | Vertex Mismatch | preflight_tpose(すべてでShowPt) |
| TPoseメッシュ上のギズモデフォーマ | SubToolが破損します。ポイント数の検査では並べ替えを検出できません | 回転またはリグを使います。順序ガードが転送を拒否します |
| TPoseメッシュがある状態でZPRを保存せずにセッションを終了する | SubToolに戻る方法がありません | TPoseMeshの直後にsave_projectを実行します |
| ポーズ上にニュートラルポーズのディテールを表示する | 曲げた部分のディテールがぼやけ、引き伸ばされます | ポーズ専用レイヤーで調整します(線形ブレンド) |
| Create Shellの数値をmmとして読み取り、インサートを表面に接触させる | 壁の形状が不正になり、ひとつのパーツに結合されます | thicknessを測定し、インサートを内側に配置して、排水口をカッターとして使います |
| 外側から壁を厚くする | スカルプトがずれていきます | カッターを内側に移動し、outer_driftを確認します |
| Pre-processの後にマスクまたは編集を行う | デシメーションに反映されません | 再度Pre-processを実行します(ラッパーは常に実行します) |
| キーにクリアランスがない | 「正午までにサンディングするディスクが20個」(Hasbro) | 0.12 mmのオフセットを設定して測定し、テストプリントします |
| 単位のないSTL | 150 mmが150インチで印刷されます | mmを明記するか、3MFを同梱します |
引き継ぎ
- 受け取り:scenario-zbrush-sculpting、scenario-zbrush-character-creature、 scenario-zbrush-stylized、scenario-zbrush-hard-surfaceから、名前付きSubToolを含むバージョン管理されたZTL、 レベル(またはProxy Pose用のDynaMesh)、パーツごとのポリグループ、最後のレビューシートを受け取ります。スカルプトにレベルがない場合は、 scenario-zbrush-retopology-exportから投影済みスタックを受け取ります。
- 引き渡し:scenario-blender-riggingまたはscenario-maya-expertに、TPose OBJと計画(関節、 角度、ボーンごとの剛体パーツ)を渡し、同じ頂点順で返されることを前提とします。
- 納品:ポーズを付けたスカルプト(レイヤー、ZTL、ZPR、シート)をscenario-zbrush-paint-renderに納品します。プリント用パッケージ(mm単位のSTLと3MF、レポート、シート、パーツとキーの一覧)はユーザーまたはプリンターに納品します。
ZBrush 2026 の注意事項
- Proxy Pose(2023.1)は Tool > Geometry にあります。Transpose Master も引き続き同梱されています(2025.2 で「ファイル保存後に非アクティブになる」問題が修正されました)。そのデータは ZPR に保存されます。ドキュメントに記載されているクリーンプロジェクト DefaultCube.ZPR は 2026.2.1 のインストールには含まれていません。代わりに
Lightbox/Projects/DefaultProject.ZPRが使われます[要確認]。 - 3D Print Hub には Export to 3MF があります(エラーは 2026.2.1 で修正されました)。Update Size Ratios と Scale Master Set Scene Scale はダイアログを開きます。エクスポートのスケール経由の方法を使用してください。
- From Thickness(2026.2.1 では Min Thickness、Max Thickness、Ball or Ray と表示されます)は、Max Thickness Polygons を超えると「ポリゴン数が多すぎます……続行しますか?」と尋ねます。このメッセージでブリッジが停止するため、
from_thicknessは先に拒否します。 - Live Boolean を適用すると、結果から UV、クリース、3D レイヤー、マスクが失われます。プリント用の複製にブーリアンを適用してください。Decimation Master と Transpose Master は ZScript プラグインです。制御が戻ることを確認してください(live_p01、p07)。macOS では Cmd+W で ZBrush が終了します。
参考資料
references/procedures.md:完全なコードを含むブリッジ手順(スケールと簡易ボックス、クリーンプロジェクト、Transpose Master、3 つのリグ手法、修正、中空化チェーン、キー、マスク付きデシメーション、納品)。ZBrush を操作する前に読み込んでください。references/expert-notes.md:タイムスタンプと判断条件を含む、専門家による原則。ポーズやキットを計画するときに読み込んでください。references/critique.md:ポーズ、変形、プリント部品の評価基準。各ゲートで読み込んでください。references/gui-paths.md:コンピューター操作エージェントまたは人間が使用するパレット、ボタン、ホットキー。references/sources.md:出典、認証情報、タイムスタンプ、改訂情報。scripts/zb_pose.py(ZBrush 内)とscripts/zb_print.py(エージェント側、numpy):オフラインテストはtests/code/zbrush-pose-print/にあります。live_p01 から live_p08 までのライブテストは、ZBrush ではまだ実行されていません。