Gaitkit Sign in Open the lab
Snake, A European snake about 95 cm long lying on the ground, head toward +Z: a smooth round body that tapers to a thin tail, a slightly wider head with eyes and a glint, a hinged lower jaw and a forked tongue that flicks out. Grass snake: olive with a yellow and black collar behind the head, black bars along the flanks and a chequered pale belly; adder: grey-brown with a dark zigzag down the back, a dark V on the head and a stripe through the eye. The body is a chain of twelve nested segments (seg_0 behind the head to seg_11 at the tail tip) with head, jaw and tongue. It travels on the ground by distance: side-to-side waves run from head to tail with every joint following the path of the one ahead (Loop clip, loop_m metres per wave). Named clips: Slither (the same wave in seconds), Dangle (hanging limp from talons gripping it at seg_2 and seg_3, about a third of the way back: the body drops straight down from the pivot of seg_3 and sways like a pendulum, the tail curls, the head lifts and the tongue flicks) and Strike (rears into an S, lunges with the mouth open, settles back).
Creature · Rolls with distance

Snake

A European snake about 95 cm long lying on the ground, head toward +Z: a smooth round body that tapers to a thin tail, a slightly wider head with eyes and a glint, a hinged lower jaw and a forked tongue that flicks out. Grass snake: olive with a yellow and black collar behind the head, black bars along the flanks and a chequered pale belly; adder: grey-brown with a dark zigzag down the back, a dark V on the head and a stripe through the eye. The body is a chain of twelve nested segments (seg_0 behind the head to seg_11 at the tail tip) with head, jaw and tongue. It travels on the ground by distance: side-to-side waves run from head to tail with every joint following the path of the one ahead (Loop clip, loop_m metres per wave). Named clips: Slither (the same wave in seconds), Dangle (hanging limp from talons gripping it at seg_2 and seg_3, about a third of the way back: the body drops straight down from the pivot of seg_3 and sways like a pendulum, the tail curls, the head lifts and the tongue flicks) and Strike (rears into an S, lunges with the mouth open, settles back).

Size
0.17 × 0.03 × 0.84 m
Triangles
3,588
Open in the lab

FreeFree download, no account needed.

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

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

The other 13 in WildlifePro

Pro is $12 a month: all 590 specimens, every knob baked into GLB or OBJ. Or $79 once. See Pro plans

Tune it

3 knobs: Species, Colour, Size.

Specs

Size
0.17 × 0.03 × 0.84 m
width × height × depth
Triangles
3,588
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
0.577 m
of travel per cycle
Moving parts
15
seg_0 · rotate, seg_1 · rotate, seg_2 · rotate, seg_3 · rotate, seg_4 · rotate, seg_5 · rotate, seg_6 · rotate, seg_7 · rotate, seg_8 · rotate, seg_9 · rotate, seg_10 · rotate, seg_11 · rotate, head · rotate, jaw · rotate, tongue · slide
Knobs
3
4 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.

JavaScript
import { createAsset } from 'https://gaitkit.com/cdn/snake.mjs';

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

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  snake.position.z = dist;
  snake.userData.tick(dist);            // wheels roll exactly with the distance
  renderer.render(scene, camera);
});

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

Knobs

KnobTypeValuesDefaultWhat it does
specieschoicegrass addergrassgrass = grass snake (Natrix): slender, olive with a yellow and black collar behind the head, black flank bars, round pupils. adder = European adder (Vipera berus): stouter, a broad flat head, a dark zigzag down the back, a dark V on the head and red eyes with slit pupils.
colourchoicenatural pale darknaturalnatural = the usual colours (olive grass snake, brown adder). pale = a grey-green grass snake or a silver-grey male adder with a black zigzag. dark = a dark olive grass snake or an almost black (melanistic) adder.
sizerange0.6 to 1.25, step 0.051Uniform scale. 1 is a 95 cm grass snake or a 90 cm adder; 0.6 is a young one about 55 cm long; 1.25 is a big female of 1.2 m.

Presets: grass snake {"species":"grass"} · adder {"species":"adder"} · silver adder {"species":"adder","colour":"pale"} · young grass snake {"species":"grass","size":0.6}

Files

FileWhat
snake.glbGLB, default look · 539 KB
snake.mjsES module, every knob live
snake.objOBJ, static; colours in the .mtl
snake.mtlOBJ colours; keep it next to the .obj
snake-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.