Gaitkit Open the lab
Siege Tower, A wheeled wooden siege tower, 4.4 m square at the base and 3 to 5 storeys (about 10 to 16 m) tall, clad in wet hides, planks or iron plates on the front and sides with an open back full of ladders. Six solid wheels roll with distance (spin rigs, tick + loop); the assault ramp at the top is hinged at its foot (rotate rig on x: 0 drawn up, 90 lowered toward +Z onto a wall).
Vehicle · Rolls with distance

Siege Tower

A wheeled wooden siege tower, 4.4 m square at the base and 3 to 5 storeys (about 10 to 16 m) tall, clad in wet hides, planks or iron plates on the front and sides with an open back full of ladders. Six solid wheels roll with distance (spin rigs, tick + loop); the assault ramp at the top is hinged at its foot (rotate rig on x: 0 drawn up, 90 lowered toward +Z onto a wall).

Size
5.6 × 15.4 × 5.0 m
Triangles
2,324
Open in the lab Loop clip inside. The download carries the knobs you set here.

Tune it

4 knobs: Storeys, Cladding, Wood, Banner.

Specs

Size
5.6 × 15.4 × 5.0 m
width × height × depth
Triangles
2,324
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
4.084 m
of travel per cycle
Moving parts
7
wheel_0 · spin, wheel_1 · spin, wheel_2 · spin, wheel_3 · spin, wheel_4 · spin, wheel_5 · spin, ramp · rotate
Knobs
4
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/siege-tower.mjs';

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

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  siegeTower.position.z = dist;
  siegeTower.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
storeysrange3 to 5, step 14Floors of 2.8 m each. 3 reaches a 6 m curtain wall walk (castle-wall), 5 tops a tall tower.
coverchoicehides planks ironhidesWhat protects the front and sides: hides (patchwork of wet animal hides against fire), planks (bare timber boarding), iron (riveted iron plates).
woodchoiceoak pine weathered darkoakTimber tone of the frame and wheels: oak, pine (light), weathered (silver-grey), dark (tarred).
bannerchoicecrimson azure forest gold violet blackcrimsonColour of the flag on the top platform: crimson, azure, forest, gold, violet or black.

Presets: iron belfry {"cover":"iron","wood":"dark","storeys":5,"banner":"black"} · wall stormer {"storeys":3,"cover":"planks","wood":"pine","banner":"gold"} · hide tower {"cover":"hides","banner":"forest"}

Files

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