mcpField
S
scenario-zbrush-retopology-export

scenario-zbrush-retopology-export

github.com/scenario-labsクリエイティブ・メディア1.2k185 回インストール1 日前に更新
リポジトリ

scenario-zbrush-retopology-export について

scenario-zbrush-retopology-exportは、ZBrushの造形をクリーンで低解像度の交換用メッシュに整えるスキルです。サブディビジョンレベルやマップでディテールを保ちながら、リトポロジー、投影、UV、ベイク、出力、検証を進めます。

主な機能

  1. 01リトポロジー入力の準備と監査
  2. 02対称性を指定したZRemesher実行
  3. 03再構築したレベルへの造形投影
  4. 04UV作成とマップのベイク
  5. 05スケールを確認してメッシュ出力

活用シーン

  1. 01リギングや受け渡し用の造形準備
  2. 02リメッシュ後のサブディビジョン再構築
  3. 03UV付きメッシュとマップの出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-zbrush-retopology-export

インストール後、Claude Code で/scenario-zbrush-retopology-exportを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
critique.md
expert-notes.md
gui-paths.md
procedures.md
sources.md
scripts/
zb_retopology_export.py

詳細

ZBrush のリトポロジーとエクスポート(パイプラインスカルプター)

エキスパートレベルでは、スカルプトを、最小レベルの軽量でクリーンな交換用メッシュとして ZBrush から出力し、ディテールは再構築したサブディビジョンスタックまたはマップに保持し、実寸に合わせ、すべてのファイルをパースして検証します。大部分はエージェントが得意とする決定的なパレット操作です。クリック単位のトポロジー操作、モディファイアーのクリック操作、いくつかのダイアログ操作は、人間またはコンピューター操作エージェントが担当します。ここに記載されている関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください (npx skills add scenario-labs/skills --skill <name>)。無人で処理を進める場合は、ツールスキーマに基づいて作業し、不足している点を明示してください。

必須の背景知識: scenario-zbrush-expert(ブリッジ、ストロークエンジン、レビューのループ、2026 年の注意点)。

ツールキット:scripts/zb_retopology_export.py(rx)。リードの zb_ops、zb_audit、zb_launch の上に構築されています。ZBrush 内で rx.zcall("func", ...) を呼び出し、エージェント側で監査します。すべての投影パスでは、リードの安全な zb_ops.project_all(バージョン管理されたチェックポイント、ネット、ゲート)を使用します。ZBrush ではまだ実行していません(オフラインテスト 88 件はすべて合格。ライブテストについてはreferences/procedures.mdを参照してください)。

スタンス(専門家が重視するポイント)

  • ZRemesherを実行する前に、必ず対称性を意図的に設定します。 対称をオンにすると、ZRemesherは半分をリメッシュしてミラーリングします。これにより、ポーズ付きまたは非対称のメッシュが壊れる、暗黙のMirror And Weldが発生します(Drust、Kjce71jjWJU 00:01:11)。rx.zremeshではsymmetricが必須引数です。
  • ZRemesherに簡単な問題を与えます。 アニメーションする顔はニュートラルな状態にし、折り目はリラックスさせ、新しいトポロジー上で表情をスカルプトし直します(Pavlovich n5_cZK-9peg 00:01:39)。耳と手は単独でリメッシュし、開いた境界は先に整えます(00:44:36)。意図しない穴は先に閉じます。穴は残ってポリゴン数を増やしてしまいます(ZRemesherのドキュメント)。
  • ZRemesherはエッジフローを整えるためのもので、ディテールは投影で戻します。 低い値を目指します(Gaboury:腕は5kから18k、34D6VljTjBs 00:02:18)。その後、Dist 0.1でProject Allを実行すると、アーティファクトの「90パーセント」が修正されます(Drust nxMYYsyJt3o 00:02:19)。Soloモードでも、表示するのはソースとターゲットだけにします(Pavlovich 01:07:26)。AdaptをオンにしてKeep Groupsを使用し、Targetを5にすると、8.0kから9.4kのポイントになりました(フレーム00:18:50、00:22:09)。Adaptをオフにすると、指定した数になります。
  • 投影には危険な箇所があります。 目、口、脇の下、指の間、股間です。そこに残ったものは、ディスプレイスメントでくっきりした線になります(FlippedNormals Zp07GW3rND0 00:07:43)。まぶたを少し越えるまで広げた、目の内側のグループをマスクします。モーフターゲットまたはマスクを使った再投影で修正し、スムージングは決して使いません(00:05:31、00:06:36)。
  • ポリグループで誘導し、先に境界をスムージングします。 ZRemesherはギザギザの境界をループに取り込みます(Pavlovich 00:05:27)。きれいな境界ではSmooth Groupsを0にし、ギザギザしたDynaMeshグループでは1にします(Drust 8D-xqasgUws 00:02:17)。うまくいかなかったまぶた、口角、鼻孔は削除して作り直します(Pavlovich 00:21:36)。Retopoブラシの「No」を選ぶと、軽量なZRemesherメッシュを編集できるようになります(Pablo Munoz Gomez、I4nePXDTrhQ 00:06:36)。
  • 最低レベルが受け渡し用メッシュです。 UVはそのレベルで作成します(Gaboury cemmalvugFk 00:00:51)。マップは現在のレベルと同じSubToolの最上位レベルを比較するもので、2つのSubToolを比較するものではありません(Drust n0qqpwvn-jA 00:01:14)。レベル1にはフォームを、max-1にはマイクロディテールだけを保持します(2zDAtaQqwh8 00:02:53)。
  • フィルム用ディスプレイスメントは固定の手順です(FlippedNormals -ThBTEc8L_M)。Flip Vをオンにします(「絶対に必要」)。Adaptiveはオフにします(24時間ではなく、約1時間で100 UDIMs)。DpSubPixは0、32-bit EXRを使用し、3 Channelsはオフにします。レンダラーのゼロ値はMidです(MMEのドキュメント:32-bitではMid 0。FlippedNormalsでは0.5を維持し、記録しておきます)。
  • エクスポート後のサイズ=内部の範囲 x Export Scale(Drust n2xPrwI9o1U 00:04:19)。XYZ Sizeは1から4の間にします(Gallagher EXjfH_X2hkM 00:28:23)。Export ScaleとオフセットはSubToolごとに設定するため、すべてのSubToolに同じ値を設定します[追加]。
  • 生成またはスキャンしたメッシュは形状の参照用であり、修復するトポロジーではありません。 薄いシェルを厚くしてから、早い段階でDynaMeshを行います。DynaMeshの穴埋めは「まっすぐ反対側まで突き抜ける」ためです(Drust PrFQXjs_6_w 00:02:53)。ノイズのある元データではなく、クリーンアップしたDynaMeshからスタックを再構築します[追加]。

最初に決めること

入力変更する項目ブリーフに指定がない場合のデフォルト
出力先メッシュタイプ、マップ、単位、軸Maya:OBJ レベル1の四角形ポリゴン、単位は cm + 32-bit EXR ディスプレイスメント、Mid 0.5
デフォームの有無:顔、関節正確なループ(人間のリトポロジーパス)、ニュートラルな顔キャラクターでは「はい」。表情を付ける場合は scenario-zbrush-character-creature に戻します(ニュートラル版、またはそのレイヤーをオフにします)
予算ZRemesher の目標値、Adaptリグ用または映画用のボディ:15k~25k 四角形ポリゴン[追加]、アニメーション用の頭部:10k~20k(Retopo ドキュメント)、ゲーム用:ブリーフに従います
ポーズまたは非対称対称をオフにするポーズが付いておらず、対称にデザインされている場合にのみ対称にします
実寸エクスポートスケール人間の身長は180 cm(Gallagher の例)
マップとタイルMME プリセット、UDIM プランSubTool ごとに4096タイルを1つ使用します。UDIM のレイアウトは Maya または Blender で設定します
ソースの種類手順レベルがある場合:2M 未満のレベルを使用。ない場合:DynaMesh コピーを使用。AI またはスキャンの場合:最初にクリーンアップします

ワークフロー

  1. 事前チェックとチェックポイント。 rx.zcall("preflight", 180.0);zb_ops.save_ztl。GATE:フラグが解決済みであること(頂点数が8M超、XYZ Sizeが1〜4の範囲外、Export Scaleが0、名前の重複)。
  2. ZRemesherの入力。 remesh_input("auto", max_points=2_000_000) はスカルプトを複製し、元のメッシュ(投影元)を非表示にします;意図しない穴がある場合は、fill_holes=True でClose HolesとFix Meshを追加します。DynaMeshとClose Holesは目の窪みや口の袋状部分も閉じます:openings_closed で穴のゲートを設定します(0、それ以外は意図した開口部)。GATE:コピーの頂点数が8M未満で、元のメッシュがそのまま残り、面がニュートラルであること。
  3. ガイド。 ボタンでポリグループを作成(Auto Groups、Groups By Normals、From Polypaint);人が描いたマスクは、Edgeloop Masked Borderでサポートループ付きのグループになります(Drust IpTYcGxxsdM 00:05:08);polish_band("groups")。耳と手:個別のSubToolにする(Groups Split、Split Hidden)、polish_band("border")、個別に実行する(手のAdaptive Sizeは約14:Pavlovich 00:59:42)、その後merge_down_run(..., weld=True);Freeze Borderは、境界を正確に再溶接する必要がある場合に限り、手足全体をリメッシュした後に使用します。アニメーションには不利です(01:03:44)。GATE:Polyframeシートで、閉じた滑らかなループが確認でき、再結合後にシームループがないこと。
  4. ZRemesher。 zremesh(target_k, symmetric, keep_groups=True, smooth_groups=0)(Half、Same、Doubleはオフ)。その後、retry(adaptive_size=...) を0、5、21で実行します。Keep Groups、Keep Creases、Smooth Groupsを変更したり、スカルプトしたりするとRetryキャッシュが無効になります。スイープでは最後のバリアントが残ります:pick_retry、retry(**pick["retry"])、confirm_retry。任意でAdaptをオフにしたHalfパスを実行するか、リトポロジーの上にさらにリトポロジーを行います(Drust R2MzFqWMaWY 00:01:44)。うなじや眉の中心線が不良な場合:Alt+ZRemesher。モディファイアのクリック操作pressでは送信できないため、コンピューターの使用を依頼し、centre_line_componentsを比較します(Pavlovich 00:48:31)。snap_backがtrueの場合、判定前にproject_stack(copy, source, levels=0, checkpoint=ztl)を実行します(00:22:05)。GATE:in_band;GrpをオンにしたQAエクスポートでtopo_reportとretopo_verdict(purpose="rig", expected_holes=...)を実行し、ループが形状に沿っていること。穴の処理に失敗した場合、スクリプトは停止し、人によるRetopoパスを求めます。
  5. スタックの再構築。 project_stack(target, source, checkpoint=ztl):両方を表示し、Dist 0.1、レベル1から開始して、ソースの半分の数まで各レベルでDivide + Project Allを行い、パスごとにモーフターゲットを作成します。最後に両方のSubToolでColorizeをオンにして色を付けます(Drust PrFQXjs_6_w 00:16:35)。危険領域またはフィルムのように薄い顔の場合:order="top_first", stop_after="nets"(分割後、StoreMTと最上部のレイヤーを作成:FlippedNormals 00:02:13)。人が目の内側のグループを分離し、protect_isolated(grow=1)、project_levels(..., nets_done=True)を実行します。GATE:projection_from_stack(レベル1は変更なし、バウンディングボックス0.5パーセント、体積2パーセント[追加]);同じ視点からのシートと、各レベルの危険領域のクローズアップ。破損箇所:zb_ops.morph_repair;ターゲットがソースの内側にある場合は、マスクしたInflate、またはInnerとDist 1を設定したProjectionShellを使用します(Gaboury pQbPtH0p5Bg 00:02:30)。次にdrop_morph_target()を実行します:ベイク処理では保存済みのモーフターゲットがあると拒否されます。マップのベースとして使える可能性があります(Drust 2zDAtaQqwh8 00:01:44)[要検証]。
  6. レベル1のUV(UVは各レベルに引き継がれます。Gaboury cemmalvugFk 00:03:30)。簡易方式:zb_ops.uv_unwrap("native")。シームを明示的に指定する場合:unwrap_creases()(Pavlovich cvqoVUX5aBw)。Painterのアイランド:uvmaster_roundtrip()。目には個別のシンプルなUVを設定します。GATE:Txrエクスポートでuv_verdictを実行し、シームが見えず、顔が分割されていないことを確認します。
  7. マップ。 mme_create_all(dir, name, settings="arnold") または bake_normal_map/bake_displacement_map。GATE:ファイルごとにmap_verdictを実行します(サイズ、ビット数、Midでフラット、法線は128/128/255でフラット:Polycount);向きはビルドごとに一度キャリブレーションします(live_rx_04 fixture)。
  8. スケール、名前、エクスポート。 set_export_scale(180, axis=1)(すべてのSubTool);set_export_switches(quads=True, uvs=True, groups=False);export_subtools(dir, level="lowest")。FBX:ZScriptではオプションウィンドウを抑制できず、Pythonは未検証です(Maxonフォーラム)。AppleScriptのSystem Eventsで、このMacのZBrushダイアログをクリックします[この環境で要検証];デフォルトはOBJで、scenario-maya-expertまたはscenario-blender-expertで変換します。GATE:obj_headerが#Auto scale(2026.2.1で書き込まれた、リードのv03エクスポート)からExport Scaleを読み戻すこと;scale_reportに合格すること(1パーセント、足元が0、中央揃え)。
  9. 引き継ぎ。 handoff_report(json, ...):メッシュ、マップ、単位、軸、Midとスケール、法線の規約、監査、シート、未検証リスト。
生成またはスキャンしたメッシュ(Z6)
  1. scenario-3d の GLB:glb_to_obj、triage_ai_mesh(obj, expected_parts)、続いて orient_for_import:Z-up のヒントがある場合のみ回転し、中心からずれたメッシュのみを中央に配置します(glTF は Y-up)。 インポートするファイルに名前を付けます。
  2. import_mesh(Weld;Tri2Quad は AI の三角形から四角形を再構築します[範囲を確認]);未加工の ZTL; duplicate_keep():コピーをフォームと色のソースとして保持し、名前で追跡します(index_of)。分割や結合で SubTool の番号が振り直されるためです。
  3. fix_mesh;split_parts、hide_small_parts(protect_names=[raw])。異なる色のパーツが融合している場合:color_to_groups、Groups Split[追加];そうでなければ scenario-3d のセグメンテーション、または人手での SliceCurve カットを使います。
  4. パーツごとに close_holes を実行します。DynaMesh の後でスイスチーズ状になった場合は、薄すぎます。まず厚みを増やしてください。
  5. Tool 内で、同一ボディのパーツを merge_down_run で結合します(Drust 00:09:27)。 dynamesh_keep(res, keep="groups"):ポリペイントがオンの場合、DynaMesh はポリグループの代わりにペイントを保持します(DynaMesh doc;一般則:scenario-zbrush-sculpting)。Blur は 0、Project はオフにします。穴が残る場合:書き出したモデルに hole_plugs(obj) を実行し、plug_hole(center, diameter)、merge_into(body, [plug]) を実行して、再度 DynaMesh を適用します(Drust PrFQXjs_6_w 00:07:16)。Polish を適用し、対称な場合は Mirror And Weld を使います。局所的な再構築には Sculptris Pro を使います(scenario-zbrush-sculpting)。
  6. ゲート:cleanup_verdict(raw, clean)(閉じていること、マニフォールドであること、シェル、バウンディングボックスの差が 2 パーセント、粗さが未加工モデルの 0.8 倍以下[追加]);シートは MatCap Gray、Double はオン、Colorize はオフにします(シートのみ。set_display は以前の値を返します)。
  7. パーツごとに ZRemesher(5~20 千ポリゴン)を適用し、元の形状に戻してから、クリーンアップした DynaMesh からジオメトリを投影し、未加工のコピーからのみ色を投影します:project_levels(..., geometry=False, color_last=True)[確認]。scenario-zbrush-sculpting に引き継ぎます(大きな変更は SDiv 1、二次的な変更は 2~3)。

数値

値対象出典
ZRemesher の目標値(千単位);5 の場合は 4,963Target Polygons CountPablo rArw79xEpvE 00:03:16
Adaptive Size のデフォルトは 50;0 は均一な四角形、5~21 は曲線的;手動設定は約 14密度ZRemesher doc;Pavlovich n5
Color Density は 2 で多い(ピンク)、0.25 で少ない(青)、白は中立ポリペイントの密度Pavlovich n5 01:01:32
XYZ Size は 1~4;インポート時に 2 に正規化内部サイズGallagher;Drust
Export Scale = target / internal extent(180 / 2 = 90)単位Drust;Gallagher 00:28:55

ターゲット別の設定

ターゲットメッシュディスプレイスメント法線
Maya + ArnoldOBJ level 1, Qud, Txr, Grp off; cm32-bit EXR, Mid 0.5 = Scalar Zero Value, Catmull-Clark about 3, Auto Bumptangent, OpenGL [added]
Unreal, Unitytriangulated, FBX via Maya or Blender; cm, meters [added]noneengine tangent basis; Unreal DirectX green [added]
Substance PainterSubstance Bridge Low & High, Auto-Bake, Force Auto-Unwrap offnonebaked by Painter
BlenderOBJ; meters32-bit EXR, Midlevel = Mid [added]OpenGL; game bakes with scenario-blender-uv-baking

Redshift、vector displacement、すべての行については、rx.RENDERERS、references/procedures.md を参照してください。

品質ゲート

  • コード:エクスポートするすべてのファイルで、topo_report、projection_verdict、uv_report、scale_report、 map_verdict、names_report、cleanup_verdict を確認します。
  • ビジュアル(zb_review.review シート):ループを確認するため、正面、側面、斜め前からPolyframeを表示します。投影後は、同じ視点でソースとターゲットを確認し、各レベルで危険箇所を拡大して確認します。クリーンアップでは、DoubleをオンにしたMatCap Grayを使います。判断にはreferences/critique.mdを参照してください。

よくある間違い

間違い見た目修正方法
対称がオンのままポーズを付けた手足が左右反転するzremesh(symmetric=False)
笑顔の顔をリメッシュするループがリグではなく笑顔に沿うまずニュートラルにし、新しいメッシュで表情を戻す
リトライスイープをそのままにする保持されたメッシュが選択したものと異なるpick_retry、リトライを戻し、confirm_retry
Distが小さすぎるディテールに穴が開き、斑点ができるDist 0.1にし、ソース全体を包み込む
投影をスムージングする異常な頂点が残るモーフターゲット、マスク付き再投影
片側でColorizeがオフ投影カラーが表示されないcolor_last=True で両側をオンにする
ベイク時にモーフターゲットが残っている誤ったベースに対するマップになる [verify]drop_morph_target()
SDKの法線ベイクがデフォルト設定ワールド空間のマップになるcreate_normal_map(..., local_coordinates=True)
Maya用OBJでGrpがオンメッシュがパーツに分割されるGrpをオフにする(FlippedNormals 00:15:08)
1つのSubToolだけでExport Scaleを設定目が頭から浮いて見えるset_export_scale(..., all_subtools=True)
レイヤーのあるキャラクターでUnifyを実行レイヤーとモーフが壊れるMultiAppendでスケール済みのツールに追加(Gallagher 00:27:16)
AIメッシュのDynaMeshでPolypaintがオン一部のポリグループが消えるdynamesh_keep(keep="groups")
クリーンアップ中にMergeVisibleを実行カラーソースのない新しいMerged_ ToolができるToolでmerge_down_runを実行

引き継ぎ

  • 受け取るもの:scenario-zbrush-sculpting、scenario-zbrush-character-creature、 scenario-zbrush-stylized、scenario-zbrush-hard-surfaceから、名前付きSubToolsを含むバージョン管理されたZTL、 stats()、最後のシート。scenario-3dから、GLBまたはOBJ。
  • 引き渡すもの:scenario-maya-retopology-uvとscenario-maya-riggingへ、SubToolごとのレベル1 OBJ、 cm、Yアップ、中央配置、足元を0に配置、目は別パーツ。scenario-maya-lookdevへ、マップと handoff_report。scenario-blender-uv-bakingまたはSubstanceへ、名前を一致させた低ポリゴン版と デシメートした高ポリゴン版。scenario-zbrush-paint-renderへ、UV付きのスタック。 scenario-zbrush-pose-printへ、閉じたコピー。

ZBrush 2026の注意点

  • リトポロジーブラシ(2026.1)。ポリグループを使用するUV Masterは2026.2.0で修正。Substance Bridge(2026.2)のラベルは「Auto-Bake」と「Force Auto-Unwrap」[uistr]です。「Force Auto-Unwrap」は全体に適用され、良好なUVを削除します。
  • SDK:press()は修飾キーを受け取りません(Altクリックはコンピューター操作に回されます)。create_normal_map()のデフォルトはワールド空間です。
  • macOS:Control+Wでポリグループを作成します。Command+WでZBrushを終了します(バージョン間の差異は3.13)。
  • Freeze Borderを有効にした部分的なZRemeshでは、サブディビジョンレベルが削除されます(Drust 0TlG4Ex9lQA 00:02:26)。その前後でfreeze_levels()を使用してください。

参考資料

  • references/procedures.md:ブリッジの全手順(Z4、Z6、ターゲットごとのマップ、フィクスチャ)、テストパス、パスの根拠です。各ステージの実行前に読み込んでください。
  • references/expert-notes.md:専門家による判断とタイムスタンプ、判断を左右する条件です。ルートを選択するときに読み込んでください。
  • references/critique.md:レビュー基準(ループ、投影、UV、マップ、スケール、クリーンアップ)です。各ゲートで読み込んでください。
  • references/gui-paths.md:人間またはコンピューター操作エージェント向けのパレット、ホットキー、リトポロジーブラシのジェスチャーです。
  • references/sources.md:認証情報、URL、最適なタイムスタンプを含むすべての出典です。

コメント