Gaitkit Open the lab
Steam Train, A standard-gauge steam locomotive, about 9 m long, with an optional coal tender. Drives by distance: the wheels roll, the side rods circle with the crank pins, the pistons slide in and out of the cylinders and smoke puffs rise from the chimney. Sits on rail-track tiles when lifted by their railTop height.
Vehicle · Rolls with distance

Steam Train

A standard-gauge steam locomotive, about 9 m long, with an optional coal tender. Drives by distance: the wheels roll, the side rods circle with the crank pins, the pistons slide in and out of the cylinders and smoke puffs rise from the chimney. Sits on rail-track tiles when lifted by their railTop height.

Size
2.8 × 5.1 × 10.8 m
Triangles
5,020
Open in the lab Loop clip inside. The download carries the knobs you set here.

Tune it

4 knobs: Livery, Wheels, Tender, Smoke.

Specs

Size
2.8 × 5.1 × 10.8 m
width × height × depth
Triangles
5,020
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
4.398 m
of travel per cycle
Moving parts
19
wheel_0_R · spin, wheel_0_L · spin, wheel_1_R · spin, wheel_1_L · spin, wheel_2_R · spin, wheel_2_L · spin, trailing_R · spin, trailing_L · spin, tenderwheel_R · spin, tenderwheel_L · spin, crosshead_L · slide, conrod_L · rotate, coupling_L · slide, crosshead_R · slide, conrod_R · rotate, coupling_R · slide, smoke_0 · slide, smoke_1 · slide, smoke_2 · slide
Knobs
4
3 presets
Night lights
2
headlamp, fire

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/steam-train.mjs';

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

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  steamTrain.position.z = dist;
  steamTrain.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
liverychoicegreen black red bluegreenPaint scheme: green with brass trim, black with red lining, red with gold, blue with cream.
wheelschoice0-4-0 0-6-0 2-6-00-6-0Wheel arrangement: 0-4-0 (small shunter, two driving axles), 0-6-0 (three coupled axles), 2-6-0 (a leading pony truck and three coupled axles, longer).
tendertoggleon / offtrueA coal and water tender coupled behind the cab. Off = a tank engine on its own.
smoketoggleon / offtrueSmoke puffs that rise from the chimney and drift back as it drives.

Presets: yard shunter {"wheels":"0-4-0","tender":false,"livery":"black"} · branch line {"wheels":"0-6-0","livery":"green"} · express {"wheels":"2-6-0","livery":"red"}

Files

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