我先说个让我崩溃过的场景。上个月我用 Stable Diffusion 生成游戏地图素材,第一张“冰河苔原”出来的时候我差点拍桌子叫好——纹理细腻,石头上有霜,苔藓的绿色压抑得恰到好处。然后我连着出了五张,一张一张看过去,心一点点凉下去。

每张图的苔原“看起来”都是苔原,但石头长得完全不一样。第一张的石头是圆润的鹅卵石,第二张变成了棱角分明的玄武岩,第三张干脆出现了诡异的石柱群。放在一张图里各有各的好看,放进同一个游戏世界里,玩家一眼就能看出——这是拼的。
这就是 AI 生成地图素材最核心的难题:单体质量的瓶颈早就过了,“整套的一致性”才是真正难啃的骨头。
为什么你让 AI 画一百张图,它会给你一百种风格
先说清楚底层原理,否则后面所有工程手段你都会觉得是在打补丁。
扩散模型(Diffusion Model,就是 Stable Diffusion、Midjourney 那类工具背后的模型)生成图片的过程,本质是从一个纯噪声出发,逐步去噪。每一步都在做同一件事:根据现在的噪声图和你给的提示词,预测一个更接近目标图像的版本。关键就在这——每一张图的起点是完全随机的噪声,去噪过程又带有大量随机采样。
这意味着什么?模型没有“记忆”。它不会记住上一张苔原图里石头长什么样,再生成下一张时保持原样。每一次生成都是重新掷骰子。
你可能想,那把提示词写得详细一点不就行了?我试过。把“stone”加进提示词,就是那种想当然的做法。结果?每张图的石头确实更突出,但形状、颜色、光影还是各玩各的。原因在于,文字是离散的符号,图像是连续的光栅。“圆润的、带苔藓的、中等大小的石头”,这个描述在模型的世界里可以对应一万种具体形态。提示词约束的是“类别”,约束不了“精确外观”。
一致性到底是指什么?至少拆成四层
为了避免后面讨论的时候鸡同鸭讲,把一致性拆开看:
| 层级 | 定义 | 例子 | 最常见的方法 |
|---|---|---|---|
| 全局色调 | 整张地图的配色、光照氛围统一 | 所有苔原素材都偏冷灰色调 | 提示词固定色彩词 + 后期统一调色 |
| 单体自洽 | 一张素材的局部纹理不穿帮,放大缩小都 OK | 石头的纹理在 512px 和 2048px 下都写实 | 高清重绘(Hires Fix)+ 模型本身质量 |
| 同类素材间的相似 | 所有“石头”长得像同一个物种 | 五张不同石头图,风格统一可当同类物件混用 | LoRA 微调,锁定画风 |
| 跨视角一致 | 同一个建筑从正面、侧面、俯视看是对得上的 | 城堡的塔楼在四个角度看结构不变 | 多视图模型(如 Zero123、MVDream) |
大多数人抱怨的“AI 素材不一致”,混着讲了这四层。而它们各自的解法完全不同。层级一和二是基础,靠模型选型和参数就能大致解决;层级三得靠 LoRA;层级四目前最强的方法是多视图生成,但离工业可用还有距离。
下面分别说。
LoRA:给模型装一张“画风记忆卡”
用一句话解释 LoRA(Low-Rank Adaptation):它不重训模型,它只在新数据上微调一小部分参数,让模型记住某个特定的视觉风格或对象。
为什么要微调而不直接训练一个新模型?因为不值得。训练一个图像模型需要几百张 GPU 卡跑几个星期,而训练一个 LoRA 只用 10-20 张目标风格的图片,单张消费级显卡几十分钟就能搞定。它只调整个别层的权重矩阵,本质上是给原模型加了一个“风格偏置”,让原本对风格保持中立的中间特征偏向你想要的方向。
对我做苔原素材这件事来说,流程是这样的:先用 AI 生成一批苔原石头的参考图,人工挑出最接近我想要的画风的那几张(比如 15 张),用它们训练一个 LoRA。之后所有生成都挂上这个 LoRA,出来的石头就“收敛”了——形状、纹理、色调都带着同一套家族特征。
LoRA 解决的是“同类不同张”的一致性问题。这是地图素材生产里性价比最高的一步。但我得提醒你,LoRA 有它的脾气:训练集里如果混入了风格不一的东西,它记住的就是一个“平均风格”,结果会更平庸。另外,LoRA 容易过拟合,训得太猛,生成的图会开始重复训练集中的特定构图——对素材生产来说,这其实可以接受,甚至有助于保持统一。
ControlNet:把“随机性”关进笼子里
如果说 LoRA 管“风格”,那 ControlNet 管的就是“结构”。
ControlNet 的核心思想是:在扩散模型的去噪过程中,额外输入一个结构条件(线稿、深度图、法线图、Canny 边缘等),让生成的图像在保持风格自由度的同时,严格遵循这个结构约束。
在游戏地图素材里有这么几个实际用法:
- 用一张手绘的灰度高度图作为深度图输入,生成的地形纹理天然符合你对山体起伏的规划。
- 用线稿控制建筑的轮廓,出图的门窗比例不会偏移。
- 用“法线贴图转渲染”的方式,让 AI 生成的石头光影方向统一——这对地图拼接很重要。
这意味着你可以先定地图的整体结构,再让 AI 往里面填细节,而不是让 AI 信马由缰。说人话就是:你和 AI 的分工变成了「你画骨架,AI 填肉」。这比纯靠脑子想象再反复抽卡可控得多。
无缝纹理:Tiling 才是游戏地图的硬指标
你可能觉得前述已经够了,但还有一个游戏地图特有的坑:拼接不自然。
游戏引擎(Unity、Unreal)里铺地面,用的是可平铺纹理(tileable texture)。同一张纹理在 x 轴和 y 轴方向无限重复。AI 生成一张 1024×1024 的草地图,四边一拼,就是一圈醒目的“接缝”。因为模型并不知道它的图画完要首尾相接。
目前主流的解法分两派:画后融合和生成时就 Tiling。
画后融合最简单:拿到 AI 图之后,采一些边缘像素在 Photoshop 里做偏移(offset)模糊再贴回去,工程量小但会有轻微能量损失。生成时 Tiling 则有开源方案了——有人在 Stable Diffusion WebUI 里实现了“MultiDiffusion”的变体,在去噪的每步都强制输入图的首尾循环对齐,直接从源头解决接缝问题。
我个人的实践是:先用 Tiling 生成,再用小修补清理细节。多花 30 秒的功夫,换来无缝的地表质感。这一步不能省——地形纹理,是地图里最大面积的视觉元素,接缝问题在那里比建筑风格不一致还要扎眼。
真正的素材管线:AI 只做第一步
聊到这里,你可能意识到一个更欺负人的真相:靠单个模型、单次生成解决不了整套生产。地图素材的一致性,最终是靠一套管线管出来的。
- 概念阶段:用文生图探索方向。这个阶段随手写提示词,出 50 张粗稿,找感觉。
- 风格锁定:挑 10-20 张统一风格的图,训练 LoRA。此后所有生成环节都挂载这个 LoRA。
- 结构约束:用 ControlNet 把地图布局(山体高度、道路走向、建筑平面)作为结构先验输入,保证素材与关卡设计对得上。
- 批次生产:同一 LoRA + 同一 ControlNet 权重 + 固定 seed 区间 + 负面提示词表,批量出图,人工挑图。
- 后处理修正:无缝纹理融合、色阶拉平、光照方向统一。这块 Photoshop 是主力。
- Bake 进引擎:把纹理导入 Unity/Unreal,用引擎自身的材质系统做一套更精细的 tiling 和细节纹理(detail texture)叠加。
看到最后一步了吗?这是一个很多人忽略的关键点——最终极的“一致性兜底”,其实是游戏引擎。引擎本身就是为了大规模、可复用、风格统一地渲染素材而设计的。AI 负责的是素材的“初始生成”,而规则化、统一化,是引擎的活儿。
我就犯过低级错误——指望直接给引擎丢一张 AI 生成的大地形图。结果光照一变,近看糊成一片,远看全是噪点。后来才想明白,AI 生成的图是“像素结果”,不是“可复用的资源”。你得在引擎里重新拆成 base color、normal map、roughness 这些贴图,再按引擎的逻辑拼回去。
AI 生成地图素材的边界在哪?
说个公允的判断。以后续技术发展看,2024 年之后多视图生成模型(如 SV3D、Zero123++)越来越靠谱了,单体对象的跨视角一致性在 3A 级建模流程里已经能起到预演概念的作用。但大规模、转得动引擎的 3D 资产还差得远。像素级素材一致性,用上面的管线基本能做出商品级效果;但几何级资产一致性——同一个树模型的每个四面都能对得上的那种——别指望现在能全自动搞定。
对我个人而言,AI 做地图素材的最好定位是:一个永远不嫌累的风格化美术外包团队。它给你的是半成品——定调子、出大片、找方向。而你要做的,是把它的成果变成引擎里的规则。这个定向过程,就是美术设计的价值所在。
如果你也要用 AI 弄地图素材,我的建议一句话:不要追求提示词的魔法,去搭一套带约束的生产管线。提示词只是起点,控制才是终点。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/1026.html