← Lab
Low-poly cicada
Built from Three.js primitives at runtime — there is no .glb, no loader and
no asset request. The whole insect is a few hundred flat-shaded triangles, which is smaller
shipped as code than it would be as a file. Wings pivot at the shoulder and feather through
the stroke, so the beat reads as flight rather than as a windscreen wiper.
triangles — ·
— fps
drag to orbit · scroll to zoom
view
What is worth knowing
- Real cicadas beat their wings at roughly 60–120 Hz. At that rate on a screen the wings vanish into a blur, so the default here is
14 Hz— slow enough to read as a wing, fast enough to read as flight. Push the slider up to see why nobody animates it accurately. - The wing pivots at the shoulder, not at its centre. Each wing sits in its own group positioned at the wing root; rotating that group is what makes the stroke look hinged.
- Feathering is the detail that sells it. The wing twists on
rotation.za quarter-cycle out of phase with the up/down stroke, the way a real wing changes angle of attack as it reverses. - The body bobs at twice the wingbeat — one dip per power stroke — and the abdomen trails slightly behind the body.
- Flat shading is the whole aesthetic. Every surface uses
flatShading: truewith low segment counts, so the facets are deliberate rather than a compromise.