ZBrush sculpting (core forms, scripted strokes)
SkillAI & modelsGuides your agent through sculpting heads, busts and creatures in ZBrush using brushes and mesh tools.
Use ZBrush sculpting (core forms, scripted strokes) in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add ZBrush sculpting (core forms, scripted strokes) and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the ZBrush sculpting (core forms, scripted strokes) skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Use when an agent sculpts organic forms in ZBrush 2026 (sculpt a head, bust or creature in ZBrush from a sphere, ZSpheres or primitives); when blocking primary and secondary forms, choosing DynaMesh, Sculptris Pro or subdivision levels, or setting ClayBuildup, Dam_Standard, Move or TrimDynamic; when
What this skill tells your AI
The instructions your AI receives, as published by scenario-labs/skills in skills/dcc/zbrush/scenario-zbrush-sculpting/SKILL.md and read by Ahel’s review.
Expert sculpting goes big to small with gates: light meshes raised in resolution only when the forms ask, clay built across the form in thin low-intensity layers, sharpness last and never on weak shapes. An agent has no pen: it uses exact operations first (primitives, ZSpheres, DynaMesh, masks plus Deformation sliders), then strokes planned from model-space forms, aimed through the view, measured in volume and reviewed after every pass (scripts/zb_sculpt.py). If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.
REQUIRED BACKGROUND: scenario-zbrush-expert (bridge, stroke engine, review loop, 2026 traps).
Stance (the expert delta)
- Pressure is the hidden setting. Henning Sanden blocks at ClayBuildup Z 20 with "maybe 30%" of his pen pressure (0PaYUUvgwYM 00:04:58); a scripted stroke has constant pressure. Start clay at Z 6, refine at 2 to 1, calibrate once per session (
zs.run_calibration), and dial a whole pass after review: a partial Morph value softens it, a negative one exaggerates it (Drust, B_wKwXwjcZs 00:05:20); layer intensity does the same on levels. - Clay across the form, lines along it. Henning: across puts a peak in the center that fades to the edges; along is "drawing the shape" (0PaYUUvgwYM 00:02:13, 00:30:39). Pablo Munoz Gomez builds long masses along first, then smaller strokes across, never a muscle in one stroke (tbQqC6tyDBQ 00:06:32). Each form is a center line plus a width.
- Standard sets edges, clay builds, ClayBuildup erases. Standard pushes what is there, so it gives specificity (Henning 0PaYUUvgwYM 00:27:26); ClayBuildup replaces what is under it, never after detail (TpS0QdlfHWU 00:07:44). Pablo sets a hard edge with Standard at raised Z, then blends it with clay (tbQqC6tyDBQ 00:10:27).
- Refine instead of smoothing, except on low-res blockouts. Henning removes marks with passes of falling intensity and smooths once at "good enough" (TpS0QdlfHWU 00:22:26, 00:22:58); Pablo smooths freely during blockout (tbQqC6tyDBQ 00:02:29). Low-res S1: a Polish slider; skin from S2 on: the descent.
- DynaMesh while the forms move, levels once they settle. A high DynaMesh early is a "lumpy mess" (Pablo tbQqC6tyDBQ 00:04:38) and resolution is relative to object size (FrqUnna1jns 00:13:40). Never Divide a DynaMesh: its triangles and star poles become lumps no smoothing fixes (rArw79xEpvE 00:09:44). ZRemesher a copy, Divide, project.
- Level discipline. Big moves at SDiv 1 (at the top a push "looks very wonky"); secondary forms blocked at SDiv 2 or 3, then refined upward level by level; never all the work at the top (Pablo rArw79xEpvE 00:12:28, 00:14:16; tbQqC6tyDBQ 00:12:26). Details never change the silhouette (tbQqC6tyDBQ 00:13:27).
- Strokeless first. Pablo builds a whole blockout "without even actually using any of the brushes" (gitoJ7B8FmY 00:05:26). For an agent these are exact: primitives placed by number, ZSpheres by code, masks plus Deformation sliders, Mirror then Mirror And Weld.
- Mid frequency is where a sculpt is won. FlippedNormals call it the backbone of detailing; pores added early put you "two levels behind" (G2o6fdoACIQ 00:05:46, 00:08:17). Details "won't fix a weak sculpt" (Pablo tbQqC6tyDBQ 00:12:50).
Establish first
| Input | What it changes | Default when the brief is silent |
|---|---|---|
| Subject | base route and point ladder (STAGES[...]["points"]): head, creature | head bust from a sphere |
| Purpose | concept: stop at S3 or S4, even quads suffice (tbQqC6tyDBQ 00:11:43); film or game: retopology before micro detail (Zp07GW3rND0 00:08:22); print: scenario-zbrush-pose-print | concept |
| Style | realistic: scenario-zbrush-character-creature; stylized: scenario-zbrush-stylized | neutral forms |
| Forms list | zs.Form center lines plus widths, from the brief and the domain skill's proportions | none: ask the domain skill |
Head width in model units (ref_width) | every brush size | model width in the front view |
| Views | front is measured [obj]; others need the live_04 convention | front |
Workflow
Every pass: Scene.capture, plan (clay_pass, move_pass, crease_pass), preview_plan (look at it), run_plan, pass_report, zb_review.review, then name the ONE weakest item and fix it. Save a versioned ZTL at every gate.
-
Session.
zb_launch.start(), neutral state (P1), calibration (P2). Every pass turns perspective (Draw:Perspective) and LazyMouse off: its radius swallows the start of a synthesized path (Pavlovich AdkZe1yKFTU 00:03:31). GATE: document zoom 1, calibration present or the v02 prior noted. -
S0 base. One of: a sphere DynaMesh at 128 (about 43k points); a ZSphere armature (
zsphere_code) with an Adaptive Skin at Density 1 or 2 and DynaMesh Resolution 0 (Pablo), then DynaMesh 64; primitives appended and placed with Geometry Position and Size (P3). GATE: the silhouette reads front and side; points within S0. -
S1 primary blockout.
- Move then re-DynaMesh (
move_pass,remesh_due, thenremesh_code, P16: Draw mode, mask cleared, polypaint off so polygroups survive, proof that it remeshed). - Clay across the forms (
clay_pass, presetclay_block); sockets as carve forms (sign=-1); TrimDynamic planes (preset="trim"). Symmetry on: plans cover the +X half.
GATE:
stage_gate("S1")passes; the sheet shows right proportions, every element present (G2o6fdoACIQ 00:02:50), big simple masses. - Move then re-DynaMesh (
-
S2 primary refinement.
- Resolution up: head by the square law (
next_dynamesh_resolution) toward 400k to 800k points; creature: MergeDown the pieces (in place; MergeVisible makes a new Tool; its confirmation may block the bridge [verify], so ZTL first), DynaMesh 256. - Descent passes Z 6, 3, 2, 1, zooming in on each region (
descent, P7); TrimDynamic on junk bumps. - Eyes (P17): eyeball spheres placed by number, each turned 3 to 7 degrees outward (Costa j5XLtLMN0P8 00:29:10); lids cut with Dam_Standard, then moved out so they wrap the ball (Henning TpS0QdlfHWU 00:18:33). Henning shapes them with perspective on (00:17:28): strokes stay orthographic, the read is
persp_snapshot_code. - Checkpoint risky passes and dial them (P8) before any re-DynaMesh, ZRemesher or Divide: a point-count change destroys the Morph Target, and
dial_code(..., expect_points=)refuses.
GATE: clean shapes under Red Wax, no stretched faces, stroke marks falling.
- Resolution up: head by the square law (
-
Leave DynaMesh when the forms are settled and S3 needs levels, retopology is coming, or later big changes must survive detail. Henning's DynaMesh-only ladder to 648 suits a concept still: state which route and why. Levels (P11): versioned ZTL, Duplicate, ZRemesher the copy, Divide until
projection_ready, then the toolkit'szb_ops.project_all(checkpoint=...), which carries the safe order (versioned save, StoreMT and a New Layer at the top level, PA Blur lowered, a gate,morph_repair); never re-implement it.GATE: target points at least the sketch's, volume within 1 % [added], the sheet unchanged, eyes and mouth checked level by level (repair: scenario-zbrush-retopology-export).
-
S3 secondary.
- On levels (P15):
level_for("secondary")(SDiv 2 or 3), then"refine"one level up at a time; big fixes return tolevel_for("big")= SDiv 1; the top level only for tertiary and layers. - Symmetry off for the asymmetry pass;
pattern="two_direction"on long masses; presetclay_secondary.
GATE:
mirror_asymmetryabove zero, the mid band above S2, the sculpt reads at thumbnail size without detail. - On levels (P15):
-
S4 contrast. Dam_Standard along the creases (
crease_pass), deeper than feels right (0PaYUUvgwYM 00:19:49); Standard at raised Z on lids, lips and brow edges (preset="standard"), blended with clay;fill_betweentwo cuts. GATE: shape IoU against S3 of at least 0.98 [added]; crease depth varies along the line. -
Hand off S5 and S6 to the domain skill with the P14 package.
Numbers
| Value | Number | Relative to | Source |
|---|---|---|---|
| Scripted Z, clay | block 6, refine 2, finish 2; descent 6, 3, 2, 1 | expert Z times 0.3 pressure | Henning 00:04:58; digest derivation |
| Brush diameter | clay block 15 to 35 %, secondary 10 to 15 %, refine 3 to 8 %, Dam 3 to 7 %, Standard 1 to 2 %, Move design 60 to 90 %, Move local 10 to 15 % | head width in view (Draw Size is canvas pixels: zb_sculpt converts through ppu); clay kept within 0.5 to 1.0 of the form width | FlippedNormals frames; digest T1 |
| ClayBuildup | FreeHand, Focal -56, Alpha 06 or Off; Imbed 20, Roll Dist about 6 | Henning; Morten; Pablo frame 00:05:55 | |
| Dam_Standard | Dots, Focal -14, Zsub, Z 15 (33 for big cuts) | "ten below where it starts" | 0PaYUUvgwYM 00:18:42; TpS0QdlfHWU |
| Move / TrimDynamic | Focal 0, Z 51 / Focal -56, Z 43 lowered, Zsub | TpS0QdlfHWU frames | |
| Head point ladder | 43k sphere, 96k to 99k S1, 400k to 826k S2, 1.6M to 2.46M S3 and S4 | points | FlippedNormals frames |
| Creature ladder | skin 6k, pieces 28k to 43k (DynaMesh 64 to 128), merged 256 = 367k, SDiv 5 = 3.8M | points | Pablo tbQqC6tyDBQ frames |
| DynaMesh | points grow with resolution squared; limits: details safe in a 1024 cube, cap 2048 (about 24M polys) | bbox longest side; per SubTool | TpS0QdlfHWU ladder; DynaMesh doc |
| Divide, ZRemesher | x4 per level; target in thousands, 5 gave 4,963 | Pablo rArw79xEpvE 00:03:16 | |
| SDiv per operation | big moves 1; secondary 2 or 3; tertiary and layers top | levels of the stack | Pablo rArw79xEpvE 00:12:28, 00:14:16 |
| Projection | target points at or above the sketch's (745k vs 400k); FlippedNormals about 3M | VRisbJQAaZw 00:17:24; Zp07GW3rND0 00:01:02 | |
| Eye angle | 3 to 7 degrees outward each, about 5 | straight ahead | Costa j5XLtLMN0P8 00:29:10 |
| Pass gates | dead strokes up to 10 %; re-DynaMesh at 1.5 x edge cv; Polish drift 2 % | [added] |
Quality gates
- Measured:
pass_reportafter every pass (dead strokes, volume sign, view drift, pivot shift, settings not found);remesh_code(...)["ok"]; points againstSTAGESand the SDiv for the operation;stage_gate(budget, big Move above SDiv 1, shape IoU, asymmetry, bands);zb_audit.verdict(..., "sculpt");remesh_due, Polish drift,projection_ready. - Seen: the review sheet in MatCap Gray (front, right, back, three-quarter, top); Flat Color silhouettes and the sheet at thumbnail size; a grazing view, Red Wax for marks, a Standard material under a moving light (MatCaps bake their light) or BPR for form reading; the perspective look render for eyes; the stage checklist in
references/critique.md. Never call a stage done without looking at its sheet.
Common mistakes
| Mistake | What it looks like | Fix |
|---|---|---|
| Expert Z as a script Z (ClayBuildup 20) | harsh ridges, one-stroke muscles | Z 6, calibrate, dial the pass |
| Clay dragged along the form | drawn grooves, no volume | clay_pass hatches across |
| Stroke starting off the model | strokes change nothing, the view may turn | plans clip to the canvas mask; re-capture |
| LazyMouse left on | stroke starts missing, short strokes dead | pass_spec default lazymouse=False |
| Smoothing marks away on skin | "semi smooth with details", volume loss | descent passes; Polish only low-res or at a lower SDiv |
| ClayBuildup over finished detail | lines and pores erased | Standard for edges; clay before detail |
| Dividing a DynaMesh | lumps, star poles | ZRemesher, Divide, project_all |
| Big Move at the top level | wonky lumps | level_for("big"), then back up |
| Re-DynaMesh with a mask on or in Move mode | nothing remeshes (the gesture only clears the mask) | remesh_code |
| DynaMesh with polypaint on | polygroups gone after the remesh | keep="groups" (Colorize off), or "polypaint": never both |
| Morph dial after a remesh or Divide | the target is gone | dial first; expect_points |
| Symmetry assumed after a SubTool change | the stroke lands on one side | it is per SubTool (Pablo RABWfzWNw0c 00:27:02): every pass sets it |
Brush:Smooth picked as the brush | nothing smooths (it only becomes the Shift brush) | Deformation Polish, lower SDiv |
| Mirror And Weld with LSym on, or the bad side as source | mirrors locally or copies the bad side | LSym off; Deformation Mirror first (9a9S1OcYHx4 00:09:35) |
Handoffs
- Receives: from scenario-zbrush-expert a session, brief and versioned ZTL; from scenario-zbrush-retopology-export a cleaned AI or scan mesh (scenario-3d meshes arrive this way); from domain skills proportions and the forms list.
- Delivers the P14 package (versioned ZTL,
stats(), last sheet, forms as JSON, calibration, gate): realistic S3 or S4 forms on levels to scenario-zbrush-character-creature; shape-language work and hair to scenario-zbrush-stylized; organic bases to scenario-zbrush-hard-surface; a finished sculpt to scenario-zbrush-retopology-export.
ZBrush 2026 notes
- Perspective is
Draw:Perspective(installed commands.xml);Transform:Perspdoes not exist (zs.PERSP_PATHS). PolyFrame isTransform: Pf. Brush:Dam_Standarddoes not resolve [v03];zb_ops.select_brush("Dam_Standard")finds DamStandard.- Smooth brushes only bind to Shift and
press_keydoes not work: Zsub replaces Alt, Deformation Polish replaces Shift, Masking buttons and Mask Changed Points [verify] replace Ctrl gestures. - No undo control (
merge_undois a stub): Morph Target or layer per pass, versioned ZTLs per stage. - Gizmo deformers and Transpose drags are GUI-only; the Gizmo deforms softly unless Focal Shift is -100. Local Symmetry follows the Gizmo: off before Mirror And Weld.
- Sculptris Pro: no levels; Dots, FreeHand and Spray only. Chisel's default stroke changed in 2025.1: every pass sets its stroke type.
References
references/procedures.md: bridge code per step (P0 to P17) with its live test. Load before writing bridge code.references/expert-notes.md: the experts in depth and the disagreement table. Load when choosing between approaches.references/critique.md: per-stage rubric, AI-mesh judgment, stroke-plan review. Load at every gate.references/gui-paths.md: hotkeys, palette paths and brush settings (computer-use agent).references/sources.md: sources, credentials, URLs, timestamps.scripts/zb_sculpt.py: stages, presets, Scene, generators, calibration, pass execution, remesh, levels, review metrics. Tests:tests/code/zbrush-sculpting/(offline passed; live not yet run in ZBrush).
Signals
- GitHub stars
- 823
- Forks
- 95
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
scenario-zbrush-sculpting- Source
- github.com/scenario-labs/skills
github.com/scenario-labs/skills
More in AI & models
Skill · anthropics
More in AI & modelstriage
Skill · mattpocock
More in AI & modelswayfinder
Skill · mattpocock
More in AI & modelsalgorithmic-art
Skill · anthropics
More in AI & modelscode-review-and-quality
Skill · addyosmani
More in AI & modelsmarketing-psychology
Skill · coreyhaines31
More in AI & models