Gaitkit Open the lab
Duck, A farm duck about 0.4 m tall and 0.5 m long, as a green-headed mallard drake, a mottled brown mallard hen, a white pekin, a black cayuga or a khaki duck, with an optional crest pompom. Waddles on two short orange legs whose ankles bend back, webbed feet flat and planted, rolling side to side with the head bobbing and the tail wagging.
Creature · Walks on 2 legs

Duck

A farm duck about 0.4 m tall and 0.5 m long, as a green-headed mallard drake, a mottled brown mallard hen, a white pekin, a black cayuga or a khaki duck, with an optional crest pompom. Waddles on two short orange legs whose ankles bend back, webbed feet flat and planted, rolling side to side with the head bobbing and the tail wagging.

Size
0.23 × 0.42 × 0.56 m
Triangles
1,458
Open in the lab Walk clip inside. The download carries the knobs you set here.

Tune it

3 knobs: Plumage, Crest, Size.

Specs

Size
0.23 × 0.42 × 0.56 m
width × height × depth
Triangles
1,458
of 6,000
Draw calls
1
one vertex-colour material
Legs
2
2 gait groups
Stride
8 cm
duty factor 0.6
Foot slide
0.00 mm
limit 1 mm
Walk clip
0.188 m/s
at playback speed 1
Moving parts
3
neck · rotate, head · rotate, tail · rotate
Knobs
3
3 presets
Night lights
0
none

Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic, planted feet never slide past 1 mm.

Use it

Code for the specimen as it is set up above; it follows your knobs.

JavaScript
import { createAsset } from 'https://gaitkit.com/cdn/duck.mjs';
import { walker } from 'https://gaitkit.com/runtime/walk.mjs';

const duck = createAsset();
scene.add(duck);                      // rests on y = 0, front faces +Z
const gait = walker(duck, { ground: (x, z) => terrainHeight(x, z) });   // or omit ground for a flat floor

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  duck.position.z = dist;
  gait.poseAt(dist);                  // feet stay planted, at any frame rate
  renderer.render(scene, camera);
});

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

Knobs

KnobTypeValuesDefaultWhat it does
plumagechoicedrake hen pekin cayuga khakidrakePlumage: drake (mallard male: green head, white collar, chestnut breast, grey body, blue wing patch), hen (mottled brown mallard female), pekin (all white farm duck with an orange bill), cayuga (black with a green sheen), khaki (soft khaki brown).
cresttoggleon / offfalseA fluffy pompom crest on top of the head, like a crested farm duck.
sizerange0.4 to 1.3, step 0.051Uniform scale. 1 is a grown duck about 0.4 m tall; 0.4 is a duckling (pekin plumage reads best); 1.3 is a big farm breed.

Presets: pond mallard {"plumage":"drake"} · duckling {"plumage":"pekin","size":0.45} · crested pekin {"plumage":"pekin","crest":true,"size":1.1}

Files

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