3D Asset Generation
Use this skill when a production needs real meshes rather than primitive stand-ins.
It complements threejs-world-generation: that skill owns semantic world planning;
this skill owns how unique and repeated meshes enter the world with provenance.
Route by asset role
| Need |
Tool |
Model/path |
Why |
| Repeated vegetation, rocks, generic props |
threejs_asset_catalog |
CC0 Kenney catalog |
Free, coherent, instancing-friendly |
| Unique object described in words |
atlas_3d |
tripo-h3.1/text-to-3d |
Direct textured/PBR GLB with seeds and face limit |
| Object matching a concept image |
fal_3d |
Hunyuan 3D v3.1 Rapid image-to-3D |
Better silhouette/style conditioning from one image |
| Several objects extracted from one regional composition |
fal_3d |
SAM 3D Objects |
Individual and combined GLBs plus placement metadata |
| Terrain, composition, lighting, camera, final frames |
blender_world |
Blender 4.5 LTS / Eevee Next |
Scene-level control; generated-asset APIs are not world renderers |
Never ask a text-to-3D model to generate a whole cinematic world in one mesh.
Generate hero objects, use licensed catalogs for high-volume scatter, and assemble
everything in Blender from a semantic specification.
Paid-call discipline
Before every first provider call, state the exact provider, model, operation,
estimated unit cost, and number of requested outputs. Generate one sample before
a batch. As of 2026-08-13:
- Atlas Tripo H3.1: $0.22 untextured; $0.33 standard textures; $0.44 HD
textures; detailed geometry adds $0.22; quad mesh adds $0.055.
- fal Hunyuan 3D v3.1 Rapid: $0.225 per generation; PBR adds $0.15.
- fal SAM 3D Objects: $0.02 per reconstruction.
Pricing changes. Confirm the provider page before quoting or running a batch.
Asset prompt contract
Each request describes one isolated object, not a shot:
- Name the object and silhouette.
- Specify construction materials and visible wear.
- Specify the project's art style and color constraints.
- State scale and orientation.
- Exclude ground plane, backdrop, extra objects, labels, and lighting rigs.
For image-to-3D, use a simple background and make the object occupy more than
half the frame. Request PBR only for assets close enough to benefit from it.
Mandatory mesh QA
Do not approve from the provider thumbnail alone. Import the downloaded artifact
into Blender and inspect:
- front, rear, and silhouette;
- geometry holes and floating pieces;
- ground contact, scale, and orientation;
- UV seams and missing texture slots;
- base-color, roughness, metallic, and normal response;
- triangle count and whether the intended camera distance justifies it.
Record provider, model id, prompt, seeds, source page, cost, and output path in
the asset provenance manifest. Failed samples remain failed; do not silently
swap provider or spend on another model.
Assembly normalization is mandatory
Provider and catalog GLBs rarely share units, origins, or up-axis assumptions.
Never compensate with arbitrary scene-level scale guesses. The Blender assembly
spec declares target_height; the renderer measures the imported bounding box,
normalizes to that target, and offsets the bounding-box floor to the sampled
terrain height. Review the resulting real-world scale and ground contact.
Repeated scatter must declare semantic exclusion_zones around settlements,
roads, rivers, landmark apertures, and hero camera sightlines. Density that
occludes the subject is not production detail. Waterways and paths must use flat
terrain-following ribbons; beveled 3D curves read as pipes from aerial cameras.
Landmarks whose reveal timing matters declare visibility windows in the scene
spec. Camera occlusion remains preferred for natural reveals, but deterministic
visibility keys are the hard guarantee for approved timing.
World fidelity budget
A reference-grade region needs three simultaneous density layers:
- macro: authored terrain silhouettes, waterways, paths, settlements;
- meso: hero buildings, bridges, cliffs, canopy clusters, props;
- micro: ground cover, rocks, flowers, debris, material breakup.
The asset gate must show global, regional, and walk-height Blender stills. A
wide aerial alone can hide broken contacts; a walk shot alone can hide an empty
world. Primitive-only previews must be labeled blockout and cannot pass as a
production-fidelity review.
For a final animation, render a small bounded frame range first and measure the
per-frame time. Choose the full-render resolution from that measurement rather
than intuition, render a numbered PNG sequence, and call blender_world with
resume: true after interruption so it starts at the first missing frame.