Produce Stand
A greengrocer's display stand 1.2 to 2.2 m wide (the produce is shown about 1.4 times real size so it reads): two stepped tiers of slatted crates tilted toward the shopper (+Z), each filled with a seeded heap of apples, oranges, lemons, bananas, grapes, tomatoes, cabbages, carrots, aubergines, peppers or potatoes with a blank chalk price tag, on rustic timber, painted green or modern white frames, under an optional striped awning with a scalloped valance.
- Size
- 2.1 × 2.2 × 1.5 m
- Triangles
- 1,546
Tune it
5 knobs: Finish, Width, Produce, Awning, Seed.
Specs
- Size
- 2.1 × 2.2 × 1.5 m width × height × depth
- Triangles
- 1,546 of 6,000
- Draw calls
- 1 one vertex-colour material
- Knobs
- 5 3 presets
- Night lights
- 0 none
Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic.
Use it
Code for the specimen as it is set up above; it follows your knobs.
import { createAsset } from 'https://gaitkit.com/cdn/produce-stand.mjs';
const produceStand = createAsset();
scene.add(produceStand); // rests on y = 0, front faces +Zimport { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/produce-stand.mjs';
export function ProduceStand() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import produce-stand.glb (download below). It is a static mesh, one material per colour.
add_child(preload("res://produce-stand.glb").instantiate())// Import produce-stand.glb with glTFast (com.unity.cloud.gltfast).
// Drop it in the scene: 1 unit = 1 metre, +Z is its front.Use the gaitkit MCP server: get_variant({ "id": "produce-stand", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
finish | choice | rustic painted modern | painted | rustic (weathered timber frame and pale crates), painted (green-painted greengrocer frame with natural crates) or modern (white frame with black plastic crates). |
width | range | 1.2 to 2.2, step 0.1 | 1.8 | Frontage in metres, 1.2 to 2.2; a crate per 50 cm on each of the two tiers. Depth 1.1 m. |
produce | choice | mixed fruit veg | mixed | What fills the crates: mixed, fruit (apples, oranges, lemons, bananas, grapes, peaches) or veg (tomatoes, cabbages, carrots, aubergines, peppers, potatoes, onions). |
awning | choice | red green blue saffron none | green | Striped cloth awning on two back posts with a scalloped valance: red, green, blue, saffron, or none. |
seed | range | 1 to 60, step 1 | 3 | Shuffles which produce goes in which crate and how the heaps lie. |
Presets: village greengrocer {"finish":"painted","produce":"mixed","awning":"green","width":1.8,"seed":3} · orchard stand {"finish":"rustic","produce":"fruit","awning":"red","width":1.4,"seed":7} · city market {"finish":"modern","produce":"veg","awning":"blue","width":2.2,"seed":12}
Files
| File | What |
|---|---|
| produce-stand.glb | GLB, default look · 523 KB |
| produce-stand.mjs | ES module, every knob live |
| produce-stand.obj | OBJ, static; colours in the .mtl |
| produce-stand.mtl | OBJ colours; keep it next to the .obj |
| produce-stand-params.json | knob schema, presets, night zones |
Licence
Use it in games, apps, renders and client work, commercially and without credit. Do not resell it as an asset or train a 3D generator on it. The full licence.