Gaitkit Open the lab
School Bus, A school bus, 11 m full size or 7 m short, with a long-nose hood or a flat front. The stop-sign arm swings out from the driver side (stop_arm, rotate y) and the folding entrance door slides open (door_a, door_b); wheels roll with distance. Headlights, tail lights, roof warning lights and the cabin glow at night. Blank sign boards, no text.
Vehicle · Rolls with distance

School Bus

A school bus, 11 m full size or 7 m short, with a long-nose hood or a flat front. The stop-sign arm swings out from the driver side (stop_arm, rotate y) and the folding entrance door slides open (door_a, door_b); wheels roll with distance. Headlights, tail lights, roof warning lights and the cabin glow at night. Blank sign boards, no text.

Size
3.2 × 3.1 × 11.4 m
Triangles
1,560
Open in the lab Loop clip inside. The download carries the knobs you set here.

Tune it

5 knobs: Front, Length, Paint, Stop arm, Door.

Specs

Size
3.2 × 3.1 × 11.4 m
width × height × depth
Triangles
1,560
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
3.142 m
of travel per cycle
Moving parts
7
wheel_0 · spin, wheel_1 · spin, wheel_2 · spin, wheel_3 · spin, door_a · slide, door_b · slide, stop_arm · rotate
Knobs
5
3 presets
Night lights
4
headlight, taillight, flasher, 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/school-bus.mjs';

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

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  schoolBus.position.z = dist;
  schoolBus.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
stylechoicelong nose flat frontlong noselong nose (classic conventional bus with the engine under a hood) or flat front (transit-style, engine under the floor, door ahead of the front wheels).
lengthchoicefull shortfullfull (11 m, nine window bays, 70 pupils) or short (7 m, four bays, a minibus for small routes).
paintchoiceschool yellow white activity blueschool yellowschool yellow (classic), white (church or charter), activity blue. Black rub rails and bumpers on all of them.
stopArmrange0 to 1, step 0.050The red octagonal stop-sign arm on the driver side: 0 folded flat along the body, 1 swung out 90 degrees to stop traffic.
doorrange0 to 1, step 0.050Entrance door on the curb side: 0 closed, 1 both glass leaves slid open.

Presets: morning pickup {"stopArm":1,"door":1} · short bus {"length":"short","style":"flat front"} · activity bus {"paint":"activity blue","style":"flat front"}

Files

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