Jellyfish
A drifting sea nettle jellyfish with a striped 26 cm bell, long trailing tentacles and frilly oral arms. Swims by distance in pulses: the bell squeezes and lifts, then relaxes and glides while the tentacles trail and sway; it drifts 1.2 m above the sea floor. The rim lights and tentacles glow at night.
- Size
- 0.27 × 0.80 × 0.31 m
- Triangles
- 1,872
Tune it
4 knobs: Kind, Tentacle length, Glow, Size.
Specs
- Size
- 0.27 × 0.80 × 0.31 m width × height × depth
- Triangles
- 1,872 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 0.7 m of travel per cycle
- Altitude
- 1.2 m below the surface
- Moving parts
- 56 body · slide, bell · slide, glow_t0 · rotate, glow_t0_1 · rotate, glow_t0_2 · rotate, glow_t1 · rotate, glow_t1_1 · rotate, glow_t1_2 · rotate, glow_t2 · rotate, glow_t2_1 · rotate, glow_t2_2 · rotate, glow_t3 · rotate, glow_t3_1 · rotate, glow_t3_2 · rotate, glow_t4 · rotate, glow_t4_1 · rotate, glow_t4_2 · rotate, glow_t5 · rotate, glow_t5_1 · rotate, glow_t5_2 · rotate, glow_t6 · rotate, glow_t6_1 · rotate, glow_t6_2 · rotate, glow_t7 · rotate, glow_t7_1 · rotate, glow_t7_2 · rotate, glow_t8 · rotate, glow_t8_1 · rotate, glow_t8_2 · rotate, glow_t9 · rotate, glow_t9_1 · rotate, glow_t9_2 · rotate, glow_t10 · rotate, glow_t10_1 · rotate, glow_t10_2 · rotate, glow_t11 · rotate, glow_t11_1 · rotate, glow_t11_2 · rotate, glow_t12 · rotate, glow_t12_1 · rotate, glow_t12_2 · rotate, glow_t13 · rotate, glow_t13_1 · rotate, glow_t13_2 · rotate, arm_0 · rotate, arm_0_1 · rotate, arm_0_2 · rotate, arm_1 · rotate, arm_1_1 · rotate, arm_1_2 · rotate, arm_2 · rotate, arm_2_1 · rotate, arm_2_2 · rotate, arm_3 · rotate, arm_3_1 · rotate, arm_3_2 · rotate
- Knobs
- 4 3 presets
- Night lights
- 2 glow, bell
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/jellyfish.mjs';
const jellyfish = createAsset();
scene.add(jellyfish); // rests on y = 0, front faces +Z
let dist = 0;
renderer.setAnimationLoop(() => {
dist += speed * clock.getDelta();
jellyfish.position.set(0, groundY + jellyfish.userData.altitude, dist);
jellyfish.userData.tick(dist); // the body waves 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/jellyfish.mjs';
export function Jellyfish({ 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); // the body waves with the distance
});
return <primitive object={model} />;
}# Import jellyfish.glb (download below). It carries an in-place "Loop" animation.
@onready var anim: AnimationPlayer = $Jellyfish/AnimationPlayer
func _physics_process(delta):
velocity = transform.basis.z * speed
move_and_slide()
anim.play("Loop")
anim.speed_scale = speed / 0.7 # one Loop = 0.7 m of travel// Import jellyfish.glb with glTFast (com.unity.cloud.gltfast).
animator.Play("Loop");
animator.speed = speed / 0.7 // one Loop = 0.7 m of travelUse the gaitkit MCP server: get_variant({ "id": "jellyfish", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
kind | choice | nettle moon lionsmane crystal | nettle | Species: nettle (tall amber bell with dark stripes, long maroon tentacles and long frilly arms), moon (flat pale bell with a pink four-leaf clover on top, short fringe), lionsmane (red bell trailing a dense mane of tentacles), crystal (clear blue-white, glows strongly). |
tentacles | range | 0.5 to 2.5, step 0.1 | 1 | Tentacle and oral-arm length as a multiple of the species normal. 2.5 gives long trailing streamers. |
glow | color | any colour | #7ee8ff | Colour of the lights around the bell rim and the tentacle tips; they glow in this colour at night. |
size | range | 0.3 to 4, step 0.1 | 1 | Uniform scale. 1 is the real size of the species (a 26-36 cm bell); 0.3 is a tiny jelly; 4 is a giant metre-wide deep-sea jelly. |
Presets: moon jelly {"kind":"moon","glow":"#b58aff"} · lion's mane {"kind":"lionsmane","tentacles":1.6,"size":2,"glow":"#ff7a4a"} · deep glow {"kind":"crystal","glow":"#5afff0","tentacles":1.8}
Files
| File | What |
|---|---|
| jellyfish.glb | GLB, default look · 343 KB |
| jellyfish.mjs | ES module, every knob live |
| jellyfish.obj | OBJ, static, no colour |
| jellyfish-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.