Kelp Forest
A patch of tall kelp strands rising from rocks on the sandy seabed, each with leafy blades and round gas floats. Every strand is a rotate part (kelp_0, kelp_1, ...) pivoting at its holdfast, so the forest sways on stage. Default strands are about 4 m tall.
- Size
- 2.2 × 4.7 × 2.2 m
- Triangles
- 2,164
- Kit
- Underwater
Tune it
4 knobs: Height, Density, Colour, Seed.
Specs
- Size
- 2.2 × 4.7 × 2.2 m width × height × depth
- Triangles
- 2,164 of 6,000
- Draw calls
- 1 one vertex-colour material
- Moving parts
- 7 kelp_0 · rotate, kelp_1 · rotate, kelp_2 · rotate, kelp_3 · rotate, kelp_4 · rotate, kelp_5 · rotate, kelp_6 · rotate
- 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/kelp-forest.mjs';
const kelpForest = createAsset();
scene.add(kelpForest); // rests on y = 0, front faces +Z
// 'kelp_0' pivots on its hinge: -8° to 8° around x
kelpForest.getObjectByName('kelp_0').rotation.x = THREE.MathUtils.degToRad(-8);import { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/kelp-forest.mjs';
export function KelpForest() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import kelp-forest.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
$KelpForest/kelp_0.rotation_degrees.x = -8// Import kelp-forest.glb with glTFast (com.unity.cloud.gltfast).
transform.Find("kelp_0").localEulerAngles = new Vector3(/* x: */ -8, 0, 0);Use the gaitkit MCP server: get_variant({ "id": "kelp-forest", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
height | range | 1.5 to 8, step 0.5 | 4 | Height of the tallest strands in metres. 1.5 is a low seaweed bed, 8 a towering kelp forest; strands vary around it. |
density | range | 3 to 12, step 1 | 7 | Number of kelp strands, 3 (a sparse clump) to 12 (a thick stand). The patch widens to fit them. |
colour | choice | golden olive green red | golden | golden (giant brown kelp), olive (cold-water kelp), green (bright sea lettuce look) or red (red seaweed). |
seed | range | 1 to 50, step 1 | 3 | Changes where each strand grows, how it curves and how its blades hang. Same seed always builds the same patch. |
Presets: giant kelp {"height":7.5,"density":9,"colour":"golden"} · seaweed bed {"height":1.8,"density":12,"colour":"green"} · red algae {"colour":"red","height":3,"density":5,"seed":17}
Files
| File | What |
|---|---|
| kelp-forest.glb | GLB, default look · 459 KB |
| kelp-forest.mjs | ES module, every knob live |
| kelp-forest.obj | OBJ, static, no colour |
| kelp-forest-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.