Files
bubblechambersimart/compositions/hero.mjs

68 lines
2.6 KiB
JavaScript
Raw Normal View History

2026-06-02 19:17:19 -04:00
/* hero.mjs — one composition, grouped by craft / plex sheet.
Edit any group independently. Every placeable layer has a uniform
transform { x, y, rotation, scale } (x,y = centre offset in 1..1).
Render: node tools/render-composition.mjs compositions/hero.mjs out.svg 1600
*/
export const composition = {
size: 1600,
seed: 'MESON-5113',
// ---- BACKGROUND — the lit substrate + surface craft ----
background: {
color: 'rgb(229,222,203)',
film: { opacity: 0.6, density: 0.5, seed: 8 }, // milky diffusion
aging: { opacity: 0.5, scratches: 5, dust: 0.45, foxing: 0.5, seed: 5 },
grain: { opacity: 0.42, intensity: 0.42, seed: 19 },
},
// ---- FIELD 1 — the ridgeline vacuum carpet (the sea) ----
fieldSea: {
enabled: true,
transform: { x: 0, y: 0, rotation: 0, scale: 1 },
seed: 'VACUUM-5113',
color: { hueBack: 0.54, hueFront: 0.47, sat: 0.6 },
layers: 3,
blurPerLayer: [2.6, 1.1, 0],
seedPerLayer: ['fieldA', 'fieldB', 'fieldC'],
opacityPerLayer: [0.5, 0.72, 0.95],
chaos: 0.32, blips: 0.7, mound: 0.3, horizonY: 0.36, lines: 46, overlap: 1.7,
},
// ---- FIELD 2 — the rippled perspective depth grid ----
fieldGrid: {
enabled: true,
pos: 'over', // 'over' | 'behind' the sea
transform: { x: 0, y: 0, rotation: 0, scale: 1 },
color: { hue: 0.56, hue2: 0.5, sat: 0.26, lightNear: 0.44, lightFar: 0.66 },
opacity: 0.38,
vp: [0, 0.0], dir: 0, spread: Math.PI * 2, rays: 30, depthLines: 17, rMin: 0.04, rMax: 3.0,
ripple: { amp: 0.07, ampRad: 0.06, freqR: 2.4, freqA: 5, phase: 0 },
layers: 2, blurPerLayer: [1.1, 0],
},
// ---- DISK — the shock "sun" (own centre / rotation / scale) ----
disk: {
enabled: true,
transform: { x: 0.0, y: -0.25, rotation: 0, scale: 0.95 },
hue: 0.06, sat: 0.82, size: 0.16, pressure: 0.85,
intensity: 0.85, striations: 0.6, stain: 0.35, soften: 1.35,
},
// ---- BUBBLE — the particle event / tracks (decoupled from the disk) ----
bubble: {
enabled: true,
transform: { x: 0.28, y: -0.1, rotation: 12, scale: 0.82 },
palette: 'magentarise', saturation: 1.05, traceHue: 0,
primaries: 18, sweepers: 5, cosmics: 6, eloss: 0.34, bfield: 1.0, deltaRate: 0.6,
},
// ---- FIDUCIARIES — frame-level "No 001" + arrow (never scales w/ event) ----
fiduciaries: {
enabled: true,
2026-06-02 20:32:41 -04:00
label: 'auto', pencil: '#39312a', width: 1.0, arrow: true, corners: false,
2026-06-02 19:17:19 -04:00
// target defaults to the bubble centre; set explicitly to decouple:
target: [0.28, -0.1],
transform: { x: 0, y: 0, rotation: 0, scale: 1 },
},
};