Files
bubblechambersimart/compositions/hero.mjs
2026-06-02 19:17:19 -04:00

68 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 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,
label: 'No 001', pencil: '#39312a', width: 1.0, arrow: true, corners: false,
// target defaults to the bubble centre; set explicitly to decouple:
target: [0.28, -0.1],
transform: { x: 0, y: 0, rotation: 0, scale: 1 },
},
};