Penguin
An upright penguin, 1.1 m tall for an emperor (down to 40 cm for a little blue), black back and white front with species colour patches. Walks on two short legs with flat webbed feet, waddling from side to side with flippers held out for balance and the head bobbing.
- Size
- 0.52 × 1.0 × 0.50 m
- Triangles
- 1,010
Tune it
4 knobs: Kind, Chick, Waddle, Size.
Specs
- Size
- 0.52 × 1.0 × 0.50 m width × height × depth
- Triangles
- 1,010 of 6,000
- Draw calls
- 1 one vertex-colour material
- Legs
- 2 2 gait groups
- Stride
- 13 cm duty factor 0.6
- Foot slide
- 0.00 mm limit 1 mm
- Walk clip
- 0.33 m/s at playback speed 1
- Moving parts
- 3 flipper_L · rotate, flipper_R · rotate, head · rotate
- Knobs
- 4 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.
import { createAsset } from 'https://gaitkit.com/cdn/penguin.mjs';
import { walker } from 'https://gaitkit.com/runtime/walk.mjs';
const penguin = createAsset();
scene.add(penguin); // rests on y = 0, front faces +Z
const gait = walker(penguin, { ground: (x, z) => terrainHeight(x, z) }); // or omit ground for a flat floor
let dist = 0;
renderer.setAnimationLoop(() => {
dist += speed * clock.getDelta();
penguin.position.z = dist;
gait.poseAt(dist); // feet stay planted, at any frame rate
renderer.render(scene, camera);
});import { useMemo, useRef } from 'react';
import { useFrame } from '@react-three/fiber';
import { createAsset } from 'https://gaitkit.com/cdn/penguin.mjs';
import { walker } from 'https://gaitkit.com/runtime/walk.mjs';
export function Penguin({ speed = 1 }) {
const model = useMemo(() => createAsset(), []);
const gait = useMemo(() => walker(model), [model]);
const dist = useRef(0);
useFrame((_, dt) => {
dist.current += speed * dt;
model.position.z = dist.current;
gait.poseAt(dist.current); // feet stay planted, at any frame rate
});
return <primitive object={model} />;
}# Import penguin.glb (download below). It carries an in-place "Walk" animation.
@onready var anim: AnimationPlayer = $Penguin/AnimationPlayer
func _physics_process(delta):
velocity = transform.basis.z * speed
move_and_slide()
anim.play("Walk")
anim.speed_scale = speed / 0.33 # Walk clip covers 0.33 m/s at 1x// Import penguin.glb with glTFast (com.unity.cloud.gltfast).
animator.Play("Walk");
animator.speed = speed / 0.33 // Walk clip covers 0.33 m/s at 1xUse the gaitkit MCP server: get_variant({ "id": "penguin", "want": "default look" })
then place the result and walk it with walker() so the feet stay planted.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
kind | choice | emperor king adelie rockhopper littleblue | emperor | Species: emperor (1.1 m, pale-yellow chest and golden ear patches), king (90 cm, bright orange ear and chest), adelie (70 cm, plain black and white with a white eye ring, pink feet), rockhopper (55 cm, spiky yellow eyebrows, red eyes, orange beak), littleblue (40 cm, slate-blue back). |
chick | toggle | on / off | false | A fluffy grey chick of the chosen kind: rounder, bigger head, downy grey body with a white face mask. Pair with a small size. |
waddle | range | 0.5 to 2, step 0.1 | 1 | How far the body rocks from side to side with each step. 0.5 is a steady march; 2 is an exaggerated cartoon waddle. |
size | range | 0.3 to 2.5, step 0.05 | 1 | Uniform scale on top of the species height. 1 is real size; 0.4 with Chick on is a newly hatched chick; 2.5 is a giant mascot penguin. |
Presets: emperor chick {"kind":"emperor","chick":true,"size":0.45} · rockhopper {"kind":"rockhopper","waddle":1.5} · king penguin {"kind":"king"}
Files
| File | What |
|---|---|
| penguin.glb | GLB, default look · 137 KB |
| penguin.mjs | ES module, every knob live |
| penguin.obj | OBJ, static, no colour |
| penguin-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.