Test plan · Generators
The Standard Prompt Set and Scoring Rubric
A complete, versioned prompt set for comparing AI 3D generators: 29 text prompts, 12 image-input cases, plus the scoring rubric and logged fields to use.
This is the prompt set and scoring rubric PromptToProp will use for every same-prompt comparison, published before any results exist so nobody can say the prompts were chosen after the fact. It is version 1.0: 29 text prompts, 12 image-input cases, and a fixed list of fields to record. You can run all of it on your own subscription today.
Why a published set matters
A comparison is only as honest as its inputs. The one public peer comparison we read in full, StraySpark’s April 2026 write-up (updated September 2026), uses eight prompts, scored qualitatively on silhouette, geometry, topology, texture and retopology viability, with an Unreal 5.7 usability check. The page does not state how many generations were made per prompt and gives no triangle counts or screenshots. StraySpark also sells paid Unreal, Unity, Blender and Godot tools, which is worth knowing when reading its verdicts. Eight prompts is a reasonable start; it cannot tell you much about characters, modular pieces or creatures, which is why this set is wider and why every field below is defined.
How to run the set
- Pick the tools and plans you are comparing. Record the plan name and the model version shown in the UI or API. Free tiers can restrict downloads: Meshy’s help center says Free allows only untextured Meshy 6 Lite downloads, so a textured comparison needs a paid plan there (as of November 2026).
- Run every prompt once per tool inside a short date window, with default settings first. If you change a setting (topology, PBR, resolution), log it.
- Do not cherry-pick. If a run fails or is rejected, log it as a failed run and decide in advance whether you retry. For variance questions use the repeatability protocol.
- Export the format you would use in production (GLB where available) and keep the raw file untouched. Work only on copies.
- Score blind where you can: rename outputs to run IDs so the scorer cannot see the tool.
The text prompts (29)
Prompts are written to be tool-neutral: one subject, stated material, stated pose where it matters, neutral background. Do not add tool-specific tags. For writing your own variants, see Writing Prompts for AI 3D Generators and the 3D prompt builder.
Props (P01 to P08) — destination: a static prop in an engine scene.
| ID | Prompt |
|---|---|
| P01 | A weathered wooden barrel with three iron hoops, single object, game prop |
| P02 | A flintlock pistol with a walnut grip and brass fittings, single object |
| P03 | A ceramic potion bottle with a cork stopper and a wax seal |
| P04 | A sci-fi ammunition crate with a hinged lid and stenciled markings |
| P05 | A round stone well with a wooden crank and a hanging bucket |
| P06 | A hanging iron lantern with a glass panel and a small candle inside |
| P07 | A thick hardcover spellbook with a brass clasp and a leather spine |
| P08 | A modern office chair with armrests and a mesh back |
Characters (C01 to C06) — destination: auto-rig and retarget. Every prompt requests an A-pose with arms clear of the torso so that limbs are separated before rigging; one published rig comparison (StraySpark, vendor of paid engine tools) says AccuRig “expects A-pose meshes facing a specific direction”.
| ID | Prompt |
|---|---|
| C01 | An adult human knight in full plate armor, A-pose, arms away from the body |
| C02 | A young adventurer with a cloak and a small backpack, A-pose, hands visible |
| C03 | A broad blacksmith in a leather apron with rolled sleeves, A-pose |
| C04 | A humanoid maintenance robot with visible joints, A-pose |
| C05 | An elderly wizard in a long robe, A-pose, staff held separately at his side |
| C06 | A villager child in simple clothes, A-pose, bare hands and boots |
Environment pieces (E01 to E05) — destination: a modular kit on a grid. These test whether pieces can join.
| ID | Prompt |
|---|---|
| E01 | A straight stone dungeon wall segment, 4 meters wide, flat back, tileable edges |
| E02 | A matching 90-degree stone dungeon corner piece, same stone and height as E01 |
| E03 | A wooden floor section made of planks, 2 by 2 meters, flat, tileable edges |
| E04 | A stone archway doorway set into a wall segment, 4 meters wide |
| E05 | A wooden fence section with two posts and two rails, 3 meters long |
Stylized and low-poly (S01 to S05) — destination: a low triangle budget with a readable silhouette.
| ID | Prompt |
|---|---|
| S01 | A low-poly pine tree, flat-shaded, mobile game style |
| S02 | A hand-painted cartoon mushroom house with a round door |
| S03 | A low-poly broadsword with a simple hilt, flat colors |
| S04 | A chibi-proportion fox character, big head, simple shapes, A-pose |
| S05 | An isometric low-poly cottage with a chimney, flat colors |
Creatures (K01 to K05) — destination: both a game model and a resin or FDM print.
| ID | Prompt |
|---|---|
| K01 | A standing wolf, four legs on the ground, mouth closed, on a small round base |
| K02 | A giant spider with eight separated legs, on a small round base |
| K03 | A winged stone gargoyle perched on a block, wings folded |
| K04 | An armored lizardfolk warrior holding a spear upright, on a small round base |
| K05 | A tentacled swamp horror rising from a base, thick tentacles only |
K03 and K05 are deliberately hard for printing (thin wings, long tentacles). They are there to separate tools that handle thin features from tools that do not.
The image-input cases (12)
Reference images cannot be shipped with a text-only protocol, so each case is specified and you supply the image. Use the same subject across input types within a set where possible, so the input type is the only variable.
| ID | Input type | Specification |
|---|---|---|
| I01 to I03 | Real photo | Three real objects (one hard-surface, one organic, one with text or a logo), photographed on a plain background in even light, at least 1040 x 1040 px |
| I04 to I06 | Clean render | The same three objects rendered or modeled by you from one camera angle, white background |
| I07 to I09 | Painted concept art | Three painted concepts of characters or props, front three-quarter view, with some background clutter removed |
| I10 to I12 | Rough sketch | Three line sketches of the same subjects, no shading |
The 1040 px figure comes from Meshy’s multi-view tutorial; treat it as a vendor recommendation, not a universal rule. Details on how input type and view count are meant to be compared are on photo vs concept art input and multi-view vs single image.
Fields to record for every run
| Field | Definition |
|---|---|
| run_id | Unique ID, tool name hidden from scorer |
| prompt_id | P01 to K05, or I01 to I12 |
| tool, plan, model_version | As shown in the UI or API at run time |
| settings | Topology, polygon target, PBR on or off, texture resolution, any non-default |
| date | UTC date of the run |
| credits_before, credits_after | Read from the account, not from a pricing page |
| submit_time, ready_time | Timestamps; see failed runs and queue logging |
| status | success, failed, canceled, or rejected by moderation |
| triangles | Triangle count of the raw file |
| loose_pieces | Number of disconnected mesh islands |
| open_edges | Edges with exactly one adjacent face |
| nonmanifold_edges | Edges with more than two adjacent faces, or other non-manifold topology |
| uv_islands | UV islands counted with one consistent method for all tools |
| maps_present | Which of albedo, roughness, metallic, normal, emission are in the file |
| texture_size | Largest map in pixels |
| cleanup_minutes | Time to reach the usable state for that prompt class, using a timer |
| score_* | The 0 to 2 scores below |
Triangles, pieces, open edges and non-manifold edges should come from a script, not by eye. The script below is a starting point for that. It is untested: we have not run it in Blender at all. Before trusting its numbers, run it on a simple mesh whose counts you already know, such as a default cube.
import bpy, bmesh
obj = bpy.context.active_object
bm = bmesh.new(); bm.from_mesh(obj.data)
tris = sum(len(f.verts) - 2 for f in bm.faces)
open_edges = sum(1 for e in bm.edges if e.is_boundary)
nonmanifold = sum(1 for e in bm.edges if not e.is_manifold)
seen, pieces = set(), 0
for v in bm.verts:
if v.index in seen: continue
pieces += 1; stack = [v]
while stack:
a = stack.pop()
if a.index in seen: continue
seen.add(a.index)
stack += [e.other_vert(a) for e in a.link_edges]
print(tris, open_edges, nonmanifold, pieces)
Run it in Object Mode, and join multi-object imports into one mesh first. Note that is_manifold is also false on boundary edges, so nonmanifold includes open_edges; record both and subtract if you want the strictly non-manifold count.
Scoring: 0, 1 or 2
Score each criterion that applies to the prompt class. Write the anchor you used.
| Criterion | 0 | 1 | 2 |
|---|---|---|---|
| Prompt adherence | Wrong subject or missing a stated feature | Subject right, one stated feature wrong or missing | Subject and all stated features present |
| Silhouette | Unreadable or wrong shape from the front | Readable but with fused or missing parts | Clean and correct from front and side |
| Geometry integrity | Fails the class gate below by a wide margin | Passes after a short fix | Passes as exported |
| Texture | Missing, smeared, or lit-in shadows that cannot be removed | Usable with edits | Usable as exported |
| Pose or layout (characters, modular, creatures) | Pose unusable for the destination | Pose usable after minor edits | Pose correct as exported |
Class gates (“usable state”)
These are our proposed gates and can be changed before the first run; a change bumps the version number and is logged on the corrections page. None of the engine documentation we read defines a usable AI prop, so these are our own.
- Prop: one connected piece or intentional parts only, no open edges on a solid object, correct up-axis and real-world scale after one adjustment, one or two materials.
- Character: A-pose preserved, hands and feet separated, no merged limbs, a skeleton binds and a standard walk cycle plays without visible tearing.
- Modular piece: stated dimensions within a recorded tolerance, flat connecting faces, pivot at a corner or edge midpoint, pieces join without a visible gap.
- Stylized: triangle count under a budget you declare before running, silhouette readable at thumbnail size.
- Creature or print: passes your slicer’s checks for the target printer with no manual hole filling; for game use, the same as the prop gate.
Cleanup minutes are counted only until the gate is met, with the same person and the same tools for every output. Slicer checks follow the print-readiness checks.
What this set cannot tell you
It cannot tell you about prompts you did not write, long-term consistency, or quality at the volume you will actually use. One run per cell also hides variance, so a single bad or lucky output proves little; that is why repeats have their own protocol. The set covers general props, humanoids, kits, stylized assets and creatures; it does not cover vehicles, architecture interiors or animals with fur. Where a result matters to a purchase, run your own subject through it.
When PromptToProp publishes data from this set, each result will carry the plan, model version and run date, and results will appear in the results browser. The overall plan is in the methodology, and the other protocol pages sit under the tests hub.