diff --git a/components/canvas/LiblibVideoCanvasReplica.tsx b/components/canvas/LiblibVideoCanvasReplica.tsx index ff31d0137..25d68762e 100644 --- a/components/canvas/LiblibVideoCanvasReplica.tsx +++ b/components/canvas/LiblibVideoCanvasReplica.tsx @@ -5813,12 +5813,14 @@ export function LiblibVideoCanvasReplica({ const center = toCanvasPoint(window.innerWidth / 2, window.innerHeight / 2); const x = Math.round(center.x - 360); const y = Math.round(center.y - 160); - const identity = [character.name, character.description, character.look, character.wardrobe, character.prompt, `风格:${style}`].filter(Boolean).join("。 "); + // Appearance is shared; generated prompt framing must not override each view's composition. + const identity = [character.name, character.description, character.look, character.wardrobe, + ...(character.look || character.wardrobe ? [] : [character.prompt]), `风格:${style}`].filter(Boolean).join("。 "); const source = createTextResourceNode({ content: identity, title: `${character.name} · 角色设定`, x, y }); source.draftValues = { ...source.draftValues, source: "character-studio", characterIdentity: identity }; const viewPrompts: Record = { "角色立绘": "全身角色立绘,站姿自然,人物完整入画,纯净背景,清晰展示稳定面部特征、服装和道具。", - "脸部近景": "同一角色脸部近景,保持五官、发型与标志性特征完全一致,柔和电影布光。", + "脸部近景": "只拍同一角色脸部近景,脸部占据画幅主体,最多露出肩部,不出现全身或半身立绘;保持五官、发型与标志性特征完全一致,柔和电影布光。", "表情参考": "同一角色表情设定图,四宫格分别展示平静、喜悦、惊讶、愤怒,五官与服装细节一致。", "角色三视图": "同一角色正面、侧面、背面三视图并排,站姿和服装统一,清晰标注轮廓,纯净背景。", }; @@ -5831,7 +5833,9 @@ export function LiblibVideoCanvasReplica({ : views; let identityAnchorId: string | undefined; orderedViews.forEach((view, index) => { - const prompt = `${identity}\n${viewPrompts[view]} 不改变角色身份,不增加多余人物。`; + const singleView = view === "角色立绘" || view === "脸部近景" + ? "只生成一张单一完整构图,禁止拼贴、画中画、分屏、宫格和附加小窗;参考图只用于人物身份,不复用其构图。" : ""; + const prompt = `${identity}\n${viewPrompts[view]} 不改变角色身份,不增加多余人物。${singleView}`; const node = createTargetModuleNode("image", x + 500 + index * 440, y, nodes.length + index + 1); node.title = `${character.name} · ${view}`; node.draftValues = {