/** * 镭射卡五图预设 — 真实金属银系 * 参考实体卡:Pokémon holo / BTS photocard / 国产星穹镭射票 * 5 张卡都是金属底,仅银色微调 + 色带方向/速度不同 * * Prompt 字段: * bgPrompt — 背景主题描述(不含前缀/后缀,由 Gateway 拼接) * overlayPrompt — 装饰层描述(同上) * colorHint — 主色调提示(用于用户 prompt 的配色引导) */ export const LASER_BATCH_EXPORT_SIZE = { w: 450, h: 600 } /** 兼容字段:旧的 rich 模式已弃用 */ export const PRESET_VARIANTS = [ { id: 'dream', style: 'dream', beam: 'prism', backdropMode: 'grating', backdropTone: '#A8ACB2', // 冷银 sheenBandAngle: 135, sheenSpeed: 0.35, sheenIntensity: 0.40, foilCoverage: 0.75, laserStrength: 50, frostIntensity: 8, flowSpeed: 0.35, colorHint: '淡紫色 粉色 银色', bgPrompt: '梦幻柔光渐变,淡紫色调和粉色,柔和泡泡和星光光斑,虚化景深,纯净梦幻氛围', overlayPrompt: '精致银色星点,细边框装饰线,散落星形闪光和柔和光斑', }, { id: 'classic', style: 'classic', beam: 'aurora', backdropMode: 'grating', backdropTone: '#A89E91', // 香槟银 sheenBandAngle: 120, sheenSpeed: 0.45, sheenIntensity: 0.38, foilCoverage: 0.70, laserStrength: 48, frostIntensity: 6, flowSpeed: 0.45, colorHint: '香槟金 暖金色 浅米色', bgPrompt: '经典复古胶片风格,暖色调,浅香槟色渐变,艺术纹理和柔和光影,优雅复古氛围', overlayPrompt: '经典复古边框花纹,暖金色调和银色细线,精致几何图案', }, { id: 'holoFull', style: 'holoFull', beam: 'neon', backdropMode: 'grating', backdropTone: '#B0ACA6', // 珍珠银 sheenBandAngle: 150, sheenSpeed: 0.30, sheenIntensity: 0.50, foilCoverage: 0.95, laserStrength: 62, frostIntensity: 10, flowSpeed: 0.30, colorHint: '银色 霓虹色 金属银', bgPrompt: '全息科技感渐变,银色金属质感,未来主义光影和几何线条,珍珠光泽,炫酷科技氛围', overlayPrompt: '全息科技感装饰,霓虹色细线光晕,电路板几何图案和星形闪光', }, { id: 'ice', style: 'ice', beam: 'white', backdropMode: 'grating', backdropTone: '#9C9993', // 暖银 sheenBandAngle: 110, sheenSpeed: 0.50, sheenIntensity: 0.36, foilCoverage: 0.60, laserStrength: 44, frostIntensity: 5, flowSpeed: 0.50, colorHint: '浅蓝灰 冰蓝 银色', bgPrompt: '冰雪冷色调渐变,浅蓝灰背景,冰晶纹理和雪花光斑,清爽透明感,纯净冰雪氛围', overlayPrompt: '冰晶装饰,浅蓝色和银色星点,雪花图案和细线装饰', }, { id: 'sunset', style: 'sunset', beam: 'sunset', backdropMode: 'grating', backdropTone: '#9E958A', // 玫瑰金底 sheenBandAngle: 140, sheenSpeed: 0.40, sheenIntensity: 0.42, foilCoverage: 0.80, laserStrength: 52, frostIntensity: 7, flowSpeed: 0.40, colorHint: '玫瑰金 暖橙色 粉色', bgPrompt: '日落暖色调渐变,玫瑰金背景,暖橙色和粉色光影,温柔浪漫氛围', overlayPrompt: '日落暖色调装饰,玫瑰金和琥珀色星点,柔和花卉和光线元素', }, ] export const LASER_PRESET_IDS = PRESET_VARIANTS.map((p) => p.id) export function getLaserPresetByIndex(index) { const i = Number(index) if (!Number.isFinite(i) || i < 0 || i >= PRESET_VARIANTS.length) { return PRESET_VARIANTS[0] } return PRESET_VARIANTS[i] } export function getLaserPresetIndexById(presetId) { const id = String(presetId || '').trim() const idx = PRESET_VARIANTS.findIndex((p) => p.id === id) return idx >= 0 ? idx : 0 } /** * 构建 Dify 工作流所需的 render_configs(每个 variant 的完整渲染参数) * 用于 POST /api/v1/laser/generate 请求体 * @param {string[]} [presetIds] 需要生成的 preset ID 列表,默认全部5个 * @returns {Array<{preset_id: string, grating_config: object, bg_prompt: string, overlay_prompt: string}>} */ export function buildRenderConfigs(presetIds) { const ids = presetIds || LASER_PRESET_IDS return PRESET_VARIANTS .filter((p) => ids.includes(p.id)) .map((p) => ({ preset_id: p.id, grating_config: { sheen_band_angle: p.sheenBandAngle, sheen_intensity: p.sheenIntensity, sheen_speed: p.sheenSpeed, foil_coverage: p.foilCoverage, backdrop_tone: p.backdropTone, }, bg_prompt: p.bgPrompt || '', overlay_prompt: p.overlayPrompt || '', })) } export { resolveGratingConfig, DEFAULT_BACKDROP_TONE } from './laserGrating.js'