ceos-3d-asset-pipeline
Skill0 starsChanged 12 days agoMITView on GitHub
Produces web-ready 3D assets — Blender modelling/lookdev hand-off, baking lighting/AO, glTF/GLB export, optimisation with glTF-Transform and meshoptimizer (gltfpack), Draco/meshopt geometry compression, KTX2/Basis texture compression, animation export, and per-asset size/performance budgets. Use when bringing models or textures into a website, when a GLB is too large or slow to load, when exporting from Blender, or when setting asset budgets for a 3D site.
Files
3D asset production pipeline
Tools on this machine
- Blender 5.2 LTS (
/opt/homebrew/bin/blender, Homebrew cask) — headless scripting:blender -b file.blend --python script.py. @gltf-transform/cliandgltfpack— project dev dependencies in the immersive-3d and experimental templates (npm run assets:optimize). Not installed globally on purpose.- KTX-Software (
ktx/toktx) — not installed (no Homebrew formula; official macOS installer is an admin .pkg). Install manually from github.com/KhronosGroup/KTX-Software/releases if KTX2 is needed; gltf-transform'suastc/etc1scommands require it. Meanwhile use WebP textures (gltf-transform webp) which need no extra binary.
Pipeline
- Model for the camera: polycount where silhouettes need it, flat where they don't; real-world scale (1 unit = 1 m), +Y up, applied transforms, clean normals, UVs without overlap where baking.
- Lookdev in Blender with the same environment intent as the web scene; keep materials glTF-compatible (Principled BSDF → glTF PBR: base colour, metallic/roughness, normal, emission, transmission, clearcoat, sheen, iridescence extensions).
- Bake what is static (AO, lightmaps, complex shading) into textures; pack ORM (occlusion/roughness/metallic) in one texture.
- Export glTF 2.0 (.glb): +Y up, selected objects, apply modifiers, include only needed attributes.
- Optimise:
npx gltf-transform inspect in.glb # report sizes, draw calls npx gltf-transform optimize in.glb out.glb \ --compress meshopt --texture-compress webp --texture-size 2048 # dedup, prune, weld, simplify, instance, compress npx gltfpack -i in.glb -o out.glb -cc -tc # alternative: meshopt + (KTX2 if toktx present) - Load with
GLTFLoader+MeshoptDecoder(orDRACOLoader) +KTX2Loader(if KTX2). Lazy-load per section.
Budgets (starting point; agree per project)
| Asset | Desktop | Mobile |
| Hero model (compressed) | ≤ 1.5 MB | ≤ 0.8 MB |
| All 3D on first view | ≤ 3 MB | ≤ 1.5 MB |
| Texture max size | 2048² | 1024² |
| Triangles in view | ≤ 500k | ≤ 150k |
| Draw calls | ≤ 100 | ≤ 50 |
Verification
gltf-transform inspect before/after table in the PR; the model renders identically (screenshot diff at fixed
camera) after optimisation; network panel shows sizes; load time measured from archive/throttled profile.
Failure criteria
Shipping the raw Blender export; 4K textures on phones; unapplied scale (objects 100× size); duplicated materials per mesh; uncompressed geometry > 1 MB; assets loaded before first paint that aren't needed for it.
In this repository16 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- ceos-art-directionSkill
- ceos-creative-codingSkill
- ceos-creative-directionSkill
- ceos-frontend-architectureSkill
- ceos-interaction-architectureSkill
- ceos-motion-directionSkill
- ceos-performance-engineeringSkill
- ceos-production-qualitySkill
- ceos-realtime-3dSkill
- ceos-shader-engineeringSkill
- ceos-start-hereSkill
- ceos-studio-workflowSkill
- ceos-visual-auditSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

