你写 sunlight from the left, long shadow falling right,结果模型确实把太阳放在左边——但阴影也朝左拉。或者你要一束强主光,模型却塞给你两束方向相反的同等强度边缘光。眼睛会立刻识别出这种错,看着就是”哪里不对”,只是说不出来。原因是模型把训练集里的光照线索做了平均:大量照片用的是柔和多向的影棚光,所以”单向强光”在统计上反而是少数派。
修法是用专业摄影术语显式说清方向,如果 Prompt 锁不住,就用 IP-Adapter 或 Midjourney --sref 喂一张参考图。
常见原因
按命中率从高到低:
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. 模型本身有强烈的默认布光倾向
Flux dev 默认柔和正面光;SDXL 默认阴天平光;Midjourney v6+ 默认电影感但常常变形。你不重度引导,它就出默认。
如何判断:同 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:
--sref [一张有目标布光的照片 URL] --sw 100 - SDXL / Flux:IP-Adapter,
style_weight=0.7,参考图用单向光的干净照片 - ComfyUI:IP-Adapter Plus,权重 0.65,weight type 选 “style transfer”
参考图必须是单光源很明显的图,不能再放多光源混乱的图。黑白经典人像往往是最干净的参考,因为没有色彩噪音干扰布光读数。
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:先出布光图,再叠主体
商业活儿对阴影方向有硬要求时:
- 先用单向硬光生成一张只表达几何关系的灰调”布光研究”图
- 把它作为 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 层修,别留到后期