{
  "schemaVersion": 1,
  "id": "flower-of-life",
  "version": "1.0.0",
  "status": "published",
  "kind": "object",
  "title": "Flower of Life",
  "summary": "The Flower of Life drawn in polished gold wire, circle by circle, by a point of light. Loops perfectly.",
  "description": "Sacred geometry in polished metal wire, floating over a soft backdrop with motes of light drifting behind. In the drawing animation each circle is traced by a bright point of light, growing outwards from the centre; the finished pattern holds while light glides across it, then fades away and the loop begins again. In the turning animation the whole pattern turns slowly with pulses of light running round its circles. Choose the pattern (the Flower of Life, the Seed of Life or Metatron's Cube), the metal (gold, rose gold, silver or copper), the animation and the backdrop.",
  "role": "Hero object (Three.js 3D): a sacred-geometry emblem for spiritual, wellness and mystical content.",
  "collections": [
    "hypnotic-loops",
    "chrome-glass"
  ],
  "tags": [
    "flower of life",
    "sacred geometry",
    "seed of life",
    "metatron's cube",
    "mandala",
    "gold",
    "spiritual",
    "meditation",
    "yoga",
    "line drawing",
    "loop",
    "3d"
  ],
  "synonyms": [
    "sacred geometry animation",
    "flower of life animation",
    "gold mandala",
    "metatron cube",
    "seed of life",
    "spiritual symbol",
    "geometric mandala",
    "circle pattern"
  ],
  "useCases": [
    "An opener for meditation, yoga and wellness videos",
    "A mystical emblem for astrology, tarot and spiritual channels",
    "A quiet, premium logo-like reveal for a spa or jewellery brand"
  ],
  "featured": null,
  "publishedAt": "2026-10-06",
  "implementation": {
    "target": "three",
    "runtime": "browser",
    "language": "javascript",
    "module": "esm",
    "entry": "src/flower-of-life.js",
    "exports": [
      {
        "name": "createSacredGeometry",
        "signature": "createSacredGeometry({ pattern?, metal?, animation?, wire? }) => { group, extent, counts, update(time, loopSeconds), dispose() }",
        "description": "The pattern as a THREE.Group in the xy plane (circles of radius 0.5). update(time, loopSeconds) draws, holds and fades it, or turns it."
      },
      {
        "name": "createMotes",
        "signature": "createMotes({ count?, color?, spread?, depth?, seed? }) => { group, update(time, loopSeconds), dispose() }",
        "description": "Soft motes of light drifting upwards behind the pattern, looping seamlessly."
      },
      {
        "name": "METALS",
        "signature": "METALS: { gold, rose, silver, copper }",
        "description": "The finishes, with the colour of their light."
      }
    ],
    "reusable": [
      "src/flower-of-life.js"
    ],
    "demo": "demo.js",
    "harness": "index.html"
  },
  "dependencies": [
    {
      "id": "three",
      "version": "0.185.1",
      "reason": "Renderer, geometry and physical materials."
    },
    {
      "id": "chrome-material",
      "version": "1.1.0",
      "scope": "demo",
      "reason": "Studio environment light and backdrop."
    },
    {
      "id": "apw-runtime",
      "version": "1.0.0",
      "scope": "demo",
      "reason": "Demo harness."
    }
  ],
  "params": [
    {
      "key": "pattern",
      "label": "Pattern",
      "type": "select",
      "default": "flower",
      "options": [
        {
          "value": "flower",
          "label": "Flower of Life"
        },
        {
          "value": "seed",
          "label": "Seed of Life"
        },
        {
          "value": "metatron",
          "label": "Metatron's Cube"
        }
      ]
    },
    {
      "key": "metal",
      "label": "Metal",
      "type": "select",
      "default": "gold",
      "options": [
        {
          "value": "gold",
          "label": "Gold"
        },
        {
          "value": "rose",
          "label": "Rose gold"
        },
        {
          "value": "silver",
          "label": "Silver"
        },
        {
          "value": "copper",
          "label": "Copper"
        }
      ]
    },
    {
      "key": "animation",
      "label": "Animation",
      "type": "select",
      "default": "draw",
      "options": [
        {
          "value": "draw",
          "label": "Draws itself, then fades"
        },
        {
          "value": "spin",
          "label": "Turns with pulses of light"
        }
      ]
    },
    {
      "key": "background",
      "label": "Backdrop",
      "type": "color",
      "default": "#15112e"
    },
    {
      "key": "motes",
      "label": "Motes of light",
      "type": "boolean",
      "default": true
    },
    {
      "key": "seed",
      "label": "Seed",
      "help": "Changes where the motes of light drift.",
      "type": "integer",
      "min": 1,
      "max": 999,
      "step": 1,
      "default": 9
    }
  ],
  "presets": [
    {
      "id": "default",
      "label": "Gold on indigo, drawing itself",
      "params": {}
    },
    {
      "id": "seed",
      "label": "Seed of Life, rose gold on blush",
      "params": {
        "pattern": "seed",
        "metal": "rose",
        "background": "#ecd6cc",
        "motes": false
      }
    },
    {
      "id": "metatron",
      "label": "Metatron's Cube in silver",
      "params": {
        "pattern": "metatron",
        "metal": "silver",
        "background": "#0b1424"
      }
    },
    {
      "id": "mandala",
      "label": "Turning gold mandala",
      "params": {
        "animation": "spin",
        "background": "#1c0e0b"
      }
    }
  ],
  "output": {
    "width": 1080,
    "height": 1080,
    "fps": 30,
    "durationSeconds": 12,
    "posterSeconds": 8.4,
    "alpha": false,
    "motion": "procedural",
    "loop": {
      "seamless": true,
      "cycleSeconds": 12,
      "method": "Drawing: the pattern starts and ends each loop empty. Turning: a sixth of a turn per loop (the pattern has sixfold symmetry) with pulses and tilt repeating whole times, so the last frame meets the first."
    },
    "seed": {
      "param": "seed",
      "behavior": "Seed places the motes of light."
    }
  },
  "composition": {
    "inputs": "Time within the loop; the pattern, metal and animation.",
    "outputs": "A THREE.Group in the xy plane facing +z (and optional motes for the background).",
    "coordinates": "Circles have radius 0.5. The Flower fits within a radius of 1.6, the Seed 1.1, Metatron's Cube 2.5 (extent).",
    "lighting": "Physical metal: needs scene.environment; a warm key light adds sharper glints. The drawing light is self-lit.",
    "timing": "update(time, loopSeconds) is a pure function of time; frames render in any order.",
    "compatibleWith": [
      "kinetic-title",
      "chrome-material",
      "particle-tunnel"
    ],
    "notes": [
      "Each circle starts drawing at the point nearest the centre, so the pattern grows outwards.",
      "Metatron's Cube draws its thirteen circles, then its seventy-eight lines."
    ]
  },
  "reuse": [
    "Meditation intro: the default, with your channel name fading in below once the pattern is complete.",
    "Wellness brand: Seed of Life in rose gold on blush as a logo sting.",
    "Mystical background: Turning gold mandala behind a narrator, motes on."
  ],
  "integration": {
    "newProject": "Set scene.environment (createStudioEnvironment from Chrome Material works), add createSacredGeometry().group facing the camera, and call update(time, loopSeconds) each frame.",
    "existingProject": "Copy src/flower-of-life.js. Add the group to your scene, scale it, and call update(seconds, loopSeconds) every frame."
  },
  "performance": {
    "notes": "Twenty to a hundred thin tubes sharing one shader; drawing is done by hiding parts in the shader, nothing is rebuilt per frame. Smooth at 1080p on laptop GPUs.",
    "limits": "Software WebGL (no GPU) renders slowly."
  },
  "limitations": [
    "The patterns are fixed to these three; the circle size is set by scaling the group.",
    "The drawing order is fixed: centre first, then outwards."
  ],
  "license": {
    "spdx": "MIT",
    "notice": "Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder.",
    "thirdParty": [
      {
        "name": "three.js",
        "version": "0.185.1",
        "license": "MIT",
        "url": "https://github.com/mrdoob/three.js"
      }
    ]
  },
  "provenance": "Adapted from the owner's threejs-sketches/geometry-math/sacred-geometry (MIT), rebuilt for AI Pixel Wizard in October 2026: three patterns in polished wire, drawn on by a point of light in the shader, a gliding glint, a turning mode with light pulses, drifting motes, and the frame/time contract.",
  "changelog": [
    {
      "version": "1.0.0",
      "date": "2026-10-05",
      "notes": "Initial release."
    }
  ]
}
