3DAssets.dev

Prompting

Prompts that work for building 3D scenes with AI

Most bad AI 3D scenes come from prompts that describe a mood instead of a scene. Here is the phrasing that reliably produces something you can load, with the constraints worth stating every time.

3DAssets.dev3 min read

There is a specific failure mode when you ask an AI assistant for a 3D scene. The code is fine. The scene graph is sensible, the lighting is reasonable, the camera is in a defensible place. And the content is eight grey boxes at wildly different scales, one of which is a house and one of which is a mug, and they are the same size.

The fix is rarely a better model. It is usually four sentences you did not say.

Say where the models come from

An assistant with no asset source will either use primitives or invent a URL. Both are guesses. Naming a source turns the guessing into lookups:

1Use models from 3dassets.dev. Search the catalogue for what you need
2rather than using primitives, and do not use a URL you have not looked up.

If you have connected the catalogue over MCP, this is all it takes: the assistant has a search tool and will use it. If you have not, add the instruction sheet to the prompt and it will use plain HTTP instead:

1Read https://3dassets.dev/skill.md first and follow it to find models.

Ask for the list before the code

This is the highest-value sentence in any 3D prompt, and it costs one extra turn:

1Show me the models you have chosen, with slugs and triangle counts,
2before you write any code.

You get a chance to say "that's a modern streetlight in a medieval scene" while it is still one line in a list, rather than after it is baked into a scene file. It also surfaces the assistant's misreadings early: if it has picked a ship's wheel for a steering wheel, you will see it immediately.

Give it a budget

Every asset in the catalogue reports its file size and triangle count, so a numeric budget is a constraint the assistant can actually check rather than a vibe it has to interpret:

1Keep the whole scene under 3 MB of geometry and 150,000 triangles.
2Prefer low-poly models. Tell me the running total as you go.

Without a number, an assistant optimises for looking impressive, which means picking the most detailed thing that matches the search term. With a number, it picks the young oak instead of the fifteen-metre mature one, which is usually what you wanted for background planting anyway. Filtering the catalogue by low-poly style does the same job by hand.

Budgets matter more than they look. A browser scene that loads in under two seconds on a phone is a different product from one that takes twelve, and the difference is almost always a handful of over-detailed background props nobody looks at.

State the conventions once

Scale and orientation mismatches are the most common source of a scene that is technically correct and visually broken. State them:

1All models are in metres with +Y up and sit on the ground plane at y=0.
2Do not rescale anything unless I ask. If two models look wrong together,
3tell me rather than fudging a scale factor.

That last sentence matters. An assistant told to make a scene look right will silently multiply something by 0.01 to hide a problem, and you will find it three days later when you swap the model out.

Ask for a place, not a lineup

The default arrangement an assistant reaches for is a row, or a grid, because that is what "place eight models" means with no further instruction. Scenes read as real when they have structure:

1Arrange this as a place someone could walk through, not a product lineup.
2Give it a focal point, put something in the middle distance and something
3at the edges, and leave the camera path clear.

For a whole environment rather than a few props, skip the assembly problem entirely and ask for a pack:

1Find a single pack that covers this scene and use its starter scene as the
2base, then add individual models only for what the pack is missing.

Packs are built as a group at one scale with a shared palette, and each one ships with a composed starter scene. Starting from that and editing is consistently better than assembling a dozen unrelated search results. Browse the packs to see the range, or the demos for packs already laid out as walkable scenes.

A prompt that has all of it

Put together, for a browser scene:

1Build a three.js scene of a small woodland clearing with a campfire and a
2supply crate, as a single HTML file I can open.
3
4Models: use 3dassets.dev, search for what you need, no primitives, no URLs
5you have not looked up. Show me the model list with slugs and triangle
6counts before writing code.
7
8Budget: under 3 MB of geometry total. Prefer low-poly.
9
10Conventions: metres, +Y up, models sit at y=0, do not rescale anything.
11
12Layout: a place I could walk through, with the fire as the focal point and
13trees breaking up the horizon. Not a lineup.

It is longer than most people's first attempt and shorter than the conversation that first attempt turns into.

Iterating without losing the scene

Two habits save most of the back and forth:

  • Change one axis at a time. "Swap the crate for a barrel" is a clean instruction; "make it feel more abandoned" produces a rewrite of the lighting, the layout and the model list at once, and you cannot tell which change helped.
  • Ask it to keep the model list stable unless you say otherwise. Assistants tend to re-search on every revision, so a scene you liked can quietly become a different set of assets while you are discussing the fog.

When something animates, ask for the clip by name. Models with moving parts report their clip names, so open and close on a crate are things the assistant can read off the asset rather than infer, and the three.js guide covers how those get driven in the render loop.

Common questions

Why does my AI assistant put grey cubes in every 3D scene?
Because it has no models to reach for. A language model can write a correct three.js scene graph without having a single asset available to it, so it falls back to primitive geometry. Connect it to a model catalogue over MCP or point it at a JSON API and the cubes are replaced by real models it can look up.
How do I stop an AI from inventing 3D model URLs?
Give it a real source and make it show its work. Tell it which catalogue to use, ask it to list the models it selected with their slugs before it writes any code, and ask it to fetch each URL once to confirm it resolves. An assistant with a search tool attached rarely invents URLs; one without a search tool almost always does.
What should I put in a 3D scene prompt?
Four things: the source of the models, a size or triangle budget, the scale and up-axis convention you expect, and the layout rule that makes it a place rather than a lineup. Everything else is detail the assistant can reasonably choose for you.
Should I ask for individual models or a whole pack?
Ask for a pack when you want an environment and individual models when you want props. A pack is authored as a group at one scale with a shared palette, so the pieces sit together correctly; assembling one scene from a dozen unrelated search results usually produces a mismatch in style and size that costs more time than it saves.

Keep reading

AI setup

Give your AI assistant a 3D model library

An AI coding assistant can write a three.js scene in seconds and then fill it with grey cubes, because it has no models and no way to find any. Connecting it to a catalogue fixes that in one line.

three.js guide

How to load a free GLB model in three.js

A working GLTFLoader setup, straight from a CDN URL with no build step, plus animation, sensible scaling and the four mistakes that account for most blank screens.