Gaitkit Open the lab
City Bus, A low-floor city bus, 12 m long, or 18 m articulated with a bellows joint (trailer pivots on a rigged hinge). Wheels roll with distance driven, the double sliding doors on the curb side are rigged parts (door_0_a, door_0_b, ...), and the blank destination boards, headlights, tail lights and the cabin glow at night. No text or logos.
Vehicle · Rolls with distance

City Bus

A low-floor city bus, 12 m long, or 18 m articulated with a bellows joint (trailer pivots on a rigged hinge). Wheels roll with distance driven, the double sliding doors on the curb side are rigged parts (door_0_a, door_0_b, ...), and the blank destination boards, headlights, tail lights and the cabin glow at night. No text or logos.

Size
3.1 × 3.4 × 12.5 m
Triangles
1,520
Open in the lab Loop clip inside. The download carries the knobs you set here.

Tune it

4 knobs: Paint, Articulated, Roof AC, Door side.

Specs

Size
3.1 × 3.4 × 12.5 m
width × height × depth
Triangles
1,520
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
3.142 m
of travel per cycle
Moving parts
10
wheel_0 · spin, wheel_1 · spin, wheel_2 · spin, wheel_3 · spin, door_0_a · slide, door_0_b · slide, door_1_a · slide, door_1_b · slide, door_2_a · slide, door_2_b · slide
Knobs
4
3 presets
Night lights
4
headlight, taillight, sign, cabin

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/city-bus.mjs';

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

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  cityBus.position.z = dist;
  cityBus.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
paintchoicecity red transit blue lime sunflower teal whitecity redBody colour: city red (London or Istanbul red), transit blue, lime (green city line), sunflower (yellow), teal, white (airport shuttle). The roof is always white and the skirt dark.
articulatedtoggleon / offfalseLong 18 m bendy bus: a rear trailer joined by a black bellows, a third axle and a door in the trailer. Off is a standard 12 m bus.
roofACtoggleon / offtrueAir-conditioning pod on the roof (one per section) with fan grilles. Off leaves a flat roof with a hatch.
doorSidechoiceright leftrightCurb side of the doors: right for right-hand traffic (Europe, Americas, Turkey), left for left-hand traffic (UK, Japan, Australia). The bus faces +Z.

Presets: metrobus {"paint":"city red","articulated":true} · airport shuttle {"paint":"white","roofAC":true} · london route {"paint":"city red","doorSide":"left"}

Files

FileWhat
city-bus.glbGLB, default look · 148 KB
city-bus.mjsES module, every knob live
city-bus.objOBJ, static, no colour
city-bus-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.