Building what you cannot download — sculpt from a reference
Companion to the short Building what you cannot download section in this project's AGENTS.md.
On this page
Choose one branch before writing code
- Conventional and downloadable — a crate, an oak plank texture, a click. Use the asset tools. Sculpting one of these is slower and worse.
- Trivial — a platform, a wall, a pickup ring. Write it. If
BoxGeometryfinishes the job in under 20 lines, that is the answer. - Bespoke, with a reference image — an identity-bearing creature, vehicle, hero prop,
landmark, scenery composition, or environment set piece whose silhouette must match. Use
the sculpt tools to turn that reference into editable
src/render/source. - Bespoke, without a reference image — read
node_modules/create-threenative/agent-docs/references/dream-loop.mdand acquire one from the user or an explicitly selected host/provider tool. Do not invent a reference: comparison without evidence is unguided iteration.
For a full environment, split the decision: sculpt the signature landmark or bounded scene kit that makes the reference recognisable; use the asset tools for interchangeable trees, rocks, textures, HDRIs, and sounds around it. Do not sculpt an entire world as one object.
The gate loop
.mcp.json launches threenative-sculpt-mcp beside the asset server. It does not generate
or ship runtime code; it guides the source you write:
- Call
sculpt_planwith the image path and a one-line intent, then read the returned grimoire resources. - Write the returned object contract and loop on
sculpt_spec_gateuntil every named region and depth requirement passes. Do not write geometry before this gate is green. - For each ordered pass, write or extend one factory in
src/render/. Capture the real frame withnpx @threenative/playtest; the sculpt server never launches a browser. - Call
sculpt_comparewith the reference and captured frame, then give that evidence tosculpt_pass_gate. Advance only when it says advance; ambiguity means retry. - Use
sculpt_grimoirefor a named technique topic. It rejects pages containing concrete paste-ready material or shader recipes so the tool never owns this game's look.
A missing or blank capture is a failed run, never a finished model. Add the reference image,
its creator, license, and source URL to CREDITS.md before the turn ends.