diff --git a/video-ai-system/engines/generate-shots.js b/video-ai-system/engines/generate-shots.js index 91708af..2ebfa44 100644 --- a/video-ai-system/engines/generate-shots.js +++ b/video-ai-system/engines/generate-shots.js @@ -65,83 +65,63 @@ async function main() { function buildPrompt(shot, encoding) { const locks = encoding.continuity_locks; - // ═══ D136+ HLDP编码提示词引擎 ═══ - // 冰朔: "编码的结构肯定有更高的权重。AI拿到编码后去组合编码, - // 然后照着编码去找你后面给他翻译的汉字。" + // ═══ 编码+自然语言 双层协议 ═══ + // 冰朔: 编码锁死不可变的(人物/道具)→ 只锁关键属性,精简。 + // 自然语言解释为什么(场景/动机)→ 让AI理解原因→自己推理。 + // 如果全锁死,AI没有了"灵光一闪"的可能性。 // - // 原理: HLDP的 ⊢ / · / | / → 这些标记符号天然构成层级结构。 - // AI模型的注意力机制对结构化输入敏感—— - // 每个 ⊢ 是一个锚点,每个 · 是一个属性分支。 - // 编码权重 > 自然语言翻译权重。 - // - // 结构: - // ⊢ CHAR · 锁定 ← 最高权重·不可变 - // ⊢ PROP · 锁定 ← 紧随其后 - // ⊢ 空间 ← 克制描述 - // → 动作(自然语言翻译) ← 编码后的汉字辅助 + // 三层结构: + // ⊢ 编码层 (锁死·不可变) ← 精简CHAR/PROP关键属性 + // ⊢ 场景层 (自然语言·理解) ← AI理解为什么→自己推理 + // → 动作层 (自然语言·发挥) ← 具体做什么·给AI空间 let prompt = ''; - // ─── 编码区: CHAR锁定 ─── + // ─── 编码层: 只锁关键属性 ─── if (shot.char_ref && locks?.characters?.[shot.char_ref]) { - const charLock = locks.characters[shot.char_ref]; - prompt += `⊢ CHAR-003 · 苏白 · 锁定: 全镜一致不可变\n`; - prompt += ` 外貌: 18岁亚洲男性 | 五官俊秀·剑眉·明亮大眼 | 自信笑容露齿\n`; - prompt += ` 服饰: 白色长衫·腰间束带·袖口挽起 | 黑色长发半束半披\n`; - prompt += ` 身形: 175cm·挺拔·肩膀开阔\n`; - prompt += ` 气质: 开朗·自信·略带痞气·穷但不自卑\n`; - prompt += charLock.locked_desc + '\n'; + prompt += `⊢ CHAR-003 · 苏白 · 编码锁定\n`; + prompt += ` 18岁男性·白色长衫·黑色长发半束·175cm挺拔\n`; } - // ─── 编码区: PROP锁定 ─── if (shot.prop_ref && locks?.props?.[shot.prop_ref]) { const propLock = locks.props[shot.prop_ref]; - prompt += `⊢ PROP · ${shot.prop_ref} · 锁定: 不可变\n`; - prompt += ` 方向: ${propLock.orientation} | 材质: ${propLock.material}\n`; - prompt += ` 文字: ${propLock.text}\n`; - prompt += propLock.locked_desc + '\n'; + prompt += `⊢ ${shot.prop_ref} · 编码锁定\n`; + prompt += ` 竖式悬挂·破旧木质·【天道宗】\n`; } if (shot.prop_ref_2 && locks?.props?.[shot.prop_ref_2]) { const propLock2 = locks.props[shot.prop_ref_2]; - prompt += `⊢ PROP · ${shot.prop_ref_2} · 锁定: 不可变\n`; - prompt += ` 方向: ${propLock2.orientation} | 材质: ${propLock2.material}\n`; - prompt += ` 文字: ${propLock2.text}\n`; - prompt += propLock2.locked_desc + '\n'; + prompt += `⊢ ${shot.prop_ref_2} · 编码锁定\n`; + prompt += ` 横式立地·破旧木板·招生广告: ${propLock2.text}\n`; } - // ─── 编码区: 空间 ─── + // ─── 场景层: 自然语言 → AI理解为什么 ─── + if (encoding.scene) { + prompt += `\n⊢ 场景 · 自然语言理解\n`; + prompt += ` ${encoding.scene}\n`; + } + + // ─── 空间 ─── if (shot.env && locks?.environments?.[shot.env]) { const hasChar = !!(shot.char_ref && locks?.characters?.[shot.char_ref]); - if (hasChar) { - // 有主体时的克制空间描述 - prompt += `⊢ 空间 · 锁定: 不可喧宾夺主\n`; - prompt += ` 位置: 修仙广场·人群边缘角落\n`; - prompt += ` 光线: 白天·金色阳光\n`; - prompt += ` 景别: ${shot.framing}\n`; - } else { - // 纯环境镜使用完整锁定文本 - prompt += `⊢ 空间 · 锁定: ENV-002百宗会广场\n`; - prompt += locks.environments[shot.env].locked_desc + '\n'; + if (!hasChar) { + // 纯环境镜 + prompt += `\n⊢ 空间\n`; + prompt += ` 修仙广场·人群边缘角落·金色阳光·3D动画渲染\n`; } } - // ─── 翻译区: 动作描述 ─── + // ─── 动作层: 自然语言 → AI发挥 ─── + prompt += `\n→ 景别: ${shot.framing}`; + if (shot.emotion?.type) prompt += ` | 氛围: ${shot.emotion.type}`; + prompt += `\n`; + if (shot.action) { prompt += `→ ${shot.action}\n`; } - // 文字标注 - if (shot.text_elements) { - prompt += `→ 画面中可见文字: ${shot.text_elements}\n`; - } - // ─── 风格约束 ─── - prompt += `⊢ 风格约束:\n`; - prompt += ` 3D动画渲染·中国风仙侠·电影级光影·高质感\n`; - prompt += ` 景别: ${shot.framing}`; - if (shot.emotion?.type) prompt += ` | 氛围: ${shot.emotion.type}`; - prompt += `\n`; - prompt += ` 禁止: 真人写实·卡通·现代元素·水印·字幕`; + prompt += `⊢ 风格: 3D动画渲染·中国风仙侠·电影级光影·高质感\n`; + prompt += `⊢ 禁止: 真人写实·卡通·现代元素·水印`; return prompt; } diff --git a/video-ai-system/outputs/付费修仙-ep01-director-encoding.json b/video-ai-system/outputs/付费修仙-ep01-director-encoding.json index 31b36b5..56d6872 100644 --- a/video-ai-system/outputs/付费修仙-ep01-director-encoding.json +++ b/video-ai-system/outputs/付费修仙-ep01-director-encoding.json @@ -3,6 +3,7 @@ "episode": "ep01", "tempo": "slow_build", "emotion_main": "悬", + "scene": "修仙界百宗会广场,今天是宗门收徒的日子。灵霄宗门庭若市,队伍排到望不到头。而天道宗——穷得只剩一块破牌匾,无人问津。但苏白有系统,他知道自己早晚是世界第一宗。所以他不绝望,他站在破牌匾下大声吆喝,不是因为绝望,是因为笃定。他的喊话不是乞求,是宣言。围观的人嘲笑他,讽刺完散去,风吹起落叶——但苏白的叹气不是认命,是系统进度条走太慢的烦躁。", "emotion_curve": [ { "pos": "0-5s", "intensity": 3, "type": "悬", "role": "建立" }, { "pos": "5-10s", "intensity": 6, "type": "燃", "role": "登场" },