Gaitkit Open the lab
Shopping Cart, A supermarket shopping cart about 1 m tall and 95 cm long: a tapered wire or plastic basket, a lower tray, a coloured push handle at the back (-Z) and four casters that roll with distance. The back gate swings in and a child seat flap folds down; optional seeded groceries in the basket. The nose faces +Z.
Vehicle · Rolls with distance

Shopping Cart

A supermarket shopping cart about 1 m tall and 95 cm long: a tapered wire or plastic basket, a lower tray, a coloured push handle at the back (-Z) and four casters that roll with distance. The back gate swings in and a child seat flap folds down; optional seeded groceries in the basket. The nose faces +Z.

Size
0.62 × 1.0 × 0.97 m
Triangles
1,736
Open in the lab Loop clip inside. The download carries the knobs you set here.

Tune it

5 knobs: Style, Colour, Size, Groceries, Seed.

Specs

Size
0.62 × 1.0 × 0.97 m
width × height × depth
Triangles
1,736
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
0.393 m
of travel per cycle
Moving parts
6
wheel_0 · spin, wheel_1 · spin, wheel_2 · spin, wheel_3 · spin, back_gate · rotate, child_seat · rotate
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.

JavaScript
import { createAsset } from 'https://gaitkit.com/cdn/shopping-cart.mjs';

const shoppingCart = createAsset();
scene.add(shoppingCart);                      // rests on y = 0, front faces +Z

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  shoppingCart.position.z = dist;
  shoppingCart.userData.tick(dist);            // wheels roll exactly with the distance
  renderer.render(scene, camera);
});

More in the docs; agents can fetch all of this through MCP.

Knobs

KnobTypeValuesDefaultWhat it does
stylechoicewire plasticwirewire (classic chrome wire basket) or plastic (moulded basket in the accent colour with slotted sides on a grey frame).
colorchoicered blue green yellow orangeredAccent colour of the handle grip, child seat, bumpers (and the whole basket on the plastic style): red, blue, green, yellow or orange.
sizechoicefull compactfullfull (big 95 cm supermarket cart) or compact (shorter city-store cart with a smaller basket).
groceriestoggleon / offtrueA seeded load of boxes, bottles, bread, fruit and a pack of water in the basket and on the lower tray.
seedrange1 to 99, step 14Shuffles which groceries are in the cart and where. Same seed, same load.

Presets: weekly shop {"style":"wire","color":"red","size":"full","groceries":true,"seed":4} · abandoned trolley {"style":"wire","color":"blue","size":"full","groceries":false} · city store cart {"style":"plastic","color":"green","size":"compact","groceries":true,"seed":12}

Files

FileWhat
shopping-cart.glbGLB, default look · 270 KB
shopping-cart.mjsES module, every knob live
shopping-cart.objOBJ, static, no colour
shopping-cart-params.jsonknob 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.