{
  "schemaVersion": 1,
  "id": "prayer-wheel",
  "version": "1.0.0",
  "status": "published",
  "kind": "object",
  "title": "Prayer Wheel",
  "summary": "A polished brass prayer wheel with embossed glyphs and turquoise studs spinning on its handle, a weighted chain swinging round it. Loops perfectly.",
  "description": "A hand-held prayer wheel: a drum of polished metal embossed all round with rows of script-like glyphs and lotus petals, studded with turquoise, crowned with a dome and finial and carried on a wooden handle. The drum turns steadily and a little weight on a chain swings out round it as it spins, so the embossing catches the light as it goes by. The glyphs are decorative and not any real script. Choose the metal (gold, brass, silver or copper), how many turns the drum makes per loop, how many turquoise studs, the seed that varies the glyphs, the backdrop colour and whether the camera sways.",
  "role": "Object (3D, three.js): a serene, handcrafted showpiece for wellness, travel and heritage content.",
  "collections": [
    "satisfying",
    "chrome-glass",
    "product-reveals"
  ],
  "tags": [
    "prayer wheel",
    "tibetan",
    "brass",
    "embossed",
    "spinning",
    "mantra",
    "gold",
    "spiritual",
    "studio",
    "loop",
    "3d"
  ],
  "synonyms": [
    "mani wheel",
    "tibetan prayer wheel",
    "hand prayer wheel",
    "spinning drum",
    "embossed brass",
    "meditation wheel"
  ],
  "useCases": [
    "A wellness, meditation or travel title scene",
    "A heritage or craft brand scene",
    "A calm spinning-object loop"
  ],
  "featured": null,
  "publishedAt": "2026-10-06",
  "implementation": {
    "target": "three",
    "runtime": "browser",
    "language": "javascript",
    "module": "esm",
    "entry": "src/prayer-wheel.js",
    "exports": [
      {
        "name": "createPrayerWheel",
        "signature": "createPrayerWheel({ metal?, spin?, stones?, seed? }) => { group, setProgress(progress), dispose() }",
        "description": "The wheel on its handle with chain and weight, about 4 wide and 9 tall, resting on y = 0; needs an environment map."
      },
      {
        "name": "METALS",
        "signature": "METALS: { gold, brass, silver, copper }",
        "description": "Metal finishes with colour and roughness."
      }
    ],
    "reusable": [
      "src/prayer-wheel.js"
    ],
    "demo": "demo.js",
    "harness": "index.html"
  },
  "dependencies": [
    {
      "id": "three",
      "version": "0.185.1",
      "reason": "Renderer, geometry and shader materials."
    },
    {
      "id": "chrome-material",
      "version": "1.1.0",
      "scope": "demo",
      "reason": "Studio environment light, backdrop and contact shadow."
    },
    {
      "id": "apw-runtime",
      "version": "1.0.0",
      "scope": "demo",
      "reason": "Demo harness."
    }
  ],
  "params": [
    {
      "key": "metal",
      "label": "Metal",
      "type": "select",
      "default": "gold",
      "options": [
        {
          "value": "gold",
          "label": "Gold"
        },
        {
          "value": "brass",
          "label": "Brass"
        },
        {
          "value": "silver",
          "label": "Silver"
        },
        {
          "value": "copper",
          "label": "Copper"
        }
      ]
    },
    {
      "key": "spin",
      "label": "Turns per loop",
      "type": "integer",
      "min": 1,
      "max": 6,
      "step": 1,
      "default": 2
    },
    {
      "key": "stones",
      "label": "Turquoise studs",
      "type": "number",
      "min": 0,
      "max": 1,
      "step": 0.1,
      "default": 1
    },
    {
      "key": "seed",
      "label": "Seed",
      "type": "integer",
      "min": 1,
      "max": 999,
      "step": 1,
      "default": 13
    },
    {
      "key": "background",
      "label": "Backdrop",
      "type": "color",
      "default": "#1c1612"
    },
    {
      "key": "orbit",
      "label": "Camera sway",
      "type": "boolean",
      "default": true
    }
  ],
  "presets": [
    {
      "id": "default",
      "label": "Gold, two turns",
      "params": {}
    },
    {
      "id": "brass",
      "label": "Brass, slow",
      "params": {
        "metal": "brass",
        "spin": 1,
        "background": "#241a12"
      }
    },
    {
      "id": "silver",
      "label": "Silver, fast",
      "params": {
        "metal": "silver",
        "spin": 5,
        "background": "#10141c"
      }
    },
    {
      "id": "copper",
      "label": "Copper, no studs",
      "params": {
        "metal": "copper",
        "stones": 0,
        "seed": 29,
        "background": "#1c1210"
      }
    }
  ],
  "output": {
    "width": 1080,
    "height": 1080,
    "fps": 30,
    "durationSeconds": 16,
    "posterSeconds": 3,
    "alpha": false,
    "motion": "procedural",
    "loop": {
      "seamless": true,
      "cycleSeconds": 16,
      "method": "The drum turns a whole number of times per loop, the weight's orbit follows the drum's turn with a lag that swings in sines of whole cycles, and the camera sway is a sine of the loop, so the last frame meets the first."
    },
    "seed": {
      "param": "seed",
      "behavior": "Seed draws the rows of glyphs on the drum and varies the studs: same seed, same wheel."
    }
  },
  "composition": {
    "inputs": "Time within the loop; the metal, turns, studs, seed, backdrop and camera sway.",
    "outputs": "A full frame rendered in 3D with a studio environment.",
    "coordinates": "The wheel's axis is vertical through the origin; the drum (radius 1.7, height 2.6) spins at y = 3.5; the handle runs down to y ≈ 0; the weight swings at radius 3.4–3.8.",
    "lighting": "A warm key light with a shadow map, a shadow-catching floor and the studio environment on the metal.",
    "timing": "setProgress(progress) sets the drum's angle and the chain; frames render in any order.",
    "compatibleWith": [
      "chrome-material",
      "orbit-camera",
      "kinetic-title",
      "number-reveal"
    ],
    "notes": [
      "The relief is a 2048×512 bump map drawn once; it wraps exactly round the drum."
    ]
  },
  "reuse": [
    "Wellness title: Gold, two turns.",
    "Calm: Brass, slow.",
    "Cool: Silver, fast."
  ],
  "integration": {
    "newProject": "Create a WebGLRenderer with a studio environment and a shadow-casting light, add createPrayerWheel().group and call wheel.setProgress(progress) each frame.",
    "existingProject": "Copy src/prayer-wheel.js; add the group to your scene with an environment map."
  },
  "performance": {
    "notes": "A few thousand triangles, a bump map, up to 48 instanced studs and nine chain links with a shadow map: about a millisecond a frame on an integrated Intel GPU.",
    "limits": "Software WebGL renders in about a second a frame."
  },
  "limitations": [
    "The glyphs are decorative marks and not a real script or mantra.",
    "The chain is a straight line of links with a slight sag, not a simulated chain."
  ],
  "license": {
    "spdx": "MIT",
    "notice": "Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder.",
    "thirdParty": []
  },
  "provenance": "Adapted from the owner's threejs-sketches/objects-scenes/prayer-wheel (MIT) and rebuilt for AI Pixel Wizard in October 2026 as an original studio object: a bump-mapped drum with petal bands and procedural decorative glyphs, a finial, studs and a hand-held spinning chain weight on an exact loop.",
  "changelog": [
    {
      "version": "1.0.0",
      "date": "2026-10-05",
      "notes": "Initial release."
    }
  ]
}
