68 lines
2.6 KiB
JavaScript
68 lines
2.6 KiB
JavaScript
|
|
/* 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 },
|
|||
|
|
},
|
|||
|
|
};
|