你画了一个厨房场景,桌子被压扁贴在镜头前——没有地平线、没有深度。或者楼梯”往上”走,透视线却朝旁边。或者人物的头占了身高的一半。内容是对的,但空间完全不合理。
最快的修法: 在 Prompt 的最前面加一段 5-7 个词的相机块——[焦段] + [视点] + [透视风格]——比如 wide-angle 24mm, eye level, two-point perspective, ...。光这一步就能修好 Midjourney、ChatGPT Images、Gemini 的 Nano Banana 里 60-70% 的透视和比例问题。本文后面会讲其余的几类原因,以及给建筑场景用的硬锁方案(ControlNet Depth)。
透视和比例会崩,是因为 Prompt 没给模型任何空间锚——没焦段、没视点、没透视风格。缺了这些,模型只能在几千种可能的相机设置上取平均,画出一个混乱的中间值。
你属于哪一类?
| 画面里的症状 | 最可能的原因 | 跳到 |
|---|---|---|
| 环境扁平,没深度也没地平线 | 没写焦段 / 镜头词 | 原因 1 |
| 构图死板正对,没有角度 | 没写视点词 | 原因 2 |
| 物体之间大小关系不可能成立 | 物体太多互相抢尺度 | 原因 3 |
| 主体被丑陋裁切或拉伸 | 长宽比和主体打架 | 原因 4 |
| 几何自相矛盾(说不上哪不对但就是错) | 透视线索互相冲突 | 原因 5 |
| 线条弯曲、融化、就是不收敛 | 风格词本身破透视 | 原因 6 |
常见原因
按命中率从高到低排列。
1. 没指定焦段
不写镜头词——wide-angle、telephoto、24mm、85mm——模型就挑一个通用中焦段。近景还行,但环境会被压扁或畸变。写明焦段,等于逼模型模拟真实光学物理:广角(16-24mm)夸大深度、拉伸边缘;长焦(85mm 以上)压缩深度、突出主体。Google 自家的 Nano Banana 提示词指南(2026 年 6 月)就是这么建议的——用 wide-angle lens”展现宏大尺度”、macro lens”表现精细细节”——所以这套方法在所有主流模型上都依然有效,不只是 Stable Diffusion。
如何判断: Prompt 里没有镜头 / 焦段词,补一个。
2. 没指定视点
eye level、low angle、high angle、bird's eye view、dutch angle——挑一个。不写视点,模型就默认平视,常常把深度杀掉。
如何判断: Prompt 里没有视点词。
3. 物体太多互相抢深度
每个物体都自带一个暗示的尺度。花瓶、椅子、沙发、窗户、绿植、猫,各自暗示不同距离。模型为了协调它们而崩掉透视。这一类是相机词单独修不好的。
如何判断: Prompt 写了 5 个或以上不同的物体。
4. 长宽比和主体不匹配
宽幅环境硬塞进 9:16 竖屏,模型只能丑陋地裁切透视;高个人物硬塞 16:9 横屏则相反。截至 2026 年 6 月,Midjourney v7/v8 支持 1:2 到 2:1 之间的任意比例,ChatGPT Images 2.0 支持 3:1 到 1:3,Nano Banana Pro 支持 21:9、16:9、4:5、9:16 等等——所以没有理由跟画框较劲。
如何判断: 长宽比和主体的自然倾向正好相反。
5. 透视线索自相矛盾
"bird's eye view of a person standing tall, looking up at the camera"
bird's eye view 是俯视,looking up at the camera 是相机在下方。两者冲突,模型只能挑一个,或者把两个平均成一团糊。
如何判断: 视点词和主体角度词不一致。
6. 风格本身就破透视
cubist、surreal、mc escher、dali、isometric、axonometric——这些风格故意破坏透视。如果其中一个混进了 Prompt,那就是几何看起来不可能的原因。
如何判断: Prompt 里有个风格词暗示破透视。
最短修复路径
Step 1:Prompt 开头加相机块
模板:
[焦段] + [视点] + [透视风格] + [你的主体]
例子:
# 建筑 / 环境
"wide-angle 24mm, eye level, two-point perspective, ..."
# 人像
"85mm portrait lens, eye level with subject, shallow depth f/1.8, ..."
# 电影感风景
"35mm anamorphic wide, low angle from ground, three-point perspective, ..."
# 俯拍商品 / flat-lay
"top-down shot 90 degrees overhead, no perspective, flat, ..."
# 室内建筑
"24mm wide, eye level standing 5ft above floor, two-point perspective, ..."
单这一步就能修 60-70% 的透视问题。一定放在最前面——在所有现行模型里,靠前的 token 权重都更高。
Step 2:挑一个视点,坚定不换
eye level — 自然平视,默认
low angle — 仰视,英雄感
high angle — 俯视,脆弱感
bird's eye view — 完全俯瞰
worm's eye view — 完全仰视
dutch angle — 镜头倾斜,动感
three-quarter view — 30-45 度偏角
straight-on — 正面平贴
isometric — 工程图等距
别把不兼容的混在一起(见原因 5)。
Step 3:场景太杂就砍物体数量
把 Prompt 控制在 3-5 个具名物体。物体越少,透视越一致。
# 修改前 —— 过多
"a kitchen with a table, four chairs, fridge, stove, microwave, coffee maker, blender, sink, window, plant"
# 修改后 —— 聚焦
"a kitchen scene featuring a wooden dining table with four chairs in soft morning light"
Step 4:长宽比和场景类型匹配
- 宽幅风景 / 环境 -> 16:9 或 21:9(横)
- 站立人物 / 肖像 -> 4:5 或 9:16(竖)
- Flat-lay / 俯拍 -> 1:1(方)
- 宽幅建筑 -> 21:9(电影)
- 竖直建筑 -> 9:16(竖)
Midjourney 里加 --ar 16:9;ChatGPT Images 和 Nano Banana 里直接用文字写出比例(比如”16:9 横构图”)。如果 Midjourney 的输出又缩回正方形,说明你用的是 v5 之前的设置,或者用了 9:19.5 这种小数比例——改用整数。
Step 5:加显式透视风格词
two-point perspective — 标准建筑
one-point perspective — 单消失点,走廊 / 道路
three-point perspective — 仰视 / 俯视高建筑
forced perspective — 夸张深度
isometric perspective — 工程图,无消失点
no perspective — 扁平,俯拍或正面
deep depth of field — 全景深,透视清晰
Step 6:ControlNet Depth 严控透视
当你手上有一张透视正合心意的参考图时,别再跟文字较劲,直接从几何上锁死:
# ComfyUI(2026 年 6 月)
1. 安装 comfyui_controlnet_aux 拿到 depth 预处理器
2. 加载一个 Depth(或 LineArt)ControlNet:
- SDXL:xinsir ControlNet Union(一个模型,10+ 种控制类型)
- Flux:Shakker Labs ControlNet Union Pro 2.0
3. 喂入透视正合心意的参考图
4. 强度 0.6-0.8 —— 锁住透视,模型只填内容
SDXL 的 ControlNet 不能加载到 Flux 上,反之亦然——ControlNet 要和你的底模匹配。要做精确的建筑透视,用 SketchUp 或 Blender 快速渲一张 3D,是理想的 Depth 输入。
如何确认修好了
- 地平线测试: 你能指出地板和墙的交界、或者地面和天空的交界吗?能的话,深度就回来了。
- 消失点测试: 顺着两条平行线(桌沿、地板缝、天花板)延伸出去,它们应该朝一个一致的点收敛,而不是平行或发散。
- 头身比测试: 人物的头大约应为站立身高的 1/7 到 1/8。如果接近一半,比例还是崩的——砍物体数量(Step 3)或换成竖构图。
- 多跑一次: 用修好的同一个 Prompt 再生成两三张。如果透视在所有图里都一致,说明相机块生效了;如果只有一张对,那是运气好,还有线索在冲突。
预防建议
- 每个 Prompt 开头都加 5-7 个词的相机块:焦段 + 视点 + 透视风格。
- 默认焦段:24mm 广角拍环境,50mm 标准拍半身,85mm 拍肖像。
- 长宽比匹配场景(环境用横,人物用竖)。
- 做建筑或商品图时,把 ControlNet Depth 当默认配置,而不是补救手段。
常见问题
相机和镜头词在 2026 年的模型里还管用吗,还是只对老的 Stable Diffusion 有效? 到处都管用。Google 的 Nano Banana 指南和 Midjourney v7/v8 文档都建议明写镜头、光圈和角度词。更新的”thinking”模型(ChatGPT Images 2.0、Nano Banana Pro)对这些词的遵循其实比 2024 年的模型更稳。
加了相机块以后头身比还是不对,为什么? 这通常是物体过载(原因 3)或者把竖构图硬塞进横画框(原因 4),不是镜头的问题。先砍到 3-5 个物体、换成 4:5 或 9:16 比例,再去碰镜头词。
现在哪个工具处理透视和几何最好? 截至 2026 年 6 月,ChatGPT Images 2.0(gpt-image-2)在技术性几何上领先——版式、建筑、信息图。Nano Banana Pro 在照片编辑和细节保留上更强,但硬几何仍会出错。要做像素级精确的透视,二者都比不过本地 SDXL 或 Flux 流水线上的 ControlNet Depth。
为什么不管我怎么写,图都是扁的?
两个常见原因:你把相机词放在了长 Prompt 的末尾(挪到最前面),或者无意中用了 straight-on / no perspective / flat-lay。换成带角度的视点,比如 three-quarter view 加 two-point perspective。
能不重新生成整张图就修透视吗? 部分可以。Nano Banana Pro 和 ChatGPT Images 2.0 能做局部编辑,但它们会从头重建几何,所以透视不一定保得住。要真正原地编辑又保住几何,把原图丢进 ControlNet Depth、强度 0.7 跑一遍。