three.js-ready GLB from a text description
C3D-GUIDE-02 · REV ATo get a three.js-ready GLB from a text description, describe the object with its real size in Creations3D and download the GLB: it comes in metres, sized so the largest side matches what you asked for, so it drops into a three.js scene at the right scale with GLTFLoader and no rescaling. You can make it on the website, from a coding agent such as Claude Code, Codex or Cursor, or with one REST call.
Why does the size matter in three.js?
three.js has no fixed unit, but glTF does: the glTF 2.0 specification says all linear distances are in metres, and most three.js scenes, physics engines and WebXR treat one unit as one metre. A model exported at an arbitrary scale has to be measured and scaled by hand before it fits next to other assets. Creations3D writes the GLB in metres at your target size, so a crate you asked for at 60 cm is 0.6 units on its longest side.
What is the fastest way to get the GLB into my project?
From a coding agent. Connect Creations3D once (Claude Code, Codex or Cursor, about a minute each), then ask:
Make a low-poly sci-fi crate, about 60 cm, and put the GLB in public/modelsThe agent calls create_model with use_for: "game" and target_size: 0.6, waits about 1.5 minutes, then saves the file where you said. You can ask for up to 20 assets in one batch, set a triangle budget (max_triangles, 1,000 to 500,000) and a texture size (512, 1024 or 2048). The MCP address is https://creations3d.com/mcp.
How do I load it in three.js?
Use the standard glTF loader. Because the file is already in metres, you add it to the scene as it is:
import * as THREE from "three";
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
const loader = new GLTFLoader();
loader.load("/models/crate.glb", (gltf) => {
scene.add(gltf.scene);
// Check the size: the largest side matches the size you asked for, in metres.
const size = new THREE.Box3().setFromObject(gltf.scene).getSize(new THREE.Vector3());
console.log(size); // e.g. { x: 0.6, y: 0.48, z: 0.42 } for "about 60 cm"
});The loader is documented in the three.js GLTFLoader docs. If you use React Three Fiber, useGLTF from drei loads the same file.
Which settings should I pick for the web?
| Setting | Credits | Use it for |
|---|---|---|
| use_for: game | 4 | Light GLBs for games, many objects on screen, mobile browsers |
| use_for: web | 8 | A single hero object, product viewers, model-viewer embeds |
| use_for: render | 8 | The most detail, for stills and close-ups |
| GLB export with max_triangles | 0 | A lighter copy of a model you already made, for example under 20,000 triangles |
Building from a photo instead of words costs 6 credits. Failed builds refund their credits automatically. Plans and the trial are on pricing.
Can I do it from a script or a build step?
Yes. Create an API key in your account (Account, API keys) and call the REST API. The same key works for the MCP server in tools without browser sign-in.
curl -X POST https://creations3d.com/api/generations \
-H "Authorization: Bearer $CREATIONS3D_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"low-poly sci-fi crate","use_for":"game","target_size":0.6,"units":"m"}'Then poll GET https://creations3d.com/api/generations/{id} until it is ready and download the GLB. Download links are signed and expire after 15 minutes; asking again gives a fresh one. Every endpoint is listed in the REST API reference.
What should I check before shipping the model?
- Measure it once with
Box3as above; the largest side should match your target size. - Check the triangle count for your target devices and export a lighter GLB with
max_trianglesif needed. - Commercial use is allowed on every plan, the trial included, so the asset can ship in a paid game or product.
- Need it printed as well? The same model exports to STL or 3MF in millimetres; see making a model in Claude for the print options.