feat(ai-art): 路径C扩展东/北立面+阳台侧面标准件

- 工具: _run_pathc_fuse 参数化 south/north/east/west 四立面(英文key)
- 标准件: 新增阳台侧面(bside),厨卫窄窗注释改为山墙/北立面
- prompt: 东立面/北立面路径C窗户字汇表 v1
- 生成结果: 东立面/北立面 fusion 首图各1张+阳台侧面标准件
This commit is contained in:
2026-06-25 18:46:38 +08:00
parent 010fb4d1cf
commit f256e7113a
12 changed files with 182 additions and 12 deletions
@@ -0,0 +1,39 @@
图1是我的风格参考(《深夏时光》游戏截图)——只用它的画法与色调,不要它的内容。
图2是我的外立面参考(中国城郊居民楼的真实照片)——取它的材质质感、年代感、色调倾向,【不要照搬它具体的窗户形态和楼层布局,尤其不要照搬它底部的半地下室】。
图3是我的【窗户字汇表】——里面纵向列了多种窗户样式(卧室普通窗 / 阳台正面 / 阳台侧面 / 楼梯间窗 / 厨卫窄窗),每种都是正投影、平涂色块的【结构示意图】。这是窗户的"几何模具"。
任务:用图1的画法、图2的质感,画【一个单元】的【东立面正投影图】(正对东山墙、无透视)。每个位置的窗户要从图3字汇表里选用对应窗型的几何结构。
【⚠️ 图3字汇表怎么用——成败关键】
- 字汇表只提供窗户的【几何结构】,【绝不照搬它的灰平涂工程图外观】
- 必须用图1的 cel-shaded 画法,把选中的窗户【重新渲染】成有玻璃质感、暖色调、与墙面融为一体的样子——【严禁出现灰平涂的工程图窗户贴在暖色立面上的割裂感】
【东立面布局——每层从左到右严格4段】
1. 阳台侧面 —— 一个外凸阳台的侧面(端墙)
2. 厨卫窄窗
3. 厨卫窄窗
4. 阳台侧面 —— 另一个外凸阳台的侧面(端墙)
即:【两侧各一个阳台侧面,中间是两个窄窗】。
【各位置选窗型——严格对照图3字汇表】
- 位置1、4(两侧)→ 图3【阳台侧面】(外凸阳台的端墙:底部实心矮墙 + 上部1对2扇推拉窗,每扇宽高比1:2、把手在两端)。这是窄端墙,【只有1对窗,绝对不是阳台正面的6扇,也不是落地窗】
- 位置2、3(中间)→ 图3【厨卫窄窗】(单扇外开窄窗,竖长方形宽高比1:2)
【阳台侧面的立体关系——本次重点】
- 位置1、4 是南侧两个外凸阳台(向南凸出约1.2米)从东侧看露出的【端墙】
- 阳台侧面较窄(宽约1.2米),结构是【底部矮墙 + 上部1对窗】,与阳台【正面】(6扇宽面)明显不同
- 【严禁】把阳台侧面画成6扇正面、或画成从地到顶的落地窗——下半截必须是实心矮墙
【⚠️ 禁止半地下室——不要照搬参考图底部】
- 一楼住户层【直接落在地面】,下方【不得有任何半地下室/架空层/储物层/采光井/低矮小窗层】
- 参考图(图2)底部有半地下室,【严禁照搬】
【视角与背景】
- 严格正投影东立面,正对东山墙,无透视
- 纯白背景,无环境,只画这个单元
【其他】
- 共4-7层,每层布局相同
- 风格:明显低多边形、cel-shaded 色块、硬边、暖色调
游戏概念艺术,干净剪影,模块化资产
@@ -0,0 +1,49 @@
图1是我的风格参考(《深夏时光》游戏截图)——只用它的画法与色调,不要它的内容。
图2是我的外立面参考(中国城郊居民楼的真实照片)——取它的材质质感、年代感、色调倾向,【不要照搬它具体的窗户形态和楼层布局,尤其不要照搬它底部的半地下室】。
图3是我的【窗户字汇表】——里面纵向列了多种窗户样式(卧室普通窗 / 阳台正面 / 阳台侧面 / 楼梯间窗 / 厨卫窄窗),每种都是正投影、平涂色块的【结构示意图】。这是窗户的"几何模具"。
任务:用图1的画法、图2的质感,画【一个单元】的【北立面正投影图】(正对北墙、无透视)。每个位置的窗户要从图3字汇表里选用对应窗型的几何结构。
【⚠️ 图3字汇表怎么用——成败关键】
- 字汇表只提供窗户的【几何结构】,【绝不照搬它的灰平涂工程图外观】
- 必须用图1的 cel-shaded 画法,把选中的窗户【重新渲染】成有玻璃质感、暖色调、与墙面融为一体的样子——【严禁出现灰平涂的工程图窗户贴在暖色立面上的割裂感】
【北立面布局——每层从左到右严格6段】
1. 外凸阳台 —— 阳台正面(6扇)
2. 卧室1 —— 窄窗
3. 卧室2 —— 窄窗
4. 卧室2 —— 窄窗
5. 卧室1 —— 窄窗
6. 外凸阳台 —— 阳台正面(6扇)
即:【两端各一个外凸阳台,中间是 4 个卧室】。
【各位置选窗型——严格对照图3字汇表】
- 位置1、6(两端阳台)→ 图3【阳台正面】(外凸全高阳台:底部实心矮墙 + 中部三对推拉共6扇窗 + 顶部实墙,每扇宽高比1:2。【严禁落地窗、严禁两扇大窗】)
- 位置2、3、4、5(4个卧室)→ 图3【厨卫窄窗】(单扇外开窄窗,竖长方形宽高比1:2)
- 【⚠️ 反误区·最重要】北立面的 4 个卧室【全部用窄窗】,【不要】用图3里的「卧室普通窗」(两扇推拉那种)!北面卧室是小卧室、开窄窗
【阳台立体关系】
- 位置1、6 是外凸阳台(向外凸出),全楼层高,上下层连续叠放
- 阳台正面:底部矮墙 + 6扇窗(非落地窗)
【⚠️ 无单元门——本次重点】
- 北立面【没有单元门】(单元门在南侧中央)。北立面底层【中央是卧室2的连续墙面,不开门、不凹进】
- 不要在北立面画任何入口门或凹进门洞
【⚠️ 禁止半地下室——不要照搬参考图底部】
- 一楼住户层【直接落在地面】,下方【不得有任何半地下室/架空层/储物层/采光井/低矮小窗层】
- 参考图(图2)底部有半地下室,【严禁照搬】
【宽度与对称】
- 整体宽度与南立面(同一单元)一致,是横向长立面
- 6 段左右对称:两端阳台段最宽(各约占20%),4 个卧室段较窄(各约占15%)
【视角与背景】
- 严格正投影北立面,正对北墙,无透视
- 纯白背景,无环境,只画这个单元
【其他】
- 共4-7层,每层布局相同
- 风格:明显低多边形、cel-shaded 色块、硬边、暖色调
游戏概念艺术,干净剪影,模块化资产
@@ -0,0 +1,21 @@
【任务】画一个外凸阳台【侧面】的【正交立面结构示意图】——即正对阳台的左侧(或右侧)端墙看过去的立面,只表达几何结构,不表达材质质感与光照。
【严格正交·平涂色块·无渲染——必须严格遵守】
- 严格正交投影正面(orthographic front elevation):完全正对阳台的侧面端墙;【绝对无透视、无消失点——四边是纯直线直角,不向内收、不带立体转角】
- 平涂纯色填充(flat solid color):窗框用中灰色、玻璃用浅灰蓝色、矮墙用浅灰色,各自均匀纯色块;【严禁任何光照、阴影、投影、渐变、材质纹理、lowpoly块面】
- 整体风格像建筑立面结构图(architectural elevation diagram),扁平、干净、无立体渲染感
- 纯白背景,画面里只有阳台侧面这一个部件
【阳台侧面结构·从下到上】
- 底部约1/3高:实心矮墙(浅灰色块)
- 中部约1/2高:侧面窗组(浅灰蓝玻璃 + 中灰窗框)
- 顶部约1/6高:实墙(浅灰色块)
【侧面窗组——必须比阳台正面窄,这是关键】
- 阳台侧面是外凸方向的端墙,宽度只有外凸深度(约1.2米),【比阳台正面(约4.2米、6扇)窄得多】
- 侧面窗组就是【一对推拉窗】(共2扇),每扇宽高比1:2(竖长方形),把手在该对窗的最左与最右端、左右对称
- 【关键反误区】这是阳台的【侧面】不是【正面】:正面是 6 扇大宽面,侧面是窄端墙、只有 1 对窗。【严禁画成 6 扇】
【禁止】
- 阳台内部清空,不要任何物品(无植物、家具、杂物)
- 本图只画侧面正投影,不要画正面、不要俯视、不要轴测
+2 -1
View File
@@ -26,8 +26,9 @@ OUT = PARTS_DIR / "标准件合集图.png"
ITEMS = [
("标准件-普通窗-卧室.png", "卧室普通窗", "Bedroom window — 2-panel sliding", "约1.4m宽 · 两扇推拉 · 每扇宽高比1:2 · 把手在两端"),
("260623-160342_gpt-image-2_gen.png", "阳台正面", "Balcony front — 6-panel sliding", "约4.2m宽 · 三对推拉共6扇 · 每扇宽高比1:2"),
("260624-134345_gpt-image-2_gen.png", "阳台侧面", "Balcony side — 2-panel", "外凸阳台端墙 · 约1.2m宽 · 矮墙+1对窗 · 比正面窄得多"),
("260623-181251_gpt-image-2_gen.png", "楼梯间窗", "Stairwell window", "横向小条窗 · 宽>高约2:1 · 楼梯休息平台处的小窗"),
("标准件-窄窗-厨卫-新版.png", "厨卫窄窗", "Kitchen/bath narrow window", "约0.7m宽 · 单扇外开 · 宽高比1:2(南立面不用,北立面用)"),
("标准件-窄窗-厨卫-新版.png", "厨卫窄窗", "Kitchen/bath narrow window", "约0.7m宽 · 单扇外开 · 宽高比1:2(山墙/北立面用)"),
]
@@ -30,6 +30,7 @@ PARTS = {
"bedroom": ("普通窗-卧室", "1024x1024"),
"narrow": ("窄窗-厨卫", "1024x1024"),
"stair": ("楼梯间窗", "1024x1024"),
"bside": ("阳台侧面", "1024x1024"),
}
keys = sys.argv[1:] or ["front", "axo"]
+28 -11
View File
@@ -1,30 +1,47 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
路径C组装:apiyi 三图融合(风格 + 外立面 + 窗户字汇表)→ 单元南立面。
在 Python 内部用绝对路径调 cmd_fuse,避开 Windows shell 传中文路径给 Python argv 的 GBK 乱码坑。
路径C立面组装:apiyi 三图融合(风格 + 外立面 + 窗户字汇表)→ 指定立面。
在 Python 内部用绝对路径调 cmd_fuse,避开 Windows shell 传中文路径给 argv 的 GBK 乱码坑。
注意:不在这里重定向 stdout/stderr —— image_gen.py 已做,重复包装会关闭底层 buffer。
注意:image_gen.py 的 cmd_fuse 当前硬编码 size=1024x1024(方图)。
路径C首图先用方图验证「三图融合能否成功 + 窗户准确度」;
若窗户对、只是横向比例挤,再改 cmd_fuse 支持 size 出 1536x1024 横图。
用法(英文 key,避开中文 argv):
python _run_pathc_fuse.py # 默认 south
python _run_pathc_fuse.py south # 南立面
python _run_pathc_fuse.py east # 东立面
python _run_pathc_fuse.py west # 西立面
"""
import sys
from pathlib import Path
# 注意:不在这里重定向 stdout/stderr —— image_gen.py 开头已做 TextIOWrapper(UTF-8) 重定向,
# 重复包装同一个 buffer 会导致底层文件被提前关闭("I/O operation on closed file")。
HERE = Path(__file__).resolve().parent # tools/
RESEARCH = HERE.parent # ai-art-research/
sys.path.insert(0, str(HERE))
from image_gen import get_client, cmd_fuse
# 三张参考图(南/东/西立面通用)
STYLE = RESEARCH / "参考图" / "游戏截图" / "深夏时光" / "深夏时光-下午-街景.png"
CONTENT = [
RESEARCH / "参考图" / "真实场景" / "东井村" / "QQ20260616-174350.png",
RESEARCH / "生成结果" / "窗户标准件" / "标准件合集图.png",
]
PROMPT_FILE = RESEARCH / "prompts" / "居民楼-单元南立面-路径C-窗户字汇表-v2.txt"
# 英文 key → (prompt 文件名, 输出子目录)
ELEVATIONS = {
"south": ("居民楼-单元南立面-路径C-窗户字汇表-v2.txt", "路径C组装"),
"north": ("居民楼-单元北立面-路径C-窗户字汇表-v1.txt", "路径C北立面"),
"east": ("居民楼-单元东立面-路径C-窗户字汇表-v1.txt", "路径C东立面"),
"west": ("居民楼-单元西立面-路径C-窗户字汇表-v1.txt", "路径C西立面"),
}
key = sys.argv[1] if len(sys.argv) > 1 else "south"
if key not in ELEVATIONS:
print(f"❌ 未知立面 key: {key} (可用: {' '.join(ELEVATIONS)})")
sys.exit(1)
PROMPT_NAME, SUBDIR = ELEVATIONS[key]
PROMPT_FILE = RESEARCH / "prompts" / PROMPT_NAME
print(f"=== 立面 [{key}] prompt: {PROMPT_NAME} → 生成结果/{SUBDIR}/ ===")
for p in [STYLE] + CONTENT + [PROMPT_FILE]:
if not p.exists():
@@ -34,12 +51,12 @@ for p in [STYLE] + CONTENT + [PROMPT_FILE]:
prompt = PROMPT_FILE.read_text(encoding="utf-8")
client = get_client()
# cmd_fuse 上传顺序 = [style, *content],与 prompt 里 图1=风格/图2=外立面/图3=窗户表 的编号一致
# cmd_fuse 上传顺序 = [style, *content],与 prompt 里 图1=风格/图2=外立面/图3=窗户表 一致
cmd_fuse(
client,
style_path=str(STYLE),
content_paths=[str(c) for c in CONTENT],
prompt=prompt,
model=None,
subdir="路径C组装",
subdir=SUBDIR,
)
@@ -0,0 +1,9 @@
{
"model": "gpt-image-2",
"prompt": "【任务】画一个外凸阳台【侧面】的【正交立面结构示意图】——即正对阳台的左侧(或右侧)端墙看过去的立面,只表达几何结构,不表达材质质感与光照。\n\n【严格正交·平涂色块·无渲染——必须严格遵守】\n- 严格正交投影正面(orthographic front elevation):完全正对阳台的侧面端墙;【绝对无透视、无消失点——四边是纯直线直角,不向内收、不带立体转角】\n- 平涂纯色填充(flat solid color):窗框用中灰色、玻璃用浅灰蓝色、矮墙用浅灰色,各自均匀纯色块;【严禁任何光照、阴影、投影、渐变、材质纹理、lowpoly块面】\n- 整体风格像建筑立面结构图(architectural elevation diagram),扁平、干净、无立体渲染感\n- 纯白背景,画面里只有阳台侧面这一个部件\n\n【阳台侧面结构·从下到上】\n- 底部约1/3高:实心矮墙(浅灰色块)\n- 中部约1/2高:侧面窗组(浅灰蓝玻璃 + 中灰窗框)\n- 顶部约1/6高:实墙(浅灰色块)\n\n【侧面窗组——必须比阳台正面窄,这是关键】\n- 阳台侧面是外凸方向的端墙,宽度只有外凸深度(约1.2米),【比阳台正面(约4.2米、6扇)窄得多】\n- 侧面窗组就是【一对推拉窗】(共2扇),每扇宽高比1:2(竖长方形),把手在该对窗的最左与最右端、左右对称\n- 【关键反误区】这是阳台的【侧面】不是【正面】:正面是 6 扇大宽面,侧面是窄端墙、只有 1 对窗。【严禁画成 6 扇】\n\n【禁止】\n- 阳台内部清空,不要任何物品(无植物、家具、杂物)\n- 本图只画侧面正投影,不要画正面、不要俯视、不要轴测\n",
"mode": "text_to_image",
"style_prefix_used": false,
"size": "1024x1024",
"quality": "medium",
"timestamp": "2026-06-24T13:43:45.597127"
}
@@ -0,0 +1,12 @@
{
"model": "gpt-image-2",
"prompt": "图1是我的风格参考(《深夏时光》游戏截图)——只用它的画法与色调,不要它的内容。\n图2是我的外立面参考(中国城郊居民楼的真实照片)——取它的材质质感、年代感、色调倾向,【不要照搬它具体的窗户形态和楼层布局,尤其不要照搬它底部的半地下室】。\n图3是我的【窗户字汇表】——里面纵向列了多种窗户样式(卧室普通窗 / 阳台正面 / 阳台侧面 / 楼梯间窗 / 厨卫窄窗),每种都是正投影、平涂色块的【结构示意图】。这是窗户的\"几何模具\"。\n\n任务:用图1的画法、图2的质感,画【一个单元】的【东立面正投影图】(正对东山墙、无透视)。每个位置的窗户要从图3字汇表里选用对应窗型的几何结构。\n\n【⚠️ 图3字汇表怎么用——成败关键】\n- 字汇表只提供窗户的【几何结构】,【绝不照搬它的灰平涂工程图外观】\n- 必须用图1的 cel-shaded 画法,把选中的窗户【重新渲染】成有玻璃质感、暖色调、与墙面融为一体的样子——【严禁出现灰平涂的工程图窗户贴在暖色立面上的割裂感】\n\n【东立面布局——每层从左到右严格4段】\n1. 阳台侧面 —— 一个外凸阳台的侧面(端墙)\n2. 厨卫窄窗\n3. 厨卫窄窗\n4. 阳台侧面 —— 另一个外凸阳台的侧面(端墙)\n即:【两侧各一个阳台侧面,中间是两个窄窗】。\n\n【各位置选窗型——严格对照图3字汇表】\n- 位置1、4(两侧)→ 图3【阳台侧面】(外凸阳台的端墙:底部实心矮墙 + 上部1对2扇推拉窗,每扇宽高比1:2、把手在两端)。这是窄端墙,【只有1对窗,绝对不是阳台正面的6扇,也不是落地窗】\n- 位置2、3(中间)→ 图3【厨卫窄窗】(单扇外开窄窗,竖长方形宽高比1:2)\n\n【阳台侧面的立体关系——本次重点】\n- 位置1、4 是南侧两个外凸阳台(向南凸出约1.2米)从东侧看露出的【端墙】\n- 阳台侧面较窄(宽约1.2米),结构是【底部矮墙 + 上部1对窗】,与阳台【正面】(6扇宽面)明显不同\n- 【严禁】把阳台侧面画成6扇正面、或画成从地到顶的落地窗——下半截必须是实心矮墙\n\n【⚠️ 禁止半地下室——不要照搬参考图底部】\n- 一楼住户层【直接落在地面】,下方【不得有任何半地下室/架空层/储物层/采光井/低矮小窗层】\n- 参考图(图2)底部有半地下室,【严禁照搬】\n\n【视角与背景】\n- 严格正投影东立面,正对东山墙,无透视\n- 纯白背景,无环境,只画这个单元\n\n【其他】\n- 共4-7层,每层布局相同\n- 风格:明显低多边形、cel-shaded 色块、硬边、暖色调\n\n游戏概念艺术,干净剪影,模块化资产\n",
"mode": "multi_reference_fusion",
"style_reference": "C:\\MiceCola\\Indi\\ChildHood\\ai-art-research\\参考图\\游戏截图\\深夏时光\\深夏时光-下午-街景.png",
"content_references": [
"C:\\MiceCola\\Indi\\ChildHood\\ai-art-research\\参考图\\真实场景\\东井村\\QQ20260616-174350.png",
"C:\\MiceCola\\Indi\\ChildHood\\ai-art-research\\生成结果\\窗户标准件\\标准件合集图.png"
],
"size": "1024x1024",
"timestamp": "2026-06-24T13:46:46.659000"
}
@@ -0,0 +1,12 @@
{
"model": "gpt-image-2",
"prompt": "图1是我的风格参考(《深夏时光》游戏截图)——只用它的画法与色调,不要它的内容。\n图2是我的外立面参考(中国城郊居民楼的真实照片)——取它的材质质感、年代感、色调倾向,【不要照搬它具体的窗户形态和楼层布局,尤其不要照搬它底部的半地下室】。\n图3是我的【窗户字汇表】——里面纵向列了多种窗户样式(卧室普通窗 / 阳台正面 / 阳台侧面 / 楼梯间窗 / 厨卫窄窗),每种都是正投影、平涂色块的【结构示意图】。这是窗户的\"几何模具\"。\n\n任务:用图1的画法、图2的质感,画【一个单元】的【北立面正投影图】(正对北墙、无透视)。每个位置的窗户要从图3字汇表里选用对应窗型的几何结构。\n\n【⚠️ 图3字汇表怎么用——成败关键】\n- 字汇表只提供窗户的【几何结构】,【绝不照搬它的灰平涂工程图外观】\n- 必须用图1的 cel-shaded 画法,把选中的窗户【重新渲染】成有玻璃质感、暖色调、与墙面融为一体的样子——【严禁出现灰平涂的工程图窗户贴在暖色立面上的割裂感】\n\n【北立面布局——每层从左到右严格6段】\n1. 外凸阳台 —— 阳台正面(6扇)\n2. 卧室1 —— 窄窗\n3. 卧室2 —— 窄窗\n4. 卧室2 —— 窄窗\n5. 卧室1 —— 窄窗\n6. 外凸阳台 —— 阳台正面(6扇)\n即:【两端各一个外凸阳台,中间是 4 个卧室】。\n\n【各位置选窗型——严格对照图3字汇表】\n- 位置1、6(两端阳台)→ 图3【阳台正面】(外凸全高阳台:底部实心矮墙 + 中部三对推拉共6扇窗 + 顶部实墙,每扇宽高比1:2。【严禁落地窗、严禁两扇大窗】)\n- 位置2、3、4、5(4个卧室)→ 图3【厨卫窄窗】(单扇外开窄窗,竖长方形宽高比1:2)\n- 【⚠️ 反误区·最重要】北立面的 4 个卧室【全部用窄窗】,【不要】用图3里的「卧室普通窗」(两扇推拉那种)!北面卧室是小卧室、开窄窗\n\n【阳台立体关系】\n- 位置1、6 是外凸阳台(向外凸出),全楼层高,上下层连续叠放\n- 阳台正面:底部矮墙 + 6扇窗(非落地窗)\n\n【⚠️ 无单元门——本次重点】\n- 北立面【没有单元门】(单元门在南侧中央)。北立面底层【中央是卧室2的连续墙面,不开门、不凹进】\n- 不要在北立面画任何入口门或凹进门洞\n\n【⚠️ 禁止半地下室——不要照搬参考图底部】\n- 一楼住户层【直接落在地面】,下方【不得有任何半地下室/架空层/储物层/采光井/低矮小窗层】\n- 参考图(图2)底部有半地下室,【严禁照搬】\n\n【宽度与对称】\n- 整体宽度与南立面(同一单元)一致,是横向长立面\n- 6 段左右对称:两端阳台段最宽(各约占20%),4 个卧室段较窄(各约占15%)\n\n【视角与背景】\n- 严格正投影北立面,正对北墙,无透视\n- 纯白背景,无环境,只画这个单元\n\n【其他】\n- 共4-7层,每层布局相同\n- 风格:明显低多边形、cel-shaded 色块、硬边、暖色调\n\n游戏概念艺术,干净剪影,模块化资产\n",
"mode": "multi_reference_fusion",
"style_reference": "C:\\MiceCola\\Indi\\ChildHood\\ai-art-research\\参考图\\游戏截图\\深夏时光\\深夏时光-下午-街景.png",
"content_references": [
"C:\\MiceCola\\Indi\\ChildHood\\ai-art-research\\参考图\\真实场景\\东井村\\QQ20260616-174350.png",
"C:\\MiceCola\\Indi\\ChildHood\\ai-art-research\\生成结果\\窗户标准件\\标准件合集图.png"
],
"size": "1024x1024",
"timestamp": "2026-06-24T13:54:09.055019"
}