重写漫画工具 · 重启创作流程。因为从今天起,角色,不再是随机数,而是可编译的身份模块。
自从谷歌推出Banana以来,这一技术已成功解决了角色一致性这一长期困扰漫画创作的难题,尤其在多格漫画中保持角色形象统一方面表现出色。
通过输入多张人脸的不同角度图像,Banana能够进一步强化角色特征的稳定性与连续性,使得角色在不同场景、不同角度下都能保持高度一致的视觉表现。
这一突破意味着所有漫画类应用都值得用这项技术重新构建。
今天的作品来自谷歌的banana黑客松项目之一:
实现原理总结 该应用的实现原理可以从三个核心维度来理解:操作步骤(用户流程)、界面布局(UI设计)和 Prompt 的核心设计(与AI沟通的艺术)。
一、操作步骤(用户流程) 这是一个引导用户从零开始创作一整页漫画的完整工作流,每一步都深度集成了 AI 能力:
准备阶段:创建角色与世界观 角色创建 :用户通过专门的模态框,上传几张参考图或描述概念。AI(Gemini)会综合这些信息,生成一张包含正面、侧面、背面和多种表情的标准化角色设定图(Character Sheet)。世界观设定 :用户可以设定故事的宏大背景(例如:一个魔法与科技共存的都市),这会成为后续 AI 生成故事脚本时的重要依据。构思阶段:AI 辅助脚本与布局 AI 故事建议 :用户只需输入一个简单的场景想法(例如“主角在屋顶对峙”),AI 就能生成包含多个分镜描述和对话的详细场景脚本。AI 布局建议 :基于写好的场景脚本,AI 可以自动生成一个专业且富有动感的漫画分镜草图。这个草图会直接显示在画布上,作为用户绘制最终布局的参考。绘制阶段:搭建可视化指令 绘制分镜 :用户使用工具栏中的“面板工具”在画布上绘制出漫画的格子(分镜)。放置角色与设定姿势 :从侧边栏将创建好的角色拖拽到画布的分镜中。姿势编辑器 :选中角色后,可以通过一个可视化的骨骼绑定系统来调整角色的动作和姿势。 这不仅仅是草图,而是一个明确的视觉指令,告诉 AI 每个角色应该摆出什么姿势。生成阶段:一键创作漫画页 发送请求 :当布局、角色姿势和场景脚本都准备好后,用户点击“生成最终页面”。后台工作 :应用会将布局图(包含姿势骨架和角色名称标签)、场景脚本、角色设定图等多模态信息打包,一起发送给 Gemini API。AI 绘制 :Gemini API(特别是 gemini-2.5-flash-image-preview 模型)会理解这些综合信息,然后绘制出一张完整的、符合所有要求的漫画页面。优化阶段:编辑与修正 结果对比与上色 :生成结果后,界面会切换到对比视图,用户可以拖动滑块比较生成图与之前的布局草图。 对于黑白稿,可以一键 AI 上色。AI 自我分析与修正 :应用提供一个“AI 分析”功能。AI 会自己对比布局图和生成结果,检查是否有错误(例如:角色画错了、姿势不符、道具缺失),并自动生成一个用于修正错误的文字指令(Correction Prompt )。用户只需点击“应用修正”,AI 就会根据这个指令重新编辑图片。手动编辑 :用户也可以自己输入文字指令来编辑图片,甚至可以使用“蒙版”工具涂抹特定区域,让 AI 只修改这部分内容。二、界面布局(UI 设计) 应用的界面采用了经典且高效的三栏式布局,确保了流畅的创作体验:
左侧边栏(资源库) 页面管理器 :管理所有漫画页面,方便切换和调整页面属性(如纸张大小)。角色库 :陈列所有已创建的角色,通过简单的拖放操作即可添加到画布中。中间主编辑区(创作核心) 画布(Canvas) :基于 SVG 技术,是所有可视化操作(绘制分镜、放置角色、调整姿势)的核心区域。工具栏 :位于画布左侧,集成了选择、移动、绘制分镜、添加文字、手绘等所有绘图工具。右侧边栏(控制与结果面板) 编辑模式 :显示生成控制器,包括场景脚本的文本输入区、颜色模式(黑白/彩色)选择,以及触发 AI 故事/布局建议和最终生成的按钮。结果模式 :当漫画生成后,此区域会切换为结果展示器,显示生成的图片,并提供上色、再生成、编辑、AI 分析等一系列后期处理工具。三、Prompt 的核心设计 这是整个应用的“灵魂”所在。通过精心设计的 Prompt,将一个模糊的创作想法,转化为 AI 可以理解并精确执行的指令。其核心策略如下:
赋予专家角色(Assigning an Expert Persona) 几乎所有的 Prompt 开头都会给 AI 设定一个专业角色,例如“你是一位专业的漫画家”、“你是一位资深的 storyboard 画师”或“你是一位一丝不苟的质检员”。这能有效引导 AI 以更专业的标准来完成任务,输出质量更高。
结构化与多模态输入(Structured & Multi-modal Input) 在生成最终页面时,应用不只给 AI 文字描述,而是同时提供了布局图(包含姿势骨架)、角色设定图和文字脚本。这种多模态的输入方式,比纯文本更能传递复杂和精确的视觉要求。
建立严格的对应关系(Establishing Strict Correspondence) Prompt 的关键在于用非常明确、甚至带有强制性词语(如 MUST, STRICTLY, CRUCIAL)的指令,强迫 AI 在这些不同信息源之间建立联系。例如,指令会明确要求:“必须将在布局图 A 位置的姿势,应用到名为‘Kaito’的角色设定图上,并让他表现出脚本中描述的‘惊讶’表情。” 这是确保生成结果准确性的核心。
引导专业技法(Guiding Professional Techniques) Prompt 中包含了很多漫画行业的专业指令。例如,在请求布局建议时,会告诉 AI “避免简单无聊的网格布局”,并建议使用“斜切分镜”、“重叠分镜”等专业技巧,引导 AI 生成更具表现力的页面。
结构化输出(Structured JSON Output) 当需要 AI 提供复杂信息时(如故事建议或分析报告),会要求 AI 以 JSON 格式返回结果。Prompt 中会直接定义好 JSON 的结构(Schema),确保程序可以稳定地解析和使用 AI 返回的数据,而不是依赖不稳定的自然语言文本。
迭代式自我修正(Iterative Self-Correction) 整个流程不是一次性的,而是允许用户不断修正。特别是“AI 分析与修正”功能,其 Prompt 设计是让 AI 自我纠错:AI 自己找出问题,并自己生成用于修复问题的下一个 Prompt。这形成了一个强大的闭环修正系统。
四、核心 Prompt 示例 以下是应用中几个关键功能的实际 Prompt 设计。
1. 生成最终漫画页面的 Prompt(generateMangaPage) 这是最核心、最复杂的多模态 Prompt,它整合了所有用户输入。
: 你是一位专业的漫画艺术家,你的任务是根据提供的素材与详细脚本,绘制单页漫画 。
📁 提供素材: ${hasPreviousPage ? '1. 前一页图像 :提供前一页画面,用于理解故事上下文。' : ''}
角色设定图(Character Sheets) :每位登场角色均配有专属设定图。分镜布局与角色姿势图(Panel Layout with Poses) :展示本页漫画的分镜结构。 图中明确标注每个角色的姿势及其对应角色名 。 若角色姿势旁附有文字说明,请将其作为该角色动作的首要执行指令 。 场景脚本(Scene Script) :逐格详细描述本页中角色的动作、表情、镜头构图与叙事内容。 👥 角色参考: ${characterReferencePrompt}
// 示例:
// - Kaito :请使用名为“角色参考图1”的设定图。
${continuationInstruction}
// 若需参考前一页,则会在此处插入衔接说明。
🎯 本页绘制指令: ✅ 关键 —— 严格匹配角色与姿势
分镜图中每个姿势均标注角色名,你必须 使用对应角色设定图,并按指定姿势绘制。若姿势旁有文字注释,请优先遵照执行。 ✅ 严格遵循脚本内容
场景脚本是你绘制表情、镜头构图与叙事氛围的唯一依据,请精确执行。 若脚本描述的是无角色场景(如风景、物品特写),必须绘制该场景,不可替换为角色 。
✅ 角色一致性与数量控制 角色外观必须严格参照设定图 。 每格中仅可绘制脚本与分镜图中指定的角色,不可增删人物 。✅ 分镜布局与尺寸比例 使用提供的分镜布局作为页面结构基准。 面板尺寸越大,代表叙事越重要 —— 请在大格中投入更多细节、动态构图与视觉焦点。✅ 色彩与风格 本漫画采用 ${colorMode} 风格绘制。 所有文字与对话框必须使用粗体、清晰、浓黑的外轮廓线 。✅ 对话框处理
${generateEmptyBubbles ? '分镜图中可能包含对话框形状。你必须绘制这些对话框,但请保持其完全空白 —— 不得填入任何文字、对话或拟声词。' : '若脚本包含对话,请将其填入分镜图中的对话框内。若分镜图无对话框但脚本有对话,请自行添加合适的对话框。'} ✅ 最终输出要求 仅输出最终完成的漫画单页图像 。 禁止添加任何文字说明、注释或额外描述 。📜 本页场景脚本: ${sceneDescription}
2. 生成布局建议的 Prompt(generateLayoutProposal) 这个 Prompt 旨在让 AI 像专业分镜师一样思考。
: 你是一位专业的漫画分镜艺术家。你的任务是为用户创建一份视觉指南,通过绘制一张单页、粗略、灰度 的漫画草图来实现。
🎯 核心目标: 你的首要目标是创作一个富有动感且视觉上引人入胜 的分镜布局,体现专业漫画分镜技巧。分镜需引导读者视线,并控制故事节奏。
📥 提供的输入: 故事内容 :本页漫画所要表现的简短叙事。画布图像 :这是用户的画布,可能为空白或已包含现有绘图。这是你的绘制区域。角色设定稿 :${hasCharacters ? '提供角色参考图。' : '未提供角色设定稿。'}${previousPage ? '4. 前一页图像 :提供前一页图像以供上下文参考。' : ''}
🖋️ 草图绘制关键指令: 1. 尺寸与长宽比 输出草图必须填满整个画布 ,且精确保持 ${aspectRatioValue} 的长宽比 。 禁止 留白、边距或内边距。2. 创意分镜布局 避免 使用简单、呆板的网格布局。请运用专业技巧:动态角度 :使用斜切分镜表现动作或不安氛围。重叠与嵌入式分镜 :重叠分镜表现同步动作,或使用嵌入式分镜聚焦细节。尺寸与形状变化 :混合大小不一、形态各异的分镜。破格分镜 :为增强冲击力,允许角色或特效突破分镜边框。3. 画布整合 提供的“画布图像”是你的绘制基础。若其中已有用户绘制内容,必须将其整合进你的分镜布局中 。 4. 内容要求 仅为草图,非完稿 :使用粗略线条与基础几何形状表现。角色姿态 :将角色合理放置于分镜内。无角色分镜 :若故事描述某分镜仅含背景或物体,严禁 在其中绘制角色。5. 绝对禁止文字 最终输出图像不得包含任何文字、标签、编号或注释 。必须是纯粹的视觉草图 。 📖 待绘制故事: ${story}
3. AI 自我分析与修正建议的 Prompt(analyzeAndSuggestCorrections) 这个 Prompt 让 AI 扮演质检员的角色,找出自己或其他 AI 的错误,并生成用于修复的 Prompt。
: 你是一名细致入微的质量保证助手,专为漫画创作工具服务。你的任务是分析一张生成的漫画页面,并在它偏离原始规划时提出修正建议。
——— 提供的素材 ———
布局与姿势参考图(图1)
这是用户的原始规划图,展示了分镜面板布局,并包含标有角色名称的骨架姿势示意图。生成的漫画页面(图2)
这是由AI画师生成的最终图像。场景剧本
描述本页应呈现内容的文本说明。角色列表
本场景中涉及的角色名称。——— 你的分析任务 ———
请仔细将“生成的漫画页面”与“布局与姿势参考图”及“场景剧本”进行比对。查找以下类型的偏差:
角色缺失或错误 :剧本/参考图中的角色是否缺失?是否使用了错误的角色?姿势不正确 :角色在最终图像中的姿势是否与骨架参考图存在显著差异?布局偏差 :面板的形状和排列是否与参考图不同?与剧本矛盾 :最终图像是否与剧本中描述的动作或情节相矛盾?角色重复 :检查同一面板内是否出现逻辑上不可能的同一角色多次出现。情境不恰当 :分析角色是否被置于与其身份或场景逻辑相矛盾的情境中。——— 你的输出要求 ———
你必须以单个 JSON 对象格式进行响应,结构如下:
{ "analysis": "简明的人类可读摘要,描述你发现的任何偏差,或声明图像准确无误。", "hasdiscrepancies": 布尔值, "correction prompt": "若 has_discrepancies 为 true,请撰写一条详细、具体、清晰的指令提示,供图像编辑AI一次性修正所有已识别问题。若为 false,则留空字符串。" }
——— 示例修正提示 ———
“在左上角面板中,重新绘制角色‘Kaito’,使其姿势与骨架参考一致,并确保他手持一把剑。在底部面板中,添加当前缺失的角色‘Anya’,她应表现出惊讶神情。右侧面板中两个‘Kaito’是错误,删除靠后方的那个。保持画风一致。”
——— 场景剧本 ——— ${sceneDescription}
——— 本场景角色列表 ——— ${characterInfo}
——
更多已更新到AIGC知识库