Gaitkit Sign in Open the lab
Firefly, A firefly at real size (1 = a 1.4 cm beetle; the size knob scales it up to a 40 cm fantasy lantern bug): a flat rounded head shield with a dark centre spot and a pale rim, big eyes and long beaded antennae, two dark wing cases lifted and spread in flight with pale outer margins, smoky hind wings beating underneath, dangling legs, and a hanging abdomen whose last segments form a pale lantern that glows yellow-green at night. Flies by distance, slowly, wings buzzing and the body drifting up and down.
Creature · Flies

Firefly

A firefly at real size (1 = a 1.4 cm beetle; the size knob scales it up to a 40 cm fantasy lantern bug): a flat rounded head shield with a dark centre spot and a pale rim, big eyes and long beaded antennae, two dark wing cases lifted and spread in flight with pale outer margins, smoky hind wings beating underneath, dangling legs, and a hanging abdomen whose last segments form a pale lantern that glows yellow-green at night. Flies by distance, slowly, wings buzzing and the body drifting up and down.

Size
0.03 × 0.01 × 0.02 m
Triangles
1,448
Open in the lab

ProPro download.

Also as , a .zip with the .obj and its .mtl.

Loop clip inside. The download carries the knobs you set here.

Tune it

4 knobs: Colours, Lantern, Hind wings, Size.

Specs

Size
0.03 × 0.01 × 0.02 m
width × height × depth
Triangles
1,448
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
0.009 m
of travel per cycle
Altitude
0.08 m
above the ground
Moving parts
6
elytron_L · rotate, elytron_R · rotate, abdomen · rotate, body · slide, wing_L · rotate, wing_R · rotate
Knobs
4
3 presets
Night lights
1
glow

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/firefly.mjs';

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

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  firefly.position.set(0, groundY + firefly.userData.altitude, dist);
  firefly.userData.tick(dist);            // wings beat with the distance
  renderer.render(scene, camera);
});

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

Knobs

KnobTypeValuesDefaultWhat it does
coatchoiceclassic amber duskclassicclassic (black wing cases with yellow margins, a pink head shield with a black spot), amber (brown and gold), dusk (charcoal with a red-orange shield).
lanternrange1 to 3, step 12How many tail segments form the glowing lantern: 1 (a small tip light, a female) to 3 (a big lantern, a bright male).
wingstoggleon / offtrueThe smoky membranous hind wings that beat under the lifted wing cases. Off = only the wing cases, like a wingless glow-worm female (she still drifts by distance).
sizerange1 to 30, step 0.51Uniform scale. 1 is real size (1.4 cm long); 10 is a 14 cm game-readable firefly; 30 is a 40 cm fantasy lantern bug.

Presets: summer firefly {"coat":"classic","lantern":2} · golden glow {"coat":"amber","lantern":3,"size":1.5} · glow-worm {"coat":"dusk","lantern":1,"wings":false}

Files

FileWhat
firefly.glb ProGLB, default look · 248 KB
firefly.mjs ProES module, every knob live
firefly.obj ProOBJ, static; colours in the .mtl
firefly.mtlOBJ colours; keep it next to the .obj
firefly-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.