Ceiling fans
A low-poly 1920s speakeasy ceiling fan: a black stepped deco motor housing ringed in brass gold and emerald, four dark wood paddle blades on gold irons, a black bell canopy on a gold ceiling plate, and a gold pull chain with a velvet red tassel. It has a seamless 4 s loop: the blades turn once and the pull chain sways.

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
- 1,652
- Vertices
- 4,956
- Meshes · materials
- 17 · 17
- Size (W × H × D)
- 1.3 m × 77 cm × 1.3 m
- File
- GLB · 143 KB
- Animation
- scene-motion · 4.0s
- Style
- Low-poly
- Collection
- Speakeasy
Palette · named materials
- black — canopy bell, downrod, motor housing covers, switch cup (body)#151619
- gold — ceiling plate, collars, housing rings, rotor stripe, finial, pull chain (accent)#d0a225
- gold dark — blade irons (trim)#8f7019
- black light — downrod coupler, rotor band, chain eyelet (trim)#3a3c40
- emerald — jewel band on the lower housing (accent)#248f59
- velvet red — pull-chain tassel (accent)#c32222
- dark wood — blades (base)#3d2a1c
Use it
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
const gltf = await new GLTFLoader().loadAsync(
"https://assets.stoicsoft.com/1designtool/3d/models/speakeasy-ceiling-fans/37d325c2ca/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:
Ceiling fans for the Speakeasy 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 Speakeasy kit (Low-poly style, flat-lowpoly direction): A hidden jazz club in the 1920s. Use ONLY the kit palette, by name: black #151619, gold #d0a225, emerald #248f59, velvet red #c32222, black dark #090a0b, gold dark #8f7019, black light #3a3c40, gold light #debd63, 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 `luxuryLevel` (0–1, default 0.5) for the kit's "Luxury level" 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 abstract-kinetic
- three-check PASS · glb-lint PASS
Named parts · 7
- Ceiling fans
- Canopy
- Downrod
- Motor housing
- Switch cup
- Pull chain
- Rotor and blades
Note: Size: 1.32 m blade sweep (a 52-inch fan) and 0.77 m tall from the finial tip to the ceiling plate, with a 0.30 m downrod. It is modelled as installed, canopy up. To follow the library convention the origin is at the bottom centre and the finial tip rests on y = 0, so in a scene you lift it until the ceiling plate (y = 0.765) meets your ceiling. The pull chain hangs on the +Z (front) side. The GLB has 1,652 triangles in 17 meshes and uses 7 of the 12 kit palette colours. Every material is named exactly after its colour. The exporter writes one material per mesh, so a name can repeat: recolour by name. The baked clip scene-motion (4 s, seamless) moves only two parts, each on its own pivot. The rotor (band, irons, blades) turns one whole turn about the downrod axis, anticlockwise seen from below. The pull chain sways about its eyelet. The canopy, downrod, housing and switch cup never move. The GLB's static node pose is the t = 2 s pose, because three-check exports after its determinism seek, so the rotor sits half a turn round in the static nodes. The spin is much slower than a real fan so it reads in the viewer; speed it up in your engine if you need to. Params are baked into the GLB at their defaults and only change the model when the scene is rebuilt in the viewer. luxuryLevel (the kit's 'Luxury level') adds gold in steps. Below 0.25 every ring, collar, the finial and the chain are gold dark. From 0.25 they turn gold. From 0.5 an emerald jewel band appears on the lower housing. From 0.75 gold light inlay strips are laid on the blades. bladeCount sets 3 to 6 blades, downrodLength sets the drop (which changes the overall height), and spinTurns sets 1 to 3 rotor turns per loop. Only the default params were rendered and checked; the extremes were not captured, but even 6 blades with inlays stays far under the 9,000-triangle budget. The viewer renders at exposure 0.62, because brighter exposure washes velvet red to coral and emerald to mint. glb-lint: 0 errors and 4 heuristic warnings: material count above the direction's soft max of 10, per-mesh duplicate materials, non-indexed geometry (flat shading on purpose), and nested overlaps where the rings and collars sit on their parent forms. The verdict reads UNVERIFIED only because no host requirements contract was supplied. plan-check passes except for its part-id regex, which rejects the hyphens in the slug-based ids this library requires; the same plan with the slug de-hyphenated passes. three-check accepts the real ids, and all 7 survive the GLB reload. Fix rounds: (1) slimmer blade irons in gold dark and a wider emerald band; (2) the pull chain was shortened to three links because the tassel hung 2.5 cm below y = 0.
About the Ceiling fans 3D model
Ceiling fans is a free animated low-poly 3D model from the Speakeasy set. It measures 1.3 m × 77 cm × 1.3 m (W × H × D) at real-world scale and is built from 1,652 triangles across 17 meshes, with 7 named parts and a baked animation (4.0 s). Download the 143 KB GLB and drop it into three.js, React Three Fiber, Godot or Blender — free for commercial use, no attribution required.
- Is the Ceiling fans 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), 143 KB: 1,652 triangles, 4,956 vertices and 17 materials, modelled in metres at 1.3 m × 77 cm × 1.3 m.
- Is Ceiling fans animated?
- Yes — the GLB carries a baked animation (4.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 Ceiling fans 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 Speakeasy →
Spotlight
Speakeasy1,180 tris

Revolving bookcase door
Speakeasy3,228 tris

Vintage car
Speakeasy4,412 tris

Cash boxes
Speakeasy1,120 tris

Card table
Speakeasy1,384 tris

Coat rack
Speakeasy2,676 tris

Bottle shelves
Speakeasy4,568 tris

Instruments
Speakeasy2,804 tris
Free under the 1DesignTool 3D library license. Model #66 of 1378.