MethodologyAnnotator qualityUpdatesHugging Face370.8k downloadsSuggest a model or benchmarkRequest a private benchmark
Benchmarks
Dimensions
License
Models
Categories
category
type
difficulty
LLM-to-3D updated 2026-10-21

The Human-Preference Leaderboard for LLM-to-3D Generation

Rapidatabenchmark@rapidata.ai

This benchmark evaluates the 3D understanding of language models: each model writes three.js code that builds an object from a short text prompt, and the object it builds is what gets judged. The rankings come from 135,152 pairwise matches, decided by 780,424 votes. Quality is evaluated in four dimensions: Alignment, Coherence, Creativity and Preference. All rankings are fitted with a Bradley–Terry model and reported on the Elo scale; see the notes for details.

1  Methodology

We evaluate language models writing 3D code purely on human feedback. Humans perform inconsistently on absolute judgements, but much better in a comparative setting. Our rating is therefore based on pair-wise matches, the results of which are jointly fit using the Bradley–Terry model where the probability of model m beating model m′ is given by:

P(m ≻ m′) =eβmeβm + eβm′=11 + e−(βm − βm′)(1)

A match pairs the 3D objects two models built in code from the same text prompt. As evaluating all permutations is infeasible, matches are sampled, ensuring broad coverage per model. The resulting scores are scaled to the familiar Elo range via Rm = 400 βm + 1000 (2), which stretches standard Elo by ln 10 ≈ 2.3 to better highlight differences in model capability.

We wrote 500 text prompts in five categories of 100: vehicles, animals and creatures, buildings and architecture, furniture and household objects, and instruments and tools. All models share a ceiling of 64,000 output tokens per call, thinking included, and almost no call reaches it: every model's median call stays below 14,000 tokens (see the output and cost table).

To ensure trustworthy ratings we employ several measures, notably annotator pre-filtering via gold-standard questions, and redundancy, collecting a minimum of m responses per match (m = 5) and deciding the winner by majority. Read more

LeaderboardCompare OutputsMatchupsAnalysisPromptsNotes
1. Evaluation dimensions
Each prompt in the fixed set is evaluated separately across four dimensions. Each vote addresses only one dimension, using the dedicated question shown below.
Dimension
Question asked to annotators
Ranking
Creativity
Which object is more creative and interesting?
—
Coherence
Which 3D model has more errors, like floating, misplaced or broken parts?
InvertedAnnotators are asked to pick the sample that has the most issues.
Alignment
Which 3D model matches the description better?
—
Preference
Which 3D model looks better?
—
2. Prompt set version
Each category spans three difficulty tiers, from a single common object to scenes and objects with many interlocking parts. Every prompt carries a category, a type within the category and a difficulty tag, and standings can be filtered by each.
3. Model generation protocol
Every model receives the same system prompt (shown below) and, as the user message, the text prompt alone. It must answer with one JavaScript function that builds the object with three.js r186, using its core geometries, standard or physical materials and canvas textures. Models are called through OpenRouter with their vendor default sampling, at medium reasoning effort under a shared ceiling of 64,000 output tokens, thinking included. Grok 4.7 is the one exception and runs at low: at medium it spent about 80,000 tokens and 18 minutes per object and ran past the ceiling, while at low its median of 12,791 tokens sits within the other models' range. The code runs in a sandboxed headless browser with no network access and is exported to glTF; code that throws, builds no meshes, produces invalid vertices or exceeds one million triangles counts as a failed attempt, and so does an answer that is cut off at the token ceiling or contains no code block. A failed attempt is discarded and the model starts again from scratch, up to three attempts per prompt; the first object that builds is the one judged. If all three attempts fail, the model has no object for that prompt, and the prompt is left out of that model's matches.Every object goes through one rendering pipeline, so differences between turntables come from the models. Each object is centred and framed automatically, then rendered as a ten-second turntable (240 frames at 24 fps, 720x720) with the same camera path, field of view, neutral lighting and background for every model. Every frame of every clip was checked for blank renders, and flagged clips were rendered again.
4. Output length, cost and time
Per API call across the 400 animal, building, furniture and instrument prompts. Retries count as separate calls, output tokens include thinking, and cost is the price billed through OpenRouter. Three of the 5,854 calls reached the 64,000-token ceiling: one from Kimi K3 and two from Mistral Large 4.
Model
Mean output tokens
Median output tokens
Max output tokens
Mean $ per call
Median time
gpt-6-astra
5,349
5,163
10,810
$0.272
109 s
gemini-4-argon
11,320
11,206
39,860
$0.114
133 s
gpt-6.1-sol
4,623
4,581
9,948
$0.047
83 s
claude-opus-5.5
4,849
4,488
18,815
$0.100
42 s
muse-wonder
7,359
7,110
17,466
$0.148
67 s
claude-fable-5.1
4,974
4,359
58,197
$0.255
51 s
gemini-3.8-flash
9,195
8,593
32,182
$0.035
54 s
grok-4.7
12,665
11,718
35,961
$0.077
178 s
kimi-k3
2,117
1,853
64,000
$0.033
48 s
qwen3.8-max-prime
6,766
5,441
34,800
$0.083
56 s
glm-5.3-prime
3,425
2,700
32,878
$0.031
29 s
glm-5.3-flash
2,505
2,116
21,997
$0.0012
11 s
mistral-large-4
13,773
12,564
64,000
$0.029
166 s
deepseek-v4-pro
9,920
8,656
30,319
$0.030
103 s
5. System prompt
Every model received this system prompt verbatim; the user message was the text prompt alone.
You are an expert 3D modeler who builds models in code with three.js (r186).

Write a JavaScript function that builds the 3D model the user describes:

function build(THREE, addons) {
  const model = new THREE.Group();
  // create meshes and add them to model
  return model;
}

How it will be judged: your model is exported to glTF and filmed on a turntable in a neutral studio with fixed lighting, a soft floor shadow and a camera that circles it once, slightly from above, framing the whole model automatically. Viewers compare it with other models of the same description: does it match the description, is it well built (no floating, misplaced or intersecting parts), and does it look good. Only your geometry and materials are seen.

Requirements:
- Build only what the description asks for. No ground plane, base, backdrop, scenery, lights, cameras, environment map, fog or animation.
- +Y is up, the model stands on y = 0, centered on the origin, and its front faces +Z. Units are meters, with realistic proportions.
- Use three.js core geometries (Box, Cylinder, Sphere, Cone, Torus, Capsule, Lathe, Extrude with Shape and bevels, Tube with curves, BufferGeometry with your own vertices) and MeshStandardMaterial or MeshPhysicalMaterial (color, metalness, roughness, transparency, emissive). For painted details you may draw on a canvas and use THREE.CanvasTexture.
- `addons` provides RoundedBoxGeometry, ConvexGeometry, ParametricGeometry, LoftGeometry, mergeGeometries, mergeVertices and toCreasedNormals.
- No imports, external files, images, fonts or network access. It must run in a browser in a few seconds and stay under 1,000,000 triangles.
- Reply with the complete code in a single ```javascript block.
6. Matchmaking
Matchups are sampled from the full pool, and each ranked model is included in at least 15,659 matches.
7. Judgements
This round aggregates 135,152 matches, each decided by the majority of at least 5 judgements from distinct annotators.
8. Annotator audience
The global audience: annotators qualify on validation tasks and are measured continuously by user score.
9. Public artifacts and limitations
The round is published as a Parquet dataset on Hugging Face: one row per matchup, carrying the prompt, both outputs, the weighted score of every dimension and each individual judgement with the annotator’s user score, country, language, gender and age. Each model contributes one object per prompt, so a single unlucky generation counts fully. Grok 4.7 ran at low reasoning effort rather than medium (see the generation protocol), so its standing reflects a lighter setting than the other models'; every other model ran at one effort level under one 64,000-token ceiling, and other settings or larger budgets may rank them differently. The system prompt limits models to three.js core geometries, standard materials and canvas textures with no imported assets, so the benchmark measures modelling in code under those constraints, not 3D generation in general. Annotators judge the rendered turntables, never the code, so its length, speed and cost play no part in the rankings. Models were added in three batches, so later entrants have fewer matches and wider intervals. Creativity ran later, on all models at once and with a quarter of the other dimensions' vote budget, so its intervals are wider. The prompts were drafted with Claude, and Claude models are also ranked here. Ten prompt–model pairs have no object because all three attempts failed, so those prompts are missing from that model's matches. Rankings are human preference judgements from the global audience, with no automated metrics.

Full protocol in the global methodology.

We use crowd intelligence to deliver real, diverse human feedback at scale for model evaluation and post-training.

Benchmarks
Text-to-ImageCamera MovementRelative Camera MovementPhysicsRealismImage-to-3DSVGLLM-to-3DSuggest a model or benchmark
Method
MethodologyData on Hugging Face
Rapidata
rapidata.ai Private benchmarksContactX LinkedIn
Rapidata, benchmark.ai © 2026