你写 sunlight from the left, long shadow falling right,结果模型确实把太阳放在左边,但阴影也朝左拉。或者你要一束强主光,模型却塞给你两束方向相反的同等强度边缘光。眼睛会立刻识别出这种错,看着就是”哪里不对”,只是说不出来。原因是模型把训练集里的光照线索做了平均:大量照片用的是柔和多向的影棚光,所以”committed 的单向强光”在统计上反而是少数派,模型会自动往平均值靠。
最快的修法:在 Prompt 里加上 single light source + 明确方向(hard key light from upper-left at 45 degrees)+ 明确阴影方向(shadows fall down and to the right)。如果还锁不住,就喂一张参考图(Midjourney --sref,或 SDXL/Flux 里的 IP-Adapter)。如果你手里已经有一张成图、只是阴影错了,别从头重抽:用 IC-Light V2 重新打光,它能直接指定光照方向(Left / Right / Top / Bottom)。下面五步从最省事的(改 Prompt)排到最可控的(重打光)。
先对号入座
挑出和你看到的现象一致的那一行,直接跳到对应步骤。
| 现象 | 最可能的原因 | 跳到 |
|---|---|---|
| 光照对了,阴影方向反了 | 没显式说阴影方向 | Step 1 |
| 两束同等强度、方向相反的光 | 多光源没分主次 | Step 1、Step 4 |
| 怎么调都是平光/正面光 | 用词含糊或模型默认倾向 | Step 1、Step 2 |
| Prompt 很细但模型不理 | 互相矛盾的光照线索打架 | Step 4 |
| 已经有一张满意的成图 | 错误阴影已经画死了 | Step 5(重打光) |
常见原因
按命中率从高到低:
1. 光照方向描述含糊
bright lighting、dramatic lighting、cinematic lighting 都是没方向的词。模型没有锚点就只能取平均——平均下来就是”正面柔光箱”或”环境日光”。
如何判断:扫一遍 Prompt 看有没有方向词。如果没有 from the left、key light upper right、backlit 之类,就是没方向。
2. Prompt 里有互相矛盾的光照线索
你写 sunset lighting from behind, golden hour glow 然后又加 studio lighting, soft fill。这俩打架,模型会挑训练集里更常见的那个(一般是影棚)。
如何判断:搜 Prompt 里有没有两个不同的光照描述词。sunset 和 studio 同时出现就是冲突。
3. 没用物理摄影词汇
模型对摄影术语反应很好:Rembrandt lighting、loop lighting、split lighting、rim light from camera left、45-degree backlight。光用日常英语,模型根本定位不到光源位置。
如何判断:Prompt 里没有任何摄影教科书级的布光词。
4. 多个光源没分主次
key light, fill light, rim light 平铺写出来,模型就给你三盏一样亮的灯,看着不自然。真实摄影只有一盏主光,其余都是辅助。
如何判断:Prompt 里有 2+ 光源但没说相对强度。
5. 模型本身有强烈的默认布光倾向
截至 2026 年 6 月:Flux dev(包括 FLUX.2)偏向柔和均匀的正面光;SDXL 默认阴天式平光;Midjourney V7 默认电影感(常常是柔主光 + 边缘光),阴影几何还经常变形。你不重度引导,它就出默认。
如何判断:同一个 Prompt 在两个不同模型上跑,如果都出现同一类光照错误,说明是模型默认在作祟,而不是你的 Prompt 写错。
最短修复路径
Step 1:显式说方向 + 强调单一主光
把模糊的光照词换成具体方向 + 强度:
hard key light from upper-left at 45 degrees, single light source,
soft ambient fill 1/4 strength, shadows fall down and to the right,
long cast shadow, dramatic contrast, no rim light
single light source 这句是关键——告诉模型只能选一个方向。
Step 2:用摄影教科书的布光名
这些词在训练集里被重度标注过:
# 经典命名布光
Rembrandt lighting(暗侧脸颊的三角形光斑)
loop lighting(鼻影小、勾向嘴角)
split lighting(半张脸亮、半张脸暗)
butterfly lighting(主光在相机正上方)
rim lighting from behind, separating subject from background
直接扔一个进 Prompt,比你自己描述几何关系靠谱。
Step 3:参考图锁布光
Prompt 锁不住时上参考图:
- Midjourney(V7):
--sref [一张有目标布光的照片 URL] --sw 100。--sw(风格权重)取值范围0到1000,默认100;布光还是带不过来就往300-500加,--sw 0等于取消参考图。也可以用数字风格码代替 URL。 - SDXL / Flux(ComfyUI):用
IPAdapter Advanced节点,权重约0.65,weight_type选style transfer,参考图用单向光的干净照片。 - 想最大化布光迁移、又不让主体被参考图带跑:改用
IPAdapter Precise Style Transfer节点。SDXL 上从style_boost: 2、权重~0.7起步。这样既保留参考图的布光,又让你的 Prompt 掌控主体和构图。
参考图必须是单光源很明显的图,不能再放多光源混乱的图。黑白经典人像往往是最干净的参考,因为没有色彩噪音把 adapter 带偏。
Step 4:负向 Prompt 拦住”打架”(仅 SD 系)
如果一直出现双光源,负向 Prompt 里加:
multiple light sources, two key lights, ring light, softbox lighting,
flat lighting, ambient overhead light, conflicting shadows,
shadows going in different directions
权重保持常规,超过 1.3 通常是把图整变形,而不是修好布光。
Step 5:用 IC-Light 给成图重打光
如果你已经有一张满意的图、只是阴影错了,不用重抽。IC-Light V2(lllyasviel 出品)是一个重打光模型,它拿你的成图、按你指定的方向重新打光,正好补上基础模型给不了的那种控制。
- 把图导入 ComfyUI 里的 IC-Light V2 工作流(或某个在线 IC-Light 前端)
- 设定初始光照方向预设:
Left、Right、Top或Bottom - 加一句文本描述光源,例如
sunshine from window, left side或warm key light from upper right denoise调低(约0.4-0.5)可以只重打光、不重画主体;想让几何也跟着变就调高
因为 IC-Light 把布光和内容分开决策,投射阴影会跟着你设的方向走,而不是跟着模型的平均默认走。阴影方向必须精确时,这是最可靠的修法。
Step 6:先出布光图,再叠主体
从零生成、且商业活儿对阴影方向有硬要求时:
- 先用一束单向硬光生成一张只表达几何关系的灰调”布光研究”图
- 把它作为 ControlNet 的
depth或normal参考 - 再用真实主体 Prompt + ControlNet 权重
0.8重新生成
这样布光决策和主体决策就分离开来,模型没法把两者揉成平均值。
预防建议
- 维护一份”5-10 个已知好用的布光方向短语”清单(
Rembrandt、45 degree key等) - 想要单向光时永远加上
single light source或dominant key light - IP-Adapter /
--sref库里常备 2-3 张方向干净的参考照片 - 先出小图缩略图核对布光,再去跑高分辨率
- 看缩略图时眯眼检查阴影方向,对不上立刻在 Prompt 层修,别留到后期
怎么确认修好了
正式跑高清前,花 30 秒做这个检查:
- 追一条阴影。挑最明显的一条投射阴影顺着追回去,它应该正对着你设定的主光反方向。你写了”key from upper-left”,阴影就必须朝右下落。
- 数方向。画面里所有投射阴影应该大致平行。出现朝两个方向的阴影,说明你的 Prompt 里还残留着两束打架的光。
- 看明暗交界线。脸或球体上,从亮到暗的过渡线(terminator)应该落在背光那一侧。交界线跑到正面,说明模型还是出了平光/正面光。
- 眯眼测试。缩略图尺寸下,布光应该一眼能看出是从某一侧来的。如果看着”均匀打亮”,方向就没生效,升级到 Step 3(参考图)或 Step 5(IC-Light)。
常见问题
为什么光看着对,阴影却往反方向走?
模型按你的 Prompt 画对了高光方向,但阴影是它自己脑补的,因为你压根没说阴影该往哪落。加一句明确的阴影描述:shadows fall down and to the right。大多数情况这一句就修好了。
我 Prompt 写得很细,模型还是不理,为什么?
基本可以肯定是矛盾线索(原因 2)。模型没法同时满足 golden hour from behind 和 studio softbox,于是挑统计上更常见的那个、丢掉另一个。把”输家”删掉,或用负向 Prompt 拦掉(Step 4)。
能在出图后修阴影方向、不重新生成吗?
能。用 IC-Light V2(Step 5)。它给成图按 Left/Right/Top/Bottom 显式方向重打光、重新推导投射阴影,主体还是你已经满意的那个。
最有用的一句话是哪句?
single light source。它逼模型只锁定一个主导方向,而不是把好几束光取平均,而取平均正是阴影对着干、双边缘光的根因。
Midjourney、SDXL、Flux 之间有区别吗?
根因一样(光照被平均),但工具不同。Midjourney V7 靠 Prompt 措辞 + --sref;SDXL 和 Flux 多了 IP-Adapter 和 ControlNet 做更硬的控制,而且只有 SD/Flux 这一侧能跑 IC-Light 做真正的重打光。
相关阅读
- AI 图片光照冲突怎么修
- AI 图片光照偏暗或不自然怎么调
- AI 图片缺胶片颗粒:5 步还原真实摄影质感
- AI 图片人物肤色不自然:6 类原因 + 6 步修复路径
- AI 图片透视错乱怎么救
- AI 图片过 CG 化怎么拉回自然质感
- AI 图片属性串色:红帽子也把车染红了怎么办
外部参考