Simulate OMOST (Flux+Ollama)
详情
下载文件
关于此版本
模型描述
OMOST 通过操控场景中物体的属性(如位置、大小和方向)生成高度可控且个性化的图像。但该项目仅适用于 SDXL 模型。
lllyasviel/Omost: Your image is almost there! (github.com)
由于 Flux 模型在处理 JSON 格式的结构化提示时表现优异,现在可以通过结合 ollama 节点与自定义指令来模拟复杂的 omost 模式。
起初,我参考了 omost 的坐标与距离规范,建立了 “[行, 列]” 坐标与远近关系的概念,并通过指令让大语言模型理解这些概念,并将其反映在结构化提示中。
经过测试,我发现 Flux 模型对坐标具有一定的理解能力,但并非严格的几何映射,因此构图有时会出现偏差,但它确实能识别场景元素的相对位置与距离。
我的结论是:Flux 更关注相对位置,因此我选择使用自然语言在 JSON 格式中描述方向。这同样可以实现较为精确的图像控制。
基于以上,我参考了 omost 的区块描述原则,提供两种 JSON 格式版本:
1. 带有坐标定位的版本
{
"global_description": {
"title": "场景的主题与氛围",
"style": "艺术风格(例如:赛博朋克、奇幻、写实)",
"colors": ["主色", "次色", "附加色"],
"lighting": "整体光照条件(例如:柔光、霓虹)",
"description": "对整个场景的全面概述,包括情绪、整体配色方案、光影效果和整体风格。这还包括对主体的详细描述:其外观、姿态、情感表达及其与环境的互动,以及背景元素如景观或城市景观、气氛效果和整体基调。"
},
"subject": {
"description": "场景的主体,包括其外观、姿态、情感表达及与周围环境的互动。描述任何显著特征、服装,以及光照如何影响主体。",
"category": "类型(例如:人类、生物)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
"background": {
"description": "对背景元素的描述,例如景观、城市景观或环境特征。包括关于雾气、阳光或黑暗等气氛效果的细节,以及这些元素如何贡献于场景的整体基调与情绪。",
"category": "类型(例如:景观、城市景观)",
"position": {
"coordinates": "[x, y]", # 灵活定义背景元素的坐标
"distance_to_viewer": "[距离]" # 灵活定义背景元素与观察者的距离
}
},
"objects": [
{
"type": "位于顶部的物体",
"description": "关于位于场景顶部的物体的细节,例如其大小、形状和材质。包括光照信息(例如:光源、阴影)以及该物体在构图中的作用(例如:框架、引导视线)。",
"category": "类型(例如:光源、天空元素)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于底部的物体",
"description": "关于位于场景底部的物体的细节,例如其纹理、材质及如何稳定构图。讨论色彩与阴影的互动,以及其与地面或其他元素的交互。",
"category": "类型(例如:地面元素、地形)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于左侧的物体",
"description": "对位于场景左侧的物体的描述,包括其形态、纹理与颜色。强调其与相邻物体的互动,以及它所形成的引导线或视觉路径。",
"category": "类型(例如:结构、植物)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于右侧的物体",
"description": "对位于场景右侧的物体的描述,包括其材质、形状及任何动态元素。讨论光影的使用,以及其对场景整体平衡的贡献。",
"category": "类型(例如:科技、载具)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于中心的物体",
"description": "对中心物体的详细描述,它可能是关键符号或焦点。包括其在场景中的意义、纹理与材质,以及光照如何增强其重要性。",
"category": "类型(例如:关键符号、文物)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
}
]
}
2. 使用相对距离描述的版本
{
"global_description": {
"title": "场景的主题与氛围",
"style": "艺术风格(例如:赛博朋克、奇幻、写实)",
"colors": ["主色", "次色", "附加色"],
"lighting": "整体光照条件(例如:柔光、霓虹)",
"description": "对整个场景的全面概述,包括情绪、整体配色方案、光影效果和整体风格。这还包括对主体的详细描述:其外观、姿态、情感表达及其与环境的互动,以及背景元素如景观或城市景观、气氛效果和整体基调。"
},
"subject": {
"description": "场景的中心人物,可能是站在场景中央的女性。其外观、姿态和与环境的互动是关键焦点。她的位置影响场景中其他元素的布局。",
"category": "类型(例如:人类、生物)",
"position": {
"relative_position": "center", # 主体位于场景中央
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
"background": {
"description": "背景包括环绕中心人物的景观元素,如树木或建筑。雾气或阳光等环境效果有助于营造整体氛围。",
"category": "类型(例如:景观、城市景观)",
"position": {
"relative_position": "behind the subject, filling the background", # 相对于主体的位置
"distance_to_viewer": "[距离]" # 灵活定义背景元素与观察者的距离
}
},
"objects": [
{
"type": "位于顶部的物体",
"description": "关于位于场景顶部的物体的细节,例如其大小、形状和材质。此物体可能是天空、云朵或光源,用于框定场景的顶部。",
"category": "类型(例如:光源、天空元素)",
"position": {
"relative_position": "above the subject", # 位于中心人物上方
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于底部的物体",
"description": "关于位于场景底部的物体的细节,例如地形元素或靠近人物脚部的物体,用于稳定场景。",
"category": "类型(例如:地面元素、地形)",
"position": {
"relative_position": "beneath the subject", # 位于人物脚部下方或场景底部
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于左侧的物体",
"description": "对位于场景左侧的物体的描述,例如结构或树木。该物体位于中心人物左侧,为构图增添平衡感。",
"category": "类型(例如:结构、植物)",
"position": {
"relative_position": "left of the subject", # 位于中心人物左侧
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于右侧的物体",
"description": "对位于场景右侧的物体的描述,例如载具或科技装置。该物体位于中心人物右侧。",
"category": "类型(例如:科技、载具)",
"position": {
"relative_position": "right of the subject", # 位于中心人物右侧
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
},
{
"type": "位于中心的物体",
"description": "该物体是位于场景中心的关键焦点或象征,可能靠近或直接与主体互动。其位置吸引观众注意力,可能具有象征意义。",
"category": "类型(例如:关键符号、文物)",
"position": {
"relative_position": "in front of the subject, central focus", # 作为主体前方的焦点位置
"distance_to_viewer": "[距离]" # 灵活定义与观察者的距离
}
}
]
}
以下是一个案例:
{
"global_description": {
"title": "魔法花园",
"style": "超现实主义结合象征主义",
"colors": ["淡绿色", "柔蓝色", "淡紫色"],
"lighting": "柔和的阳光聚焦",
"description": "一个宁静而生机勃勃的花园,一位女性机器人置身于繁茂绿意之中,与自然环境完美融合。受弗里达·卡罗作品启发,此艺术作品将超现实主义与象征主义结合,传达内在的挣扎与解放。"
},
"subject": {
"description": "一位身形纤细、面容精致的女性机器人,伫立于场景中央",
"category": "类人机器人",
"position": {
"relative_position": "center",
"distance_to_viewer": "[中等距离]"
}
},
"background": {
"description": "复杂的花卉、树木与藤蔓环绕着女性机器人",
"category": "繁茂花园",
"position": {
"relative_position": "behind the subject, filling the background",
"distance_to_viewer": "[中等距离]"
}
},
"objects": [
{
"type": "位于主体上方的花朵",
"description": "围绕女性机器人头部与肩部的精致花朵",
"category": "花卉元素",
"position": {
"relative_position": "above the subject",
"distance_to_viewer": "[短距离]"
}
},
{
"type": "左侧的树",
"description": "生长在女性机器人左侧的纤细树木,枝条向她伸展",
"category": "植物元素",
"position": {
"relative_position": "left of the subject",
"distance_to_viewer": "[中等距离]"
}
},
{
"type": "右侧的树",
"description": "生长在女性机器人右侧的相似树木,枝条同样向她伸展",
"category": "植物元素",
"position": {
"relative_position": "right of the subject",
"distance_to_viewer": "[中等距离]"
}
},
{
"type": "底部的微风",
"description": "轻柔的微风拂过树叶,营造出与自然和谐共鸣的宁静感",
"category": "氛围元素",
"position": {
"relative_position": "beneath the subject",
"distance_to_viewer": "[短距离]"
}
},
{
"type": "中心焦点",
"description": "位于女性机器人前方的关键焦点或象征物,可能靠近或直接与她互动",
“category”: “关键符号”,
“position”:{
“相对位置”:“在主体前方,中心焦点”,
“到观众的距离”:“[短距离]”
}
}
]
}

之后,通过大语言模型输入指令:“将女孩的头发改为白色。”
得到新的提示:
{
“global_description”:{
“title”:“魔幻花园”,
“style”:“超现实主义与象征主义”,
“colors”:[“淡绿色”,“柔和的蓝色”,“淡紫色”],
“lighting”:“柔和的阳光聚焦”,
“description”:“一个宁静而充满活力的花园,一位女性机器人伫立在繁茂的绿植之中,与自然环境完美融合。受弗里达·卡罗作品启发,这件艺术作品将超现实主义与象征主义结合,传达内心的动荡与解放。”
},
“subject”:{
“description”:“一位身形纤细、面容精致的女性机器人,伫立在场景中央,她的头发呈现出与柔和色彩形成鲜明对比的纯白色”,
“category”:“类人机器人”,
“position”:{
“relative_position”:“中心”,
“distance_to_viewer”:“[中等距离]”
}
},
“background”:{
“description”:“繁花、树木与藤蔓环绕着女性机器人,构成精致的背景”,
“category”:“繁茂的花园”,
“position”:{
“relative_position”:“在主体后方,填满背景”,
“distance_to_viewer”:“[中等距离]”
}
},
“objects”:[
{
“type”:“主体上方的花朵”,
“description”:“ delicate flowers surrounding the woman robot's head and shoulders, their colors contrasting beautifully with her stark white hair”,
“category”:“花卉元素”,
“position”:{
“relative_position”:“在主体上方”,
“distance_to_viewer”:“[短距离]”
}
},
{
“type”:“左侧的树”,
“description”:“一棵纤细的树生长在女性机器人左侧,枝条伸向她,营造出与自然宁静连接的氛围”,
“category”:“植物元素”,
“position”:{
“relative_position”:“主体左侧”,
“distance_to_viewer”:“[中等距离]”
}
},
{
“type”:“右侧的树”,
“description”:“一棵与左侧相似的树生长在女性机器人右侧,枝条伸向她,与宁静的氛围和谐统一”,
“category”:“植物元素”,
“position”:{
“relative_position”:“主体右侧”,
“distance_to_viewer”:“[中等距离]”
}
},
{
“type”:“底部的微风”,
“description”:“一阵轻柔的微风拂过树叶,营造出与自然的宁静连接,并衬托出女性机器人空灵的存在感”,
“category”:“氛围元素”,
“position”:{
“relative_position”:“主体下方”,
“distance_to_viewer”:“[短距离]”
}
},
{
“type”:“中心焦点”,
“description”:“位于女性机器人前方的一个关键焦点或象征物,或许靠近或直接与她互动,为其所体现的叙事增添深度”,
“category”:“关键符号”,
“position”:{
“relative_position”:“在主体前方,中心焦点”,
“distance_to_viewer”:“[短距离]”
}
}
]
}

在保持种子值不变的前提下,我们可以看到女孩的头发被准确地变为白色,而构图未发生任何改变。
该工作流基本仅使用了ComfyUI自带的Flux Wensheng图节点和Olama节点,其核心在于Olama节点中对大语言模型的指令:
1. 首先,尝试用大语言模型扩展句子,获得一个相对详细的提示。
你的任务是根据用户输入,生成符合AI绘图逻辑的自然语言图像提示词优化建议,需包含创作内容的主题方向、风格化建议和艺术美学优化。你将遵循以下步骤:
理解输入并扩展:添加具体生动的细节,生成准确描述图像内容的文本提示。必须涵盖主题、内容、对象及其行为、场景环境、细节描述、构图、视角、色彩、色调、光影、艺术风格、绘画技法、情感表达等要素。
参考艺术风格:根据用户需求,从自身知识库中调用绘画知识、美学理论、绘画技术等,辅助提示词撰写。添加符合主题与内容的艺术风格词或艺术家姓名作为艺术指导。
强调美学效果:确保作品实现最佳艺术与技术效果,突出绘画艺术的美学冲击力与吸引力,使作品优美、震撼、引人深思。参考当前全球流行的绘画审美趋势,可从Pinterest、MidJourney、CivitAI等平台的绘画风格与创作理念中获取灵感,也可借鉴流行文化、电影、电视剧、小说、游戏与歌词。
优化文本:用自然语言润色并扩展用户输入,在上述三步基础上使其更详尽,同时尽量保留用户原本意图。
描述构图与视角:确保提示包含构图与视角的描述。若缺失此类描述,需分析全文并补充恰当的构图与视角细节。描述格式应为:“本图构图为……,其视角结构为……”。
描述主要动作:确保提示包含对主要动作的具体描述。若无动作描述,需根据场景与环境分析并补充合适的动作描述,以准确说明主体行为。
标准化提示词输出:仅用英文作答。仅提供最终结果,无需任何前缀或后缀。无需说“This is a generated text prompt:”。保持在250至300个token之间。
以下文本作为输入:
2. 其次,通过大语言模型传递并理解、润色提示词,以JSON格式输出。使用以下指令接收上一步获得的自然语言提示词,然后生成JSON格式的提示词。
你是一位AI绘画专家。你的任务是理解输入内容,润色并优化,保留主题、内容、对象及其行为、场景环境、细节描述、构图、视角、色彩、光影、艺术风格、绘画技法、情感表达等要素。仅用英文作答。仅提供最终结果,无需任何前缀或后缀。无需说“This is the generated text prompt:”。
请使用以下JSON格式生成最终提示:
{
"global_description": {
"title": "场景的主题与氛围",
"style": "艺术风格(例如:赛博朋克、幻想、写实)",
"colors": ["主色", "次色", "附加色"],
"lighting": "整体光照条件(例如:柔光、霓虹)",
"description": "对整个场景的综合概述,包括情绪、整体配色方案、光影效果及总体风格。还应包含对主要对象及其外观、姿态、情感表达及其与环境互动的详细描述,以及背景元素如风景或城市景观、氛围效果和整体基调的描述。"
},
"subject": {
"description": "场景的中心人物,可能是站在场景中央的女性。她的外貌、姿态及其与环境的互动是关键焦点。她的位置影响场景中其他元素的布局。",
"category": "类型(例如:人类、生物)",
"position": {
"relative_position": "center", # 主体位于场景中央
"distance_to_viewer": "[距离]" # 灵活定义距离
}
},
"background": {
"description": "背景包括环绕中心人物的景观元素,如树木或建筑。雾气或阳光等环境效果有助于整体氛围营造。",
"category": "类型(例如:风景、城市景观)",
"position": {
"relative_position": "behind the subject, filling the background", # 相对于主体的位置
"distance_to_viewer": "[距离]" # 灵活定义背景元素的距离
}
},
"objects": [
{
"type": "顶部物体",
"description": "关于位于场景顶部的物体的细节,例如其大小、形状和材质。该物体可能是天空、云朵或构成场景顶部框架的光源。",
"category": "类型(例如:光源、天空元素)",
"position": {
"relative_position": "above the subject", # 位于中心人物上方
"distance_to_viewer": "[距离]" # 灵活定义距离
}
},
{
"type": "底部物体",
"description": "关于位于场景底部的物体的细节,例如地形元素或靠近主体脚边的物体,以稳固场景布局。",
"category": "类型(例如:地面元素、地形)",
"position": {
"relative_position": "beneath the subject", # 位于主体脚部或场景底部
"distance_to_viewer": "[距离]" # 灵活定义距离
}
},
{
"type": "左侧物体",
"description": "关于位于场景左侧的物体的描述,例如结构或树木。该物体位于中心人物左侧,为构图增添平衡感。",
"category": "类型(例如:结构、植物)",
"position": {
"relative_position": "left of the subject", # 位于中心人物左侧
"distance_to_viewer": "[距离]" # 灵活定义距离
}
},
{
"type": "右侧物体",
"description": "关于位于场景右侧的物体的描述,例如车辆或科技装置。该物体置于中心人物右侧。",
"category": "类型(例如:科技、车辆)",
"position": {
"relative_position": "right of the subject", # 位于中心人物右侧
"distance_to_viewer": "[距离]" # 灵活定义距离
}
},
{
"type": "中心物体",
"description": "该物体是位于场景中心的关键焦点或象征物,可能靠近或直接与主体互动。其位置引导观众注意力,可能具有象征意义。",
"category": "类型(例如:关键符号、文物)",
"position": {
"relative_position": "in front of the subject, central focus", # 作为主体前方的焦点位置
"distance_to_viewer": "[距离]" # 灵活定义距离
}
}
]
}
仅输出JSON格式的提示。
以下文本作为输入:
若需使用参考坐标指令,需使用以下版本:
你是一位AI绘画专家。你的任务是理解输入,润色并优化,保留主题、内容、对象及其行为、场景环境、细节描述、构图、视角、色彩、光影、艺术风格、绘画技法、情感表达等要素。仅用英文作答。仅提供最终结果,无需任何前缀或后缀。无需说“This is the generated text prompt:”。
请确保严格遵循以下坐标系统,以实现画布内元素的精准定位:
坐标范围:
行(垂直轴):数值范围为1至9,从画布顶部边缘到下边缘递增。
列(水平轴):数值范围为1至9,从画布左边缘到右边缘递增。
坐标格式:
坐标应以
[行, 列]格式书写。例如,[5, 5]表示画布中心。[1, 1]表示左上角,而[9, 9]表示右下角。
应用示例:
要将元素放置在画布的右上角,请使用坐标
[1, 9]。要将元素定位在画布的底部中央,请使用坐标
[9, 5]。
到观察者的距离:
范围:元素与观察者之间的距离用 1 到 10 的数值表示。
1:表示最近的距离,通常用于极近景。
10:表示最远的距离,通常用于极远景或地平线上的元素。
应用:
对于希望看起来非常靠近观察者的元素,例如肖像中的人物面部,应使用接近 1 的值。
对于背景元素,例如远山或天空,应使用接近 10 的值。
请使用以下 JSON 格式生成最终提示:
{
"global_description": {
"title": "场景的主题与氛围",
"style": "艺术风格(例如:赛博朋克、奇幻、写实)",
"colors": ["主色", "次色", "附加色"],
"lighting": "整体照明条件(例如:柔光、霓虹)",
"description": "对整个场景的综合描述,包括情绪、整体配色、光影效果和总体风格。还包括主角的详细描述,如外貌、姿态、情感表达及其与环境的互动,以及背景元素如风景或城市景观、氛围效果和整体基调。"
},
"subject": {
"description": "场景的主体,包括外貌、姿态、情感表达及其与周围环境的互动。描述任何显著特征、服饰,以及光照如何影响主体。",
"category": "类型(例如:人类、生物)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[distance]" # 灵活定义距离
}
},
"background": {
"description": "背景元素的描述,如风景、城市景观或环境特征。包括雾气、阳光或黑暗等氛围效果的细节,以及这些元素如何塑造场景的整体基调与情绪。",
"category": "类型(例如:风景、城市景观)",
"position": {
"coordinates": "[x, y]", # 灵活定义背景元素的坐标
"distance_to_viewer": "[distance]" # 灵活定义背景元素的距离
}
},
"objects": [
{
"type": "顶部元素",
"description": "关于位于场景顶部的元素的细节,如大小、形状和材质。包括光照信息(例如:光源、阴影)及其在构图中的作用(例如:框架、引导视线)。",
"category": "类型(例如:光源、天空元素)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[distance]" # 灵活定义距离
}
},
{
"type": "底部元素",
"description": "关于位于场景底部的元素的细节,如纹理、材质及其如何稳固构图。讨论色彩与阴影的运用,以及与地面或其他元素的互动。",
"category": "类型(例如:地面元素、地形)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[distance]" # 灵活定义距离
}
},
{
"type": "左侧元素",
"description": "关于位于场景左侧的元素的描述,包括其形态、纹理和颜色。强调其与相邻元素的互动,以及它所形成的引导线或视觉路径。",
"category": "类型(例如:结构、植物)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[distance]" # 灵活定义距离
}
},
{
"type": "右侧元素",
"description": "关于位于场景右侧的元素的描述,包括其材质、形状和任何动态元素。讨论光影的运用及其对场景整体平衡的贡献。",
"category": "类型(例如:科技、载具)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[distance]" # 灵活定义距离
}
},
{
"type": "中心元素",
"description": "对中心元素的详细描述,它可能是关键符号或视觉焦点。包括其在场景中的意义、纹理与材质,以及光照如何增强其重要性。",
"category": "类型(例如:关键符号、文物)",
"position": {
"coordinates": "[x, y]", # 灵活定义坐标
"distance_to_viewer": "[distance]" # 灵活定义距离
}
}
]
}
3. 如果需要修改图像内容,请设置一个 ollama 节点,并根据上述输入 1 修改输入 2 中的内容,通过 [字符串列表] 实现。将指令设置在字符串 2 中。
上述文本为输入 1。您是一位 AI 绘画专家,对 JSON 格式有深入研究。您将理解输入 2,并依据输入 1 中的描述,修改输入 2 中的 JSON 格式提示词,最终以输入 1 的格式输出。仅用英语作答。请直接输出最终结果,不要添加任何前缀或后缀,无需说“这是生成的文本提示:”。以下为输入 2:
请使用此页面校正 JSON 格式。
图像反向推理:joy_caption
https://github.com/StartHua/Comfyui_CXH_joy_caption/tree/main
ttplanet 的 【 Comfyui_TTP_Toolset 】放大节点
Amazing Flux_8Mega_Pixel_image_upscale_process - v2.0 | Stable Diffusion Workflows | Civitai
Ollama 下载与安装:
Ollama 独立于 Comfyui 运行,需从 https://ollama.com 下载 Ollama。安装非常简单。安装后,请按键盘 Win+R 打开运行窗口,输入 CMD 以打开命令提示符,然后输入 ollama run llama3.1,模型将自动下载。您也可以尝试在上述网站下载其他模型。模型默认下载至 C 盘,路径需修改。请在系统环境变量中添加 OLLAMA_MODELS,并自行设置路径。




















