Comfyui-Moss-LayoutPrompt:ComfyUI 可视化画布布局插件,拖拽画框生成 MOSS-Image 坐标提示词

插件23小时前发布 小马良
10 0

MOSS Layout Prompt 是一款专为 ComfyUI 设计的自定义节点插件,旨在解决 MOSS-Image 模型在生成图像时,JSON Layout 提示词编写繁琐且缺乏直观性的问题。该插件将抽象的坐标与文本输入转化为可视化的画布操作,允许用户直接在画布上绘制边界框,并在右侧面板为每个元素配置属性,最终输出编译后的标准提示词及匹配的画布尺寸。

Comfyui-Moss-LayoutPrompt:ComfyUI 可视化画布布局插件,拖拽画框生成 MOSS-Image 坐标提示词

环境配置与安装部署

该插件作为独立包发布,不与其他插件共享代码,仅依赖 ComfyUI 原生环境。正确的安装与配置是确保画布编辑器正常渲染的前提。

1. 节点安装

将插件目录直接放置于 ComfyUI 的自定义节点目录下,确保最终路径结构为 ComfyUI/custom_nodes/moss-layoutPrompt-LP/。完成后重启 ComfyUI 服务,节点将自动注册至 moss-layoutPrompt-LP 分类下。

2. 工作流加载与依赖说明

  • 下载官方提供的 moss-layout-prompt.json 示例工作流并拖入 ComfyUI 画布。
  • 依赖注意:示例工作流通过 MOSS-Image HF Loader 节点加载模型,因此运行该示例前,必须确保已另行安装 MOSS-Image 节点包。
  • 在加载器中填写本地模型目录,在画布上绘制布局后点击 Run 即可生成图像。工作流已预设将 prompt 输出连接至 CLIPTextEncode,将 width/height 连接至 EmptyFlux2LatentImage,确保布局画布与生成图像的像素尺寸严格一致。

核心节点与参数配置

插件提供两个共用同一画布编辑器且输出完全相同的节点,以满足不同稳定性的需求:

1. MOSS Layout Prompt(稳定版)

  • 节点 ID:MOSSImageLayoutPrompt
  • 定位:适用于需要长期稳定运行的生产工作流。
  • 输入:width、height(须为 16 的正整数倍)以及 layout(草稿 JSON)。其 layout 输入兼容 MOSS-Image 旧版的 scene schema(包含 scene_type / gen_brief / elements),节点会自动按当前画布尺寸进行转换。

2. MOSS Layout Prompt (Advance)(实验阶段)

  • 节点 ID:MOSSImageLayoutPromptAdvance
  • 定位:在稳定版基础上增加了外部草稿输入功能,目前处于实验阶段,输入与行为可能随版本迭代发生变化。
  • 新增输入 source:接受外部草稿 JSON、已编译提示词或旧版 scene 提示词。该输入与画布实现双向同步:在 source 中粘贴内容会载入画布;在画布上的任何修改也会将当前草稿实时写回 source。输入框带有 source 标签条,点击可弹出完整内容的编辑窗口。若无编辑器环境,节点会直接编译 source,但前提是画布上没有任何边界框。

共同输出:

  • prompt:供 CLIPTextEncode 使用的编译后提示词。
  • width / height:供潜空间节点使用的画布尺寸。

可视化编辑器交互指南

编辑器基于 ComfyUI 前端的 DOM Widget 构建,提供了精细的布局控制能力。

1. 画布尺寸管理

  • 预设与自定义:顶部提供“自定义”与“预设”两种模式。预设模式通过选择比例(如 16:9)、长边数值及横竖屏方向自动计算宽高;自定义模式直接输入宽高值。
  • 网格吸附:所有输入的尺寸均会自动向上取整,吸附至 16 的倍数,以匹配后端模型的要求。导入外部草稿时同样会触发吸附(仅放大不缩小,防止裁切贴边框)。若加载旧工作流时画布非 16 倍数,系统不会强制修改数据,仅在标题栏提示。
  • 信息反馈:卡片标题右侧实时显示百万像素面积(如 2560 × 1440 · 3.69 M)。自定义模式下会显示当前尺寸对应的实际比例。

2. 边界框绘制与调整

  • 基础操作:在空白处拖动新建框,框内拖动移动,拖动右下角圆点缩放。支持在右侧面板直接输入 x1, y1, x2, y2 像素值或百分比,画布会即时响应。
  • 重叠处理:当多个框重叠时,左上角的编号标签条是最佳交互抓手。点击标签条可选中该框,在重叠区重复点击会在堆叠的框之间轮换选中状态,避免拖动冲突。
  • 对齐工具:提供“对齐到 8”功能,将所有框的四条边向上取整至 8 的整数倍,确保宽高落在 8 的网格上,便于与 Latent 网格对齐,同时限制框不会塌缩为 0 面积。

3. 属性编辑与元数据

  • 右侧面板支持编辑总提示词,以及每个框的 label(object/character/text)、caption(外观描述)和 text(文字元素需渲染的具体内容)。
  • 校验规则:caption 允许为空,但 text 框的内容不可为空。若 text 被删空,分区列表上方会出现常驻警告并标红卡片。
  • Meta 标签:以胶囊形式展示,支持回车添加、点击就地编辑及删除操作。

数据流转与编译机制

理解草稿与编译后提示词的区别,是正确使用该插件的关键。

1. 坐标系转换

  • 草稿状态:编辑器保存的草稿采用画布左上角为原点的 [x1, y1, x2, y2] 绝对像素坐标(xyxy 格式)。
  • 编译输出:执行时,节点会将每条坐标减去画布中心点,并重排为 yxyx 格式,最终生成 MOSS-Image 所需的 abs_centralized 提示词。若画布上没有框,草稿将退化为纯文本的 summary caption。

2. 编译结果预览与导出

  • 底部预览区支持在 JSON(规范写法,反斜杠转义)与文本(还原反斜杠,便于阅读)之间切换。
  • 提供“复制”(复制当前编译结果)与“复制草稿”(复制含画布尺寸与原始坐标的完整草稿)功能。若要完整还原编辑状态,必须使用“复制草稿”。

3. Source 输入的容错解析

Advance 节点的 source 输入采用了极度宽松的解析策略,以适应复杂的提示词传递场景:

  • 自动提取:能够自动从夹杂无关文字或代码块的文本中提取 JSON 对象;支持拆解 {"layout": ...} 等外层信封(最多四层)。
  • 语法修补:针对提示词处理中常见的括号转义(如 \( \) 被误认为 JSON 非法转义),解析器会预先修补反斜杠,确保读入节点后 caption 仍保留 \( 。
  • 反解能力:若导入的是已编译的 abs_centralized/yxyx 提示词或旧版提示词,节点会根据当前的 width/height 反解回草稿坐标。若反解后的框超出画布,会围绕中心等比缩放。

前端兼容性与已知限制

  • 前端要求:画布编辑器依赖支持 DOM Widget 的 ComfyUI 前端。若前端版本过低不支持该特性,节点仍可正常运行,但用户需退化为在 layout 文本框中手动编写 JSON。
  • 数据覆盖逻辑:在 Advance 节点中,编辑或粘贴 source 会立即重新应用并载入画布;反之,画布的修改会同步写回 source。只要画布上存在边界框,系统始终以画布草稿为准,刷新界面或执行生成不会重放过期的 source 内容。
© 版权声明

相关文章