Gaitkit Open the lab
Banner Pole, A banner on a wooden pole set in a stone footing, 3 to 6 m tall: a long banner hanging from a crossbar, a square flag flying from the top, or a long tapering pennon. The cloth is split into hinged strips (cloth_0..3, rotate rigs) that userData.tick waves once per loop. Plain colour fields only (halved, quartered, striped or bordered), so it works as faction or team colours.
Prop · 4 moving parts

Banner Pole

A banner on a wooden pole set in a stone footing, 3 to 6 m tall: a long banner hanging from a crossbar, a square flag flying from the top, or a long tapering pennon. The cloth is split into hinged strips (cloth_0..3, rotate rigs) that userData.tick waves once per loop. Plain colour fields only (halved, quartered, striped or bordered), so it works as faction or team colours.

Size
1.6 × 4.9 × 1.0 m
Triangles
808
Open in the lab Ready for any engine. The download carries the knobs you set here.

Tune it

5 knobs: Style, Pattern, Colour, Trim, Height.

Specs

Size
1.6 × 4.9 × 1.0 m
width × height × depth
Triangles
808
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
1 m
of travel per cycle
Moving parts
4
cloth_0 · rotate, cloth_1 · rotate, cloth_2 · rotate, cloth_3 · rotate
Knobs
5
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/banner-pole.mjs';

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

// 'cloth_0' pivots on its hinge: -5° to 5° around x
bannerPole.getObjectByName('cloth_0').rotation.x = THREE.MathUtils.degToRad(-5);

More in the docs; agents can fetch all of this through MCP.

Knobs

KnobTypeValuesDefaultWhat it does
stylechoicehanging flag pennonhanginghanging (a long banner hanging from a crossbar, swaying), flag (a square flag flying from the pole top), pennon (a long tapering streamer).
patternchoiceplain halved quartered striped borderedhalvedPlain colour fields, no emblems: plain (one colour), halved (left and right halves), quartered (four quarters), striped (vertical stripes), bordered (colour with a trim border).
colourchoicecrimson azure forest gold violet blackcrimsonMain field colour: crimson, azure, forest, gold, violet or black. Match castle-tower, castle-gate and siege-tower banners.
trimchoicecream gold black white crimson azurecreamSecond colour used by the pattern, the fringe and the finial cord: cream, gold, black, white, crimson or azure.
heightrange3 to 6, step 0.254.5Pole height in metres, footing included. The cloth scales with it.

Presets: royal standard {"style":"hanging","pattern":"bordered","colour":"azure","trim":"gold","height":5} · tournament pennon {"style":"pennon","pattern":"striped","colour":"gold","trim":"black","height":5.5} · camp flag {"style":"flag","pattern":"quartered","colour":"forest","trim":"white","height":4}

Files

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