ICE-GL-ZY001 · ENV-002/003/004三场景V1批量生成·12候选·对齐苏白风格 · D169
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
@ -1,19 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html><head><meta charset="UTF-8"><title>PROP-003 广告牌 V2 · 修仙世界升级</title>
|
||||
<html><head><meta charset="UTF-8"><title>场景 ENV-002/003/004 · 百宗会·天道宗·灵霄宗</title>
|
||||
<style>
|
||||
body{background:#1a1a1a;color:#ccc;font-family:sans-serif;margin:20px}
|
||||
h2{text-align:center;color:#fff;margin-bottom:5px}
|
||||
.sub{text-align:center;color:#999;font-size:13px;margin-bottom:10px}
|
||||
h2{color:#fff;margin:25px 0 5px;border-top:1px solid #444;padding-top:15px}
|
||||
h2:first-of-type{border:none;padding:0}
|
||||
.sub{color:#999;font-size:13px;margin-bottom:10px}
|
||||
.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:1200px;margin:0 auto}
|
||||
.card{background:#2a2a2a;padding:15px;border-radius:8px;text-align:center}
|
||||
.card img{width:100%;max-height:600px;object-fit:contain}
|
||||
.card p{margin:8px 0 0;font-size:14px;color:#aaa}
|
||||
.card img{width:100%;max-height:500px;object-fit:contain}
|
||||
.card p{margin:8px 0 0;font-size:13px;color:#aaa}
|
||||
</style></head><body>
|
||||
<h2>PROP-003 免费招徒广告牌 V2 · 修仙世界升级</h2>
|
||||
<p class="sub">V1→V2: 石墙小巷→修仙百宗会·灵木A架·粗麻画布无字·仙雾·对齐苏白+牌匾</p>
|
||||
<h2>ENV-002 百宗会广场高空俯瞰</h2>
|
||||
<p class="sub">人山人海·宗门招牌·御剑流光·修仙盛会</p>
|
||||
<div class="grid">
|
||||
<div class="card"><img src="PROP-003-V2-candidate-01-1440x2560.png"><p>候选01 · 正面A架·摊旁·粗麻画布无字·仙雾脚下·冷雅</p></div>
|
||||
<div class="card"><img src="PROP-003-V2-candidate-02-1440x2560.png"><p>候选02 · 微侧·画布微皱·百宗会远景·清冷光影</p></div>
|
||||
<div class="card"><img src="PROP-003-V2-candidate-03-1440x2560.png"><p>候选03 · 正面中景·A架主体留白·摊位桌旁·修仙氛围</p></div>
|
||||
<div class="card"><img src="PROP-003-V2-candidate-04-1440x2560.png"><p>候选04 · 半侧面·绳结清晰·画布粗糙·背景虚化·电影调色</p></div>
|
||||
</div></body></html>
|
||||
<div class="card"><img src="ENV-002-V1-candidate-01-1440x2560.png"><p>候选01 · 高空俯瞰·人山人海·招牌阵列·御剑流光</p></div>
|
||||
<div class="card"><img src="ENV-002-V1-candidate-02-1440x2560.png"><p>候选02 · 云端俯视·万人集会·飞檐帐篷·仙鹤远山</p></div>
|
||||
<div class="card"><img src="ENV-002-V1-candidate-03-1440x2560.png"><p>候选03 · 高空全景·密集人流·各宗招牌灵气环绕</p></div>
|
||||
<div class="card"><img src="ENV-002-V1-candidate-04-1440x2560.png"><p>候选04 · 广角大远景·层叠宗门·人潮涌动·史诗构图</p></div>
|
||||
</div>
|
||||
|
||||
<h2>ENV-003 天道宗摊位 · 角落破旧</h2>
|
||||
<p class="sub">角落位置·杆挂牌匾+广告牌·灵木桌青布·冷寂清雅</p>
|
||||
<div class="grid">
|
||||
<div class="card"><img src="ENV-003-V1-candidate-01-1440x2560.png"><p>候选01 · 破旧摊位·牌匾广告牌清晰·灵木桌青布·冷寂</p></div>
|
||||
<div class="card"><img src="ENV-003-V1-candidate-02-1440x2560.png"><p>候选02 · 角落摊位·牌匾广告牌左右·远焦豪华宗门对比</p></div>
|
||||
<div class="card"><img src="ENV-003-V1-candidate-03-1440x2560.png"><p>候选03 · 中近景·空灵木台·牌匾悬空·冷色调清寂</p></div>
|
||||
<div class="card"><img src="ENV-003-V1-candidate-04-1440x2560.png"><p>候选04 · 最角落·破败冷清·虚化豪华宗门·电影感</p></div>
|
||||
</div>
|
||||
|
||||
<h2>ENV-004 灵霄宗摊位 · 气派华丽</h2>
|
||||
<p class="sub">鎏金牌匾·豪华帐篷·修仙者排队·灵光流转</p>
|
||||
<div class="grid">
|
||||
<div class="card"><img src="ENV-004-V1-candidate-01-1440x2560.png"><p>候选01 · 鎏金牌匾·丝绸帐篷·修仙者长队·灵光点缀</p></div>
|
||||
<div class="card"><img src="ENV-004-V1-candidate-02-1440x2560.png"><p>候选02 · 紫檀桌案灵石法器·排队人群·华贵灵光</p></div>
|
||||
<div class="card"><img src="ENV-004-V1-candidate-03-1440x2560.png"><p>候选03 · 黄金位置·鎏金招牌·豪华帐篷·人群涌动</p></div>
|
||||
<div class="card"><img src="ENV-004-V1-candidate-04-1440x2560.png"><p>候选04 · 灵光流转仙气浓郁·丝绸帷幕·队伍排长</p></div>
|
||||
</div>
|
||||
</body></html>
|
||||
|
||||
139
video-ai-system/tools/env_batch_gen.py
Normal file
@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env python3
|
||||
"""ENV-002/003/004 三场景批量生成 · 对齐苏白V3-R4风格 · 修仙世界"""
|
||||
import os, sys, json, time, subprocess
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path('D:/WorkBuddy/guanghulab/video-ai-system')
|
||||
env = {}
|
||||
for line in open(ROOT/".env"):
|
||||
line = line.strip()
|
||||
if not line or line.startswith("#"): continue
|
||||
if "=" in line:
|
||||
k, v = line.split("=", 1)
|
||||
env[k.strip()] = v.strip()
|
||||
|
||||
AK = env["JIMENG_API_KEY"]
|
||||
URL = env["JIMENG_BASE_URL"]
|
||||
MODEL = "doubao-seedream-4-0-250828"
|
||||
|
||||
SCENES = {
|
||||
"ENV-002": {
|
||||
"name": "百宗会广场全景",
|
||||
"prompt": """中国修仙世界百宗会广场高空俯瞰,大远景。
|
||||
从云端俯瞰修仙界盛大集会,巨大广场人山人海,数不清的修仙者如蚂蚁般穿梭其间。
|
||||
多个豪华宗门招牌林立——鎏金牌匾、灵气光环、飞檐楼阁帐篷,御剑飞行的修仙者化作流光划过天际。
|
||||
广场中央灵雾缭绕,远处群山环抱,仙鹤翱翔。
|
||||
场景宏大震撼,每个宗门摊位都有独特风格和招牌。
|
||||
3D真人向写实渲染,光影清冷自然,不良人硬核写实风格,与CHAR-003苏白V3-R4同一风格体系,电影级大场面。""",
|
||||
"neg": """卡通渲染,赛璐璐,塑料感,游戏低模,廉价3D,页游风,光污染,浮夸光环,土味特效。
|
||||
现代城市,高楼大厦,现代建筑,水泥广场,柏油路,现代人群,西装革履。
|
||||
空无一人的广场,荒凉无人的场景,空旷寂寥。
|
||||
任何文字,汉字,标语。
|
||||
人物面部特写,单一人物占主体。
|
||||
白天正午艳阳,过曝,惨白,画面扁平无层次。
|
||||
黑暗阴森恐怖,末日废墟。
|
||||
这个场景是远景俯瞰,不要近景。""",
|
||||
"variants": [
|
||||
"高空俯瞰百宗会全景,人山人海修仙盛会,豪华宗门招牌阵列,御剑流光划过天空,仙雾缭绕宏大场面",
|
||||
"云端俯视修仙广场,万人集会宗门林立,飞檐帐篷金碧辉煌,仙鹤翱翔远山环抱,电影级鸟瞰",
|
||||
"百宗会广场高空全景,密集修仙者人流穿行,各宗招牌灵气环绕,御剑飞行轨迹优美,震撼修仙界盛况",
|
||||
"俯瞰修仙界盛典,广角大远景,层叠宗门帐篷招牌如星罗棋布,人潮涌动灵雾飘渺,史诗级构图"
|
||||
]
|
||||
},
|
||||
"ENV-003": {
|
||||
"name": "天道宗摊位近景",
|
||||
"prompt": """中国修仙世界百宗会角落,天道宗简陋摊位中近景。
|
||||
角落位置破旧感强烈,一根仙木杆悬挂刻有天道宗的破旧木牌匾,旁边是绳系A架粗麻画布广告牌。
|
||||
摊位是粗糙灵木桌铺着淡青色粗布,桌面上空无一物十分简陋。
|
||||
与远处豪华宗门摊位形成鲜明对比——远处可见气派帐篷和排队人群。
|
||||
脚下淡淡仙雾缭绕,色调偏冷暗清寂,氛围孤独但不阴森。
|
||||
3D真人向写实渲染,不良人硬核写实风格,与CHAR-003苏白V3-R4同一风格体系,画面有电影感。""",
|
||||
"neg": """卡通渲染,塑料感,游戏低模,廉价3D,页游风,光污染。
|
||||
现代建筑,水泥地,柏油路,现代家具,金属桌椅,塑料凳子。
|
||||
豪华摊位,气派装饰,金碧辉煌,华丽场景,热闹喜庆氛围。
|
||||
任何人,人物,角色,修行者,顾客,围观群众。
|
||||
任何文字(除天道宗),无关汉字,标语。
|
||||
晴天艳阳,高饱和度,暖黄色调,金色阳光,鲜艳色彩。
|
||||
过于黑暗,完全漆黑的角落,恐怖片氛围。""",
|
||||
"variants": [
|
||||
"天道宗破旧摊位中景,杆挂牌匾和广告牌清晰,灵木桌青布简陋,远处豪华摊位虚化,冷寂修仙氛围",
|
||||
"角落天道宗摊位,破旧灵木桌铺青布,牌匾广告牌一左一右,脚下仙雾,远焦豪华宗门对比强烈",
|
||||
"天道宗摊位中近景,简陋灵木台上空无一物,牌匾悬空广告牌旁立,冷色调清寂氛围,写实修仙场景",
|
||||
"百宗会最角落的天道宗摊位,破败冷清,牌匾广告牌灵木桌青布,虚化远处的气派宗门摊位,电影感对比"
|
||||
]
|
||||
},
|
||||
"ENV-004": {
|
||||
"name": "灵霄宗摊位近景",
|
||||
"prompt": """中国修仙世界百宗会灵霄宗豪华摊位中近景。
|
||||
气派华丽摊位占据显眼位置,鎏金灵霄宗牌匾悬挂高处光芒流转,牌下豪华帐篷飞檐翘角。
|
||||
排队等候的修仙者队伍蜿蜒如龙,人群拥挤热闹非凡。
|
||||
摊位装饰奢华——丝绸帷幕、紫檀木桌案、灵石法器点缀其间,灵光流转仙气浓郁。
|
||||
与其他简陋摊位(如天道宗)形成强烈视觉对比。
|
||||
3D真人向写实渲染,光影清冷但有灵气光晕点缀,不良人硬核写实风格,与CHAR-003苏白V3-R4同一风格体系,电影级画面。""",
|
||||
"neg": """卡通渲染,塑料感,游戏低模,廉价3D,页游风,光污染过度,土味光效特效。
|
||||
现代建筑,现代广告牌,LED灯箱,霓虹灯,现代排队栏杆,现代装修。
|
||||
简陋摊位,破旧摊位,寒酸场景,贫困感。
|
||||
任何文字(除灵霄宗),无关汉字,标语。
|
||||
空无一人,冷清寥落。
|
||||
过于鲜艳高饱和,过于金黄,暴发户土豪金,粗俗俗气装饰。
|
||||
过于黑暗阴森。""",
|
||||
"variants": [
|
||||
"灵霄宗豪华摊位中景,鎏金牌匾光芒流转,丝绸帐篷飞檐,修仙者长队蜿蜒,灵光点缀华丽场景",
|
||||
"灵霄宗气派摊位,紫檀木桌案灵石法器,排队人群熙攘,华贵装饰灵光流转,与天道宗对比鲜明",
|
||||
"百宗会黄金位置灵霄宗摊位,鎏金招牌醒目,豪华帐篷飞檐翘角,人群涌动络绎不绝,修仙界顶级摊位",
|
||||
"灵霄宗摊位中近景,灵光流转仙气浓郁,丝绸帷幕豪华装饰,队伍排长修仙者众多,电影级光影"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
SEEDS = [777, 888, 999, 111]
|
||||
|
||||
def gen(prompt, neg, seed):
|
||||
body = json.dumps({"model": MODEL, "prompt": prompt, "negative_prompt": neg, "size": "1440x2560", "n": 1, "seed": seed})
|
||||
r = subprocess.run(["curl", "-s", "-m", "120", "--noproxy", "*", "-X", "POST", f"{URL}/images/generations",
|
||||
"-H", f"Authorization: Bearer {AK}", "-H", "Content-Type: application/json", "-d", body],
|
||||
capture_output=True, text=True, timeout=130)
|
||||
try:
|
||||
return json.loads(r.stdout)["data"][0].get("url")
|
||||
except:
|
||||
print(f" API err: {r.stdout[:200]}")
|
||||
return None
|
||||
|
||||
def dl(url, dst):
|
||||
Path(dst).parent.mkdir(parents=True, exist_ok=True)
|
||||
subprocess.run(["curl", "-s", "-m", "120", "-L", "--noproxy", "*", "-o", dst, url], capture_output=True, timeout=130)
|
||||
return os.path.exists(dst) and os.path.getsize(dst) > 1024
|
||||
|
||||
ts = time.strftime("%Y%m%d-%H%M%S")
|
||||
all_meta = {}
|
||||
|
||||
for env_id, cfg in SCENES.items():
|
||||
print(f"\n{'='*40}\n{env_id} · {cfg['name']}\n{'='*40}")
|
||||
OUT = ROOT / f"assets/candidates/D169-VA-05-001/{env_id}"
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
results = []
|
||||
for i, seed in enumerate(SEEDS):
|
||||
var = cfg["variants"][i]
|
||||
full = f"{cfg['prompt']} {var}"
|
||||
print(f" [{i+1}/4] seed={seed}", flush=True)
|
||||
url = gen(full, cfg["neg"], seed)
|
||||
if not url:
|
||||
results.append({"c": i+1, "ok": False, "err": "api"})
|
||||
continue
|
||||
dst = OUT / f"{env_id}-V1-candidate-{i+1:02d}-1440x2560.png"
|
||||
if not dl(url, str(dst)):
|
||||
results.append({"c": i+1, "ok": False, "err": "dl"})
|
||||
continue
|
||||
results.append({"c": i+1, "ok": True, "raw": str(dst), "seed": seed})
|
||||
print(f" -> {dst.name}")
|
||||
time.sleep(3)
|
||||
ok = sum(1 for r in results if r["ok"])
|
||||
print(f" {env_id} 完成: {ok}/4")
|
||||
all_meta[env_id] = {"name": cfg["name"], "ok": ok, "results": results}
|
||||
json.dump({"spec": f"VA-05-001-{env_id}-V1", "ts": ts, **all_meta[env_id], "model": MODEL, "engine": "Seedream"},
|
||||
open(OUT/"generation-meta.json","w",encoding="utf-8"), ensure_ascii=False, indent=2)
|
||||
|
||||
print(f"\n{'='*40}")
|
||||
for env_id, m in all_meta.items():
|
||||
print(f" {env_id} · {m['name']}: {m['ok']}/4")
|
||||
print(f"{'='*40}")
|
||||