Swimming fish schools
A low-poly kinetic fish-school display: three tiers of faceted fish circle a central axle above a reef rock with coral and kelp. The middle school swims against the two outer schools, and every fish beats its tail, on a seamless 12-second loop.

Left rail: colours and the 4 knobs the agent wrote into this model — they rebuild the geometry and go into your download. Right rail: looks for the viewer. Drag to orbit, scroll to zoom.
- Triangles
- 2,256
- Vertices
- 6,736
- Meshes · materials
- 53 · 53
- Size (W × H × D)
- 1.4 m × 1.2 m × 1.4 m
- File
- GLB · 575 KB
- Animation
- scene-motion · 12.0s
- Style
- Low-poly
- Collection
- Aquarium
Palette · named materials
- earth (reef rock, finial) — dark grey#525860
- trim (axle, hubs, spokes) — mid grey#7d828c
- accent (warm reef fish bodies) — coral orange#ed7e1d
- accentDark (warm fish tails) — coral orange dark#af590e
- accentLight (coral sprigs) — coral orange light#eea668
- water (cold-water fish bodies) — deep blue light#2e67b8
- waterDark (cold-water fish tails) — deep blue#1b447e
- foliage (kelp) — glow green#3a883a
- eye (fish eyes) — soot black#1b1b22
Use it
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
const gltf = await new GLTFLoader().loadAsync(
"https://assets.stoicsoft.com/1designtool/3d/models/aquarium-swimming-fish-schools/f3b38e4ef3/model.glb"
);
scene.add(gltf.scene); // metres, +Y up, front faces +Z
const mixer = new THREE.AnimationMixer(gltf.scene);
gltf.animations.forEach((clip) => mixer.clipAction(clip).play());
// in your loop: mixer.update(delta)How it was made
The brief given to 1DesignTool's “3D object” template:
Swimming fish schools for the Aquarium kit. Design it as one clear asset at believable real-world scale for that setting (state the size in metres in meta.notes), with its main parts modelled and named, readable at thumbnail size and from every orbit angle. It moves: author a seamless baked loop (2–12 s) with every pivot exactly at its hinge, axle or swivel, and keep the base still. This is one part of the Aquarium kit (Low-poly style, flat-lowpoly direction): Glass tunnels through blue water. Use ONLY the kit palette, by name: deep blue #1b447e, coral orange #ed7e1d, glow green #3a883a, dark grey #525860, deep blue dark #0d223f, coral orange dark #af590e, deep blue light #2e67b8, coral orange light #eea668, soot black #1b1b22, warm white #f2ede2, mid grey #7d828c, dark wood #3d2a1c. Every material's `name` must be exactly the palette colour it uses — the GLB carries these names so the kit recolours as one; an unnamed material fails delivery. Kit knob: expose a param `seaRegion` (0–1, default 0.5) for the kit's "Sea region" setting wherever it makes sense on this part, and keep that id.
- Agent: Claude Code · Claude Opus 5.5 in 1DesignTool
- Generation: 4.39M tokens (96% cached) · ≈ $2.94 at API prices · 5-hour plan +7%
- Direction: Low-poly · family abstract-kinetic
- three-check PASS · glb-lint PASS
Named parts · 20
- Swimming fish schools
- Base
- Reef rock
- Coral sprigs
- Kelp blades
- Axle
- Finial
- Lower school carousel
- Lower hub and spokes
- Lower fish 1 (swivel; fish2…fish5 follow the same pattern)
- Lower fish 1 body with fins
- Lower fish 1 eyes
- Lower fish 1 tail hinge
- Lower fish 1 tail fin
- Middle school carousel
- Middle hub and spokes
- Middle fish 1 (fish2…fish6 follow the same pattern)
- Top school carousel
- Top hub and spokes
- Top fish 1 (fish2…fish4 follow the same pattern)
Note: Real-world size: about 1.2 m wide × 1.19 m tall × 1.2 m deep at default settings. The reef rock is 0.6 m across and 0.2 m high, the fish are 0.30 m (warm reef species) and 0.36 m (slender cold-water species) long, and the tiers ride at 0.50, 0.77 and 1.02 m. This is a kinetic display: every fish is pinned to a spoke on a carousel that turns on the fixed axle, so nothing floats. The base (rock, coral, kelp, axle, finial) never moves. The baked 12 s clip 'scene-motion' turns the lower and top carousels one revolution counter-clockwise and the middle one clockwise; tails beat 24 times per loop (30 in the middle tier), hinged at the tail root, and each body swivels slightly about its spoke tip. Sea region (0 to 1) moves from cold open water to a tropical reef: it switches whole schools from slender blue fish to deep-bodied orange fish (lower, then top, then middle) and trades kelp blades for coral sprigs on the rock. 'Fish in the widest school' sets the middle tier; the other tiers scale with their radius, and fish shorten automatically so they never overlap. All params are build-time: the GLB carries the default configuration. Part ids use the hyphen-free root 'aquariumswimmingfishschools' because the kit's plan checker rejects hyphens in part ids. Materials are named by palette colour (e.g. 'coral orange') so the kit can recolour as one; the exporter writes one material copy per mesh, so you will see repeated material names in the GLB, which the glb-lint flags as a warning only. glb-lint: 0 errors (verdict 'unverified' only because no requirements contract is supplied). 2256 triangles.
About the Swimming fish schools 3D model
Swimming fish schools is a free animated low-poly 3D model from the Aquarium set. It measures 1.4 m × 1.2 m × 1.4 m (W × H × D) at real-world scale and is built from 2,256 triangles across 53 meshes, with 20 named parts and a baked animation (12.0 s). Download the 575 KB GLB and drop it into three.js, React Three Fiber, Godot or Blender — free for commercial use, no attribution required.
- Is the Swimming fish schools 3D model free for commercial use?
- Yes. It is free under the 1DesignTool 3D library license: use it in personal and commercial work — games, apps, websites, renders, ads and client projects — and modify it as you like, with no credit required. What you can't do is re-sell or re-distribute the file on its own or inside a model pack.
- What file format is it, and how big is it?
- A single binary glTF 2.0 file (.glb), 575 KB: 2,256 triangles, 6,736 vertices and 53 materials, modelled in metres at 1.4 m × 1.2 m × 1.4 m.
- Is Swimming fish schools animated?
- Yes — the GLB carries a baked animation (12.0 s), ready to play with any glTF animation mixer.
- Which engines and tools can open it?
- Anything that reads glTF 2.0. three.js, React Three Fiber, Babylon.js, Godot 4 and Blender import the GLB directly; Unity and Unreal Engine load it through their glTF importers. The snippets above show the exact code for three.js, React Three Fiber, Godot and Blender.
- How was the Swimming fish schools 3D model made?
- Claude Code (Claude Opus 5.5) generated it inside 1DesignTool's 3D template from a written brief, then the design kit's checks verified the geometry and the GLB before it was published. You can make your own the same way with 1DesignTool.
More like this
All of Aquarium →Free under the 1DesignTool 3D library license. Model #19 of 902.







