Ballista
A torsion bolt thrower about 3 m long aiming toward +Z, on a tripod, a two-wheeled cart or a stone plinth for castle walls. The mount turns on y (traverse), the cradle tilts on x (elevation) and the windlass at the back spins; userData.tick sweeps it left and right while winding the windlass once per loop.
- Size
- 2.7 × 2.2 × 2.8 m
- Triangles
- 820
- Kit
- Castle
Tune it
4 knobs: Wood, Mount, Bolt, Size.
Specs
- Size
- 2.7 × 2.2 × 2.8 m width × height × depth
- Triangles
- 820 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 1 m of travel per cycle
- Moving parts
- 3 mount · rotate, cradle · rotate, winch · spin
- 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.
import { createAsset } from 'https://gaitkit.com/cdn/ballista.mjs';
const ballista = createAsset();
scene.add(ballista); // rests on y = 0, front faces +Z
// 'mount' pivots on its hinge: -40° to 40° around y
ballista.getObjectByName('mount').rotation.y = THREE.MathUtils.degToRad(-40);import { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/ballista.mjs';
export function Ballista() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import ballista.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
$Ballista/mount.rotation_degrees.y = -40// Import ballista.glb with glTFast (com.unity.cloud.gltfast).
transform.Find("mount").localEulerAngles = new Vector3(/* y: */ -40, 0, 0);Use the gaitkit MCP server: get_variant({ "id": "ballista", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
wood | choice | oak pine weathered dark | oak | Timber tone: oak (warm brown), pine (light, freshly built), weathered (silver-grey), dark (tarred). |
mount | choice | tripod cart plinth | tripod | tripod (three splayed legs round a pivot post, field use), cart (two wheels and a trail, can be towed), plinth (a squat stone base for a castle wall walk or tower top). |
bolt | toggle | on / off | true | A loaded 1.8 m iron-tipped bolt in the slide. Off shows it unloaded. |
size | range | 0.8 to 1.6, step 0.05 | 1 | Overall scale. 1 is about 3 m long and 2.6 m across the bow arms; 1.6 a heavy fortress engine. |
Presets: wall scorpion {"mount":"plinth","wood":"dark"} · field ballista {"mount":"cart","wood":"pine"} · fortress engine {"mount":"plinth","size":1.5,"wood":"weathered"}
Files
| File | What |
|---|---|
| ballista.glb | GLB, default look · 120 KB |
| ballista.mjs | ES module, every knob live |
| ballista.obj | OBJ, static, no colour |
| ballista-params.json | knob 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.