Dragonfly
A dragonfly at real size (1 = a 7 cm long hawker with a 10 cm wingspan; the size knob scales it up to a 2 m fantasy mount): huge wraparound compound eyes, a striped, forward-leaning thorax, a long jointed abdomen with per-segment markings and tail claspers, legs folded into a catching basket, and four long glassy wings with veined cells, a dark leading edge and a wing-tip spot. Blue, red or green colouring, clear, amber or banded wings. Flies by distance with the fore and hind wing pairs beating in turn while the body hovers up and down.
- Size
- 0.09 × 0.02 × 0.07 m
- Triangles
- 1,808
- Kit
- Garden Bugs
Tune it
4 knobs: Colour, Wings, Seed, Size.
Specs
- Size
- 0.09 × 0.02 × 0.07 m width × height × depth
- Triangles
- 1,808 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 0.056 m of travel per cycle
- Altitude
- 0.3 m above the ground
- Moving parts
- 6 wing_FL · rotate, wing_FR · rotate, wing_HL · rotate, wing_HR · rotate, abdomen · rotate, body · slide
- Knobs
- 4 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.
import { createAsset } from 'https://gaitkit.com/cdn/dragonfly.mjs';
const dragonfly = createAsset();
scene.add(dragonfly); // rests on y = 0, front faces +Z
let dist = 0;
renderer.setAnimationLoop(() => {
dist += speed * clock.getDelta();
dragonfly.position.set(0, groundY + dragonfly.userData.altitude, dist);
dragonfly.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/dragonfly.mjs';
export function Dragonfly({ 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 dragonfly.glb (download below). It carries an in-place "Loop" animation.
@onready var anim: AnimationPlayer = $Dragonfly/AnimationPlayer
func _physics_process(delta):
velocity = transform.basis.z * speed
move_and_slide()
anim.play("Loop")
anim.speed_scale = speed / 0.056 # one Loop = 0.056 m of travel// Import dragonfly.glb with glTFast (com.unity.cloud.gltfast).
animator.Play("Loop");
animator.speed = speed / 0.056 // one Loop = 0.056 m of travelUse the gaitkit MCP server: get_variant({ "id": "dragonfly", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
species | choice | blue red green | blue | blue (dark hawker with sky-blue eyes and blue abdomen spots), red (all-red darter), green (green thorax and eyes, turquoise abdomen with a black stripe down the back). |
wings | choice | clear amber banded | clear | clear (glassy with dark veins and a wing-tip spot), amber (golden tinted with orange wing bases), banded (a dark band across the middle of every wing). |
seed | range | 1 to 99, step 1 | 1 | Varies the tone of the wing cells and the abdomen markings a little, so several dragonflies over a pond do not look cloned. |
size | range | 1 to 30, step 0.5 | 1 | Uniform scale. 1 is real size (7 cm long, 10 cm wingspan); 10 is a 70 cm giant like the prehistoric griffinflies; 30 is a 2 m fantasy mount. |
Presets: blue hawker {"species":"blue","wings":"clear"} · scarlet darter {"species":"red","wings":"amber","seed":4} · banded emerald {"species":"green","wings":"banded","seed":9}
Files
| File | What |
|---|---|
| dragonfly.glb Pro | GLB, default look · 304 KB |
| dragonfly.mjs Pro | ES module, every knob live |
| dragonfly.obj Pro | OBJ, static; colours in the .mtl |
| dragonfly.mtl | OBJ colours; keep it next to the .obj |
| dragonfly-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.