FREEcommercial use · no sign-up

Curtains

Low-poly floor-length curtains for a small city flat: two pinch-pleated mustard panels drawn part-way open on a dark wood rod with ball finials, wooden rings and wall brackets. A seamless 6 s loop shows the folds billowing in a breeze from the window.

Curtains 3D model
This model carries a baked animation clip.

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,960
Vertices
8,880
Meshes · materials
46 · 46
Size (W × H × D)
2.1 m × 2.4 m × 28 cm
File
GLB · 278 KB
Animation
scene-motion · 6.0s
Collection
Cozy Apartment

Palette · named materials

  • mustard#c39b22
  • sage#89a178
  • dark wood#3d2a1c
  • oak dark#594126
  • soot black#1b1b22
  • mid grey#7d828c

Use it

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

const gltf = await new GLTFLoader().loadAsync(
  "https://assets.stoicsoft.com/1designtool/3d/models/cozy-apartment-curtains/ca77b0f06e/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:

Curtains for the Cozy Apartment 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 Cozy Apartment kit (Low-poly style, flat-lowpoly direction): A small lived-in city flat. Use ONLY the kit palette, by name: warm white #f9f7f5, oak #8f693d, mustard #c39b22, sage #89a178, warm white dark #ddd2c6, oak dark #594126, warm white light #f9f7f6, oak light #b48f64, soot black #1b1b22, 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 `wallColour` (0–1, default 0.5) for the kit's "Wall colour" 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
Make your own with 1DesignTool →

Named parts · 18

  • Curtains
  • Rod and finials
  • Wall brackets
  • Curtain rings
  • Left panel fold 1
  • Left panel fold 2
  • Left panel fold 3
  • Left panel fold 4
  • Left panel fold 5
  • Left panel fold 6
  • Left panel fold 7
  • Right panel fold 1
  • Right panel fold 2
  • Right panel fold 3
  • Right panel fold 4
  • Right panel fold 5
  • Right panel fold 6
  • Right panel fold 7

Note: Size: the rod is 2.0 m wide (2.13 m across the finials). The rod axis is 2.36 m up and the model is 2.40 m tall. It is about 0.21 m deep from the bracket wall plates (the wall plane, at −Z) to the front of the hem folds. The origin is at the bottom centre on y = 0 and the front faces +Z. The hems hang 1.2 mm above y = 0 at rest so the swinging folds never dip below the floor. The GLB has 2,960 triangles in 46 meshes (merged per part and palette colour) and one 6 s looping clip, 'scene-motion'. In that clip, only the 14 fold nodes rotate (about local X, forward only, on hinges at their hook eyes under the rod). The rod, finials, brackets and rings stay still. The static node pose stored in the GLB is the t = 2 s frame, so the folds sit slightly swung forward until the clip plays. Every material is named exactly after its kit palette colour. The exporter writes one material instance per mesh, so names repeat. Params are baked at export, so the GLB is the default build. wallColour picks the header tape and hem band from the kit's wall paint ramp (warm white < 0.25 ≤ warm white dark < 0.5 ≤ sage < 0.75 ≤ mustard). The fabric is mustard, or sage on a mustard wall, matching the floor-and-window module's curtains. rodWidth, drawn and breeze rebuild or re-pose the model in the viewer only. plan-check's part-id regex rejects the hyphenated slug ids the library requires, so the plan was validated on a de-hyphenated copy (PASS). three-check accepts the hyphenated ids. glb-lint reports 0 errors. Its warnings are expected for this pipeline: per-mesh material instances, non-indexed flat-shaded geometry, nested folds flagged as sibling overlap, the hanging rod and brackets flagged as detached (they mount to a wall that is not part of the asset), and a scale heuristic that expects about 1 m.

About the Curtains 3D model

Curtains is a free animated low-poly 3D model from the Cozy Apartment set. It measures 2.1 m × 2.4 m × 28 cm (W × H × D) at real-world scale and is built from 2,960 triangles across 46 meshes, with 18 named parts and a baked animation (6.0 s). Download the 278 KB GLB and drop it into three.js, React Three Fiber, Godot or Blender — free for commercial use, no attribution required.

Is the Curtains 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), 278 KB: 2,960 triangles, 8,880 vertices and 46 materials, modelled in metres at 2.1 m × 2.4 m × 28 cm.
Is Curtains 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 Curtains 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 #16 of 1378.