Castle Gatehouse
A stone gatehouse two 4 m grid cells wide (8 m along X) with a 3 m arched passage, twin flanking towers, an iron portcullis that slides up into the masonry (slide rig on y) and a timber drawbridge hinged at the threshold (rotate rig on x: 0 lowered toward +Z, -90 raised shut). Lowered, the drawbridge reaches 4.5 m past the front edge. Torches glow at night.
- Size
- 11.4 × 12.8 × 9.8 m
- Triangles
- 3,948
- Kit
- Castle
Tune it
4 knobs: Towers, Stone, Open, Banners.
Specs
- Size
- 11.4 × 12.8 × 9.8 m width × height × depth
- Triangles
- 3,948 of 6,000
- Draw calls
- 1 one vertex-colour material
- Moving parts
- 2 portcullis · slide, drawbridge · rotate
- Knobs
- 4 3 presets
- Night lights
- 1 torch
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/castle-gate.mjs';
const castleGate = createAsset();
scene.add(castleGate); // rests on y = 0, front faces +Z
// 'drawbridge' pivots on its hinge: -90° to 0° around x
castleGate.getObjectByName('drawbridge').rotation.x = THREE.MathUtils.degToRad(-90);import { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/castle-gate.mjs';
export function CastleGate() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import castle-gate.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
$CastleGate/drawbridge.rotation_degrees.x = -90// Import castle-gate.glb with glTFast (com.unity.cloud.gltfast).
transform.Find("drawbridge").localEulerAngles = new Vector3(/* x: */ -90, 0, 0);Use the gaitkit MCP server: get_variant({ "id": "castle-gate", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
towers | choice | round square none | round | Flanking towers either side of the gate: round drums, square towers, or none (a plain gate tower whose sides take castle-wall pieces directly). |
stone | choice | limestone granite sandstone slate redstone | limestone | Stone for the whole kit: limestone (pale warm grey, classic), granite (neutral grey), sandstone (warm tan, desert fort), slate (dark blue-grey, grim northern hold), redstone (red-brown). Use the same value on every Castle piece so they match. |
open | toggle | on / off | true | Rest pose. On: portcullis raised and drawbridge lowered (welcoming). Off: portcullis down and drawbridge drawn up flat against the arch (under siege). The rigs still move both. |
banner | choice | crimson azure forest gold violet black none | crimson | Colour of the long banners hanging on the towers: crimson, azure, forest, gold, violet, black, or none. Plain colour fields with a pale stripe, no heraldry. |
Presets: siege ready {"open":false,"banner":"black","stone":"slate"} · royal gate {"towers":"round","banner":"azure","stone":"limestone"} · frontier gate {"towers":"square","stone":"sandstone","banner":"gold"}
Files
| File | What |
|---|---|
| castle-gate.glb | GLB, default look · 569 KB |
| castle-gate.mjs | ES module, every knob live |
| castle-gate.obj | OBJ, static, no colour |
| castle-gate-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.