FREEcommercial use · no sign-up

Cargo bike

A low-poly Dutch box cargo bike (bakfiets) with a brick-red step-through frame and a tan plywood cargo box with a cushioned kids' bench, slung low between the rider and a small front wheel. It comes with a seamless 6 s riding loop.

Cargo bike 3D model
This model carries a baked animation clip.

Left rail: colours and the 3 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,484
Vertices
5,902
Meshes · materials
28 · 28
Size (W × H × D)
68 cm × 1.2 m × 3.0 m
File
GLB · 259 KB
Animation
scene-motion · 6.0s
Collection
Bicycle City

Palette · named materials

  • brick red lanes — frame tubes, fork#c32222
  • canal green — box side stripe#3a883a
  • bright bike colours — plywood box panels, bench#b39d80
  • cream — mudguards#f1e7d0
  • brick red lanes dark — chainguard#821717
  • canal green dark — box floor mat#235223
  • brick red lanes light — rear light#db5757
  • canal green light — bench cushion#5db15d
  • soot black — tyres, grips, pedals, chain, headlight bezel#1b1b22
  • warm white — headlight#f2ede2
  • mid grey — rims, spokes, hubs, cog, chainring, cranks, seatpost, handlebar, rack#7d828c
  • dark wood — box rim, saddle#3d2a1c

Use it

import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";

const gltf = await new GLTFLoader().loadAsync(
  "https://assets.stoicsoft.com/1designtool/3d/models/bicycle-city-cargo-bike/2ae19c905a/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:

Cargo bike for the Bicycle City 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 Bicycle City kit (Low-poly style, flat-lowpoly direction): Streets made for bikes. Use ONLY the kit palette, by name: brick red lanes #c32222, canal green #3a883a, bright bike colours #b39d80, cream #f1e7d0, brick red lanes dark #821717, canal green dark #235223, brick red lanes light #db5757, canal green light #5db15d, 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 `bikeColours` (0–1, default 0.5) for the kit's "Bike colours" setting wherever it makes sense on this part, and keep that id.
  • Agent: Claude Code · Claude Opus 5.5 in 1DesignTool
  • Direction: Low-poly · family vehicles
  • three-check PASS · glb-lint PASS
Make your own with 1DesignTool →

Named parts · 14

  • Cargo bike
  • Frame
  • Cargo box
  • Rear rack and light
  • Chainguard
  • Saddle
  • Handlebar
  • Front fork
  • Front wheel
  • Rear wheel
  • Chain
  • Crankset
  • Left pedal
  • Right pedal

Note: Size: about 2.85 m long (mudguard to mudguard), 0.64 m wide across the grips and 1.05 m tall to the grips and saddle. It rides on a 0.70 m (28-inch) rear wheel and a 0.50 m (20-inch) front wheel, and the cargo box is 0.60 m wide, 0.80 m long and stands 0.25–0.66 m above the ground. The origin is at the bottom centre, both tyres rest on y = 0, and the front faces +Z. The exported model has 2,484 triangles in 28 meshes. All 12 kit colours are used at the default setting, and every material is named exactly after its palette colour. The exporter writes one material per mesh, so the same colour name appears on several materials: recolour by name. The baked clip scene-motion (6 s, seamless) moves only parts on their own pivots. The rear wheel rolls 5 whole turns and the front wheel 7; the 7:5 radius ratio keeps their ground speed equal. The crank turns twice on the bottom bracket, the pedals counter-rotate on their spindles to stay level, and the fork and handlebar swing together on their head-tube axes (the handlebar's leans back about 18°). The frame never moves. The chain is static geometry. The export snapshots a mid-loop frame, so the glTF's static node pose is a frame from the clip, not t = 0: play the clip, or seek it to 0, for the rest pose. The front wheel steers with no visible linkage rod; on a long-john that rod hides under the box. Params are baked into the GLB at their defaults and only change the model when the scene is rebuilt in the viewer. bikeColours (the kit's 'Bike colours') picks the frame paint in three steps: below 0.34 classic soot black (mid grey chainguard, cream stripe), 0.34–0.66 brick red lanes (default), and from 0.67 canal green (canal green dark chainguard, brick red stripe). Because it is stepped, values in between change nothing. boxLength stretches the cargo box and moves the front wheel with it. steerSwing sets the steering amplitude of the loop. The extreme setting (bikeColours 0.9, box 1.0 m, steering 0.3 rad) was rendered and passes three-check. glb-lint: 0 errors and 6 heuristic warnings. Two are about material count and duplicate materials, both caused by the per-mesh materials. One flags non-indexed geometry, which is deliberate flat shading. One flags overlaps where the box panels, floor mat, cushion and stripe are deliberately nested. One flags 'detached' parts (chainguard, saddle, chain, pedals), which sit on the stays, seatpost, ring and cog, and crank arms. The grounding warning ('dips 0.128 below ground') comes from axis-aligned boxes around the rotated wheels in the mid-loop snapshot pose; the tyres themselves touch y = 0. The verdict reads UNVERIFIED only because no host requirements contract was supplied. plan-check passes on a copy with de-hyphenated ids; its part-id regex rejects the hyphens in the slug-based ids this library requires. three-check accepts those ids, and all 14 survive the GLB reload.

About the Cargo bike 3D model

Cargo bike is a free animated low-poly 3D model from the Bicycle City set. It measures 68 cm × 1.2 m × 3.0 m (W × H × D) at real-world scale and is built from 2,484 triangles across 28 meshes, with 14 named parts and a baked animation (6.0 s). Download the 259 KB GLB and drop it into three.js, React Three Fiber, Godot or Blender — free for commercial use, no attribution required.

Is the Cargo bike 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), 259 KB: 2,484 triangles, 5,902 vertices and 28 materials, modelled in metres at 68 cm × 1.2 m × 3.0 m.
Is Cargo bike animated?
Yes — the GLB carries a baked animation (6.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 Cargo bike 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.

Free under the 1DesignTool 3D library license. Model #3 of 1865.