Phoenix
A swan-sized fire bird, 3 m across the wings with long flame-tipped tail plumes: a crest of flame feathers, a hooked golden beak, wings shading from crimson to gold at the tips. Flies by distance with slow, sweeping wingbeats, the primaries flaring on the downstroke and the tail streamers rippling behind. Flame feathers, crest and tail tips glow like fire at night.
- Size
- 3.1 × 0.57 × 2.2 m
- Triangles
- 2,086
Tune it
4 knobs: Plumage, Tail plumes, Crest, Size.
Specs
- Size
- 3.1 × 0.57 × 2.2 m width × height × depth
- Triangles
- 2,086 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 3.2 m of travel per cycle
- Altitude
- 3 m above the ground
- Moving parts
- 9 wing_L · rotate, wing_R · rotate, wingtip_L · rotate, wingtip_R · rotate, tail_0 · rotate, tail_1 · rotate, tail_2 · rotate, neck · rotate, body · slide
- Knobs
- 4 3 presets
- Night lights
- 1 fire
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/phoenix.mjs';
const phoenix = createAsset();
scene.add(phoenix); // rests on y = 0, front faces +Z
let dist = 0;
renderer.setAnimationLoop(() => {
dist += speed * clock.getDelta();
phoenix.position.set(0, groundY + phoenix.userData.altitude, dist);
phoenix.userData.tick(dist); // wings beat with the distance
renderer.render(scene, camera);
});import { useMemo, useRef } from 'react';
import { useFrame } from '@react-three/fiber';
import { createAsset } from 'https://gaitkit.com/cdn/phoenix.mjs';
export function Phoenix({ speed = 1 }) {
const model = useMemo(() => createAsset(), []);
const dist = useRef(0);
useFrame((_, dt) => {
dist.current += speed * dt;
model.position.set(0, groundY + model.userData.altitude, dist.current);
model.userData.tick(dist.current); // wings beat with the distance
});
return <primitive object={model} />;
}# Import phoenix.glb (download below). It carries an in-place "Loop" animation.
@onready var anim: AnimationPlayer = $Phoenix/AnimationPlayer
func _physics_process(delta):
velocity = transform.basis.z * speed
move_and_slide()
anim.play("Loop")
anim.speed_scale = speed / 3.2 # one Loop = 3.2 m of travel// Import phoenix.glb with glTFast (com.unity.cloud.gltfast).
animator.Play("Loop");
animator.speed = speed / 3.2 // one Loop = 3.2 m of travelUse the gaitkit MCP server: get_variant({ "id": "phoenix", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
plumage | choice | flame azure verdant violet ember | flame | Fire colour: flame (crimson to gold, the classic), azure (blue fire with ice-white tips), verdant (green and gold), violet (purple to pink), ember (charcoal body with smouldering orange tips). |
tail | range | 0.5 to 1.6, step 0.05 | 1 | Length of the tail streamers. 0.5 is a short fan; 1 is about as long as the wingspan is half; 1.6 trails far behind like a comet. |
crest | toggle | on / off | true | A crest of flame feathers sweeping back from the crown. |
size | range | 0.3 to 3, step 0.05 | 1 | Uniform scale. 1 is a 3 m wingspan; 0.3 is a crow-sized chick; 3 is a 9 m legendary sun bird. |
Presets: blue phoenix {"plumage":"azure","tail":1.3} · phoenix chick {"plumage":"flame","size":0.3,"tail":0.5,"crest":false} · ember phoenix {"plumage":"ember","tail":1.6,"size":1.5}
Files
| File | What |
|---|---|
| phoenix.glb | GLB, default look · 268 KB |
| phoenix.mjs | ES module, every knob live |
| phoenix.obj | OBJ, static, no colour |
| phoenix-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.