之前在做一个开放场景小关卡时,我一直在纠结 3D 资产的来源。手搓建模太慢,直接买素材又不符合“全流程自己掌控”的预期。后来我尝试把免费 AI 工具和 Blender、虚幻引擎(Unreal Engine 5)串成一条工作流,从概念图、纹理、模型处理到关卡搭建基本都走通了。这篇文章就把这套完整工作流整理出来,包含工具选型、具体操作、关键参数和踩坑记录,适合想用低成本方式做 3D 关卡原型、独立游戏 Demo 或作品集场景的开发者。
我会按实际制作顺序来写:先用 AI 出概念图和纹理,再进 Blender 生成并处理模型,最后导入虚幻引擎完成地形、植被、光照和简单交互。每个环节都会说明“为什么这么做”,也会给出可直接复制的配置和脚本代码。
1. 这套工作流解决什么问题
1.1 传统关卡制作流程的痛点
一个完整的游戏关卡通常包含地形、建筑、植被、道具、材质贴图、光照和碰撞体。如果完全靠手工制作,流程大概是:
- 用 Blender 或 Maya 搭建模型。
- 展 UV、烘焙法线、绘制贴图。
- 导出 FBX/OBJ。
- 在虚幻引擎中摆放资产、刷地形、打灯光。
这个流程对熟练工来说已经比较稳定,但对个人开发者、学生和刚转行的开发者来说,有两个明显问题:
- 成本高:高质量模型和贴图的价格不便宜,多资产场景加起来是一笔不小的开销。
- 耗时长:从零开始制作一个中等复杂度场景,至少需要几周时间,而且中途很容易陷入“建模细节”里出不来。
AI 工具恰好可以解决这两点,尤其是免费工具,能把“构思→资产→场景”的链路大幅压缩。
1.2 免费 AI 工具适合做什么
免费 AI 工具在游戏关卡流程里,真正能落地的是这几件事:
- 概念图生成:用文本描述场景氛围、建筑风格、色调。
- 纹理/贴图生成:生成地形纹理、墙面纹理、天空盒素材。
- 辅助建模:通过灰度图生成高度图,在 Blender 中用置换修改器或几何节点生成地形。
- 脚本辅助:用对话式 AI 生成 Blender Python 脚本,自动化批量处理模型。
注意,我这里说的“AI 搭建关卡”,不是指 AI 直接给你输出一个完整 .umap 文件,而是指把 AI 嵌入到常规 DCC(数字内容创作)和引擎工作流中,让它承担“创意生成”和“重复劳动”这两部分。这样可以大幅缩短前期筹备时间,同时保留你对最终场景的控制权。
2. 环境准备与免费工具选型
2.1 工具清单
下面的工具是我实际使用的免费方案,都在各自领域里有比较成熟的社区基础:
| 环节 | 工具 | 作用 |
|---|---|---|
| 概念图/氛围图 | Stable Diffusion WebUI 或 ComfyUI 的免费模型 | 生成场景概念图、风格参考 |
| 纹理生成 | Stable Diffusion + ControlNet,或直接使用 Krita AI 插件 | 生成可平铺纹理 |
| 3D 资产加工 | Blender 3.6+ / 4.x | 建模、几何节点、减面、导出 |
| 引擎运行 | Unreal Engine 5.x | 关卡搭建、光照、交互 |
| AI 辅助脚本 | Claude / ChatGPT 免费版 | 生成 Blender Python 脚本、引擎配置思路 |
如果你的显卡显存只有 6GB 到 8GB,可以使用 Stable Diffusion WebUI 的显存优化参数,或者直接选择在线免费额度。整体趋势是:本地跑 SD 的下限正在降低,网上也有很多轻量模型。
2.2 Blender 和虚幻引擎版本注意事项
Blender 和 UE5 都在快速迭代,不同小版本之间的导入导出可能出现差异。本文的示例重点演示工作思路,实际版本以你本机环境为准。
- Blender 推荐 3.6 LTS 或 4.x。
- 虚幻引擎推荐 5.1 以上,因为 5.1 之后 Nanite、Lumen、PCG 等特性整体更稳定。
- 从 Blender 导出到 UE5 时,建议使用 FBX 格式,较少出现兼容性问题。
- 如果你的 Blender 版本过低,比如 3.0 以下,部分几何节点功能不完整,建议先升级。
2.3 免费 AI 工具的本地部署要点
以 Stable Diffusion WebUI 为例,如果你要本地部署,基本流程是:
- 安装 Python 3.10 到 3.11。
- 克隆 WebUI 仓库。
- 下载合适的模型文件放入 models/Stable-diffusion 目录。
- 启动 webui-user.bat 或运行对应启动脚本。
需要注意,模型文件体积通常有几 GB,下载需要一些时间。如果网络环境不方便,也可以使用在线版本或第三方镜像,但要注意数据隐私和版权风险。
这里强调一点:用 AI 生成的内容,尤其是商业项目,需要确认素材授权情况。个人学习、作品集、原型 Demo 基本没问题,但真要做上架产品,务必检查模型许可证和生成内容的可商用性。
3. AI 生成概念图:定下视觉方向
3.1 为什么先出概念图
关卡搭建最怕没有方向的情况下直接进 Blender 建模。有了概念图,你至少能确定:
- 场景是白天还是夜晚。
- 主体建筑材质是木头、石头还是金属。
- 风格是写实、卡通还是低多边形。
- 大概的构图和地形起伏。
AI 生成概念图可以帮你快速试错,比如一次生成 4 张不同构图,挑一张最符合预期的继续推进。
我常用的提示词结构是:
- 场景类型。
- 环境光线和时间。
- 材质和风格。
- 画幅和机型。
示例:
fantasy temple ruins in a jungle, sunny daylight, volumetric fog, stone walls with moss, overgrown vegetation, unreal engine 5 render style, cinematic composition, ultra wide shot, 8k, high detailed生成后,选择一张最满意的图作为整个关卡的“视觉锚点”。在后续建模和摆放材质时,不断回看这张图,确认方向没有跑偏。
3.2 从概念图到灰度图
AI 概念图是彩色图,不能直接作为地形高度图使用。但我们可以在 UI 里切换模型,或者用 ControlNet 的 depth 模式提取深度图,再把深度图导入 Blender 作为高度信息参考。
另一个更简单的思路是:在 Stable Diffusion 中直接生成一张“灰度地形高度图”,提示词里可以写:
greyscale heightmap, seamless terrain heightmap, 16bit, raw displacement map, top down view生成后用 PS 或 Krita 调整曲线,把灰度对比度控制在一个平滑的范围内,避免地形出现陡峭悬崖。这样就有了一个最基础的地形高度图来源。
需要说明的是:AI 生成的高度图不一定完美,但作为“初始地形”完全够用,之后在 Blender 或用引擎地形工具中进一步雕刻即可。
4. Blender 中把 AI 素材变成可用资产
4.1 用灰度图生成地形
打开 Blender,推荐在 Geometry Nodes 里做地形生成,这样后期可以非破坏式调整。
操作流程:
- 新建一个平面,细分次数建议 200 到 300,得到足够网格密度。
- 给平面添加 Geometry Nodes 修改器。
- 使用“Grid”节点生成新的网格。
- 把灰度图拖入 Shader Editor 或作为 Image Texture 节点引用。
- 用 Set Position 节点根据灰度图的高度值偏移顶点 Z 轴。
如果你不想手搓节点,也可以直接用“Displace”修改器,加载灰度图作为纹理,调整强度。
Blender 几何节点简化思路如下:
输入:Grid (50m x 50m, 500x500) ↓ Texture 采样:Image Texture(灰度图) ↓ Sample UV:用 UV 坐标采样图片 ↓ Set Position:Z += 采样值 * 高度缩放 ↓ 输出:地形网格实际操作中,我会在几何节点里加一个 Math 节点,让高度值可以动态调节。这样生成的地形不够高就调大倍数,太陡就减小倍数,不需要重新建模。
这类节点的好处是:修改灰度图、修改尺寸、修改细分数量,都能实时看到变化。
4.2 用几何节点散布植被和石块
地形生成后,接下来的工作是散布植被、石块、残垣等资产。
如果这些资产来自外部素材,比如 Sketchfab 的免费模型,或者 Poly Haven 的模型库,可以先用最基础的摆放方式手动放几个,然后在几何节点里做程序化散布。
我这里分享一个常用的“点散布”思路:
- 用“Distribute Points on Faces”在地形表面撒点。
- 用“Realize Instances”把散布出的实例转为真实物体。
- 每个点随机旋转、随机缩放,避免重复感。
- 用“Separate Children”或实例化方式,把多个资产按比例混入。
当然,几何节点的核心价值不在于一次做多复杂的效果,而在于可调节性和可复用性。第一次操作时建议只做一小块区域,确认效果后再扩大范围。
4.3 用 AI 生成可平铺纹理
地形表面需要颜色贴图,如果不想手动画贴图,可以用 Stable Diffusion 配合 ControlNet 生成可平铺纹理。
思路是:
- 生成一组四方连续的纹理图。
- 在 Blender Shader Editor 中接入 Base Color。
- 配合法线贴图增强立体感。
如果不方便跑 ControlNet,也可以用免费纹理网站下载,比如 ambientCG、Poly Haven。它们有高质量的 CC0 纹理,完全是免费可商用的。
对于 AI 生成的纹理,需要多生成几次,找到“接缝不明显”的那一组。如果接缝明显,可以在 Krita 或 GIMP 中修一下边缘。
4.4 模型减面和清理
从外部下载的模型通常有两种问题:
- 面数太高,会在引擎里造成性能压力。
- 命名混乱,导入后难以管理。
Blender 中的处理方式比较直接:
- 选中模型,添加 Decimate 修改器,选择 Collapse 方式,调整比率到 0.3 到 0.5。
- 检查法线,按 Ctrl+N 重新计算外侧法线。
- 给模型命名为“SM_石头_01”这样规范的格式,方便引擎中检索。
这里给出一个批量清理场景内模型的 Python 脚本思路:
import bpy # 遍历当前场景中所有网格对象 for obj in bpy.context.scene.objects: if obj.type != 'MESH': continue # 删除历史记录,减少文件体积 bpy.context.view_layer.objects.active = obj bpy.ops.object.mode_set(mode='EDIT') bpy.ops.mesh.select_all(action='SELECT') bpy.ops.mesh.remove_doubles(threshold=0.001) bpy.ops.object.mode_set(mode='OBJECT') # 统一命名:SM 表示 Static Mesh if not obj.name.startswith("SM_"): obj.name = "SM_" + obj.name print("批量清理完成")这段脚本会遍历所有网格物体,合并重复顶点,并统一加 SM_ 前缀。在实际项目中,命名规范越早做,后期在引擎里越省心。
4.5 从 Blender 导出 FBX
导出设置是我最容易踩坑的环节,尤其是轴方向和缩放比例。
Blender 默认是 Z 轴向上,Unreal Engine 也是 Z 轴向上,所以轴方向一般不需要额外调整。重点是缩放,建议在导出前把场景单位统一为厘米。
重要导出参数:
- Scale:1.00。
- Apply Scalings:FBX All。
- Forward:-Z。
- Up:Y。
- 勾选 Apply Unit。
- 路径模式:Copy 并勾选 Embed Textures。
如果模型带有材质纹理,最好在导出时把纹理一起嵌进 FBX,否则到了 UE5 里会出现材质缺失。当然,嵌纹理会让文件变大,所以我通常只对最终版本启用该选项。
5. 虚幻引擎中导入与关卡搭建
5.1 新建项目和目录规划
在 UE5 中,新建一个空模板(Blank)即可,也可以选择 Third Person 模板,方便后面测试角色行走。
推荐创建以下目录:
Content/ ├── Maps/ # 存放关卡 ├── Meshes/ # 静态网格体 ├── Materials/ # 材质 ├── Textures/ # 纹理贴图 ├── Blueprints/ # 蓝图交互 └── Foliage/ # 植被这个结构能让你在资产多起来之后仍然保持清晰。个人项目可以随意一点,但一旦场景复杂,没有目录规划会很痛苦。
5.2 导入 FBX 设置
把 FBX 文件拖入 UE5 的 Content Browser。
导入设置中,我一般这样配置:
- Import Uniform Scale:1.0。
- Mesh:勾选 Collision Generation(在导入后处理)。
- Normal Import Method:Import Normals and Tangents。
- Material Import Method:Create New Materials 或 Do Not Create Material。
- 取消勾选 Import as Skeletal。
导入后,如果模型没有碰撞,可以双击模型打开 Mesh Editor,在 Collision 菜单里选择 Auto Convex Collision 或 10 Boxes。
这一步很关键。很多新人在引擎里看到模型能显示但角色会穿透,就是因为没有生成碰撞。
5.3 地形材质和图层
如果地形已经在 Blender 里生成并导出,可以直接导入为静态网格体。
更推荐的方式是在 UE5 的 Landscape 模式下重新制作地形,因为引擎地形系统支持图层描画、LOD 和更好的碰撞性能。
做法是:
- 在 Modes 面板选择 Landscape。
- 选择 Sculpt 模式,用 Manage 导入高度图。
- 准备 2 到 3 张纹理,分别用于地面、碎石、草地。
- 创建 Landscape Material,并用 Landscape Layer Blend 混合纹理。
材质示例思路如下:
LandscapeLayerBlend ├─ Layer: 草地 (Texture Base Color + Normal) ├─ Layer: 岩石 (Texture Base Color + Normal) └─ Layer: 泥土 (Texture Base Color + Normal) 输出连接到 Material Attributes如果你想快速出效果,最简单的方式是给地形使用“Landscape Material”,然后手动刷层。如果使用的是导入的静态网格地形,则可以直接创建一个普通 Material,把 AI 生成的纹理贴到 Base Color 和 Normal 上。
5.4 PCG 程序化生成:快速填充场景
UE 5.2 之后的 PCG(Procedural Content Generation)框架非常强大,它能帮你把植被、碎石、栅栏等资产自动铺设在关卡里。
PCG 的思路和 Blender 几何节点类似:给定一个地形区域或体积,PCG 根据密度参数生成一系列实例。
基础 PCG 图表的搭建思路:
- 使用 Landscape Spline Sampler 或 Volume Sampler 获取放置区域。
- 使用点密度节点限制单位面积内生成数量。
- 用 Transform Points 随机旋转和缩放。
- 用 Static Mesh Spawner 输出资产。
实际操作中,我会在 PCG 里设置“不能被实例穿透地面”的碰撞限制,并使用 Density 节点让植被不在悬崖上生成。
PCG 的特性变化比较快,不同 UE 小版本的节点名称可能不同。建议先用 UE5 的项目模板直接体验,再看官方文档更新节点细节。
5.5 构建光照和反射
关卡摆放完成后,需要构建光照才能看到正确的明暗效果。
如果你用的是 UE5 的 Lumen 实时全局光照,基本场景可以在编辑器里实时看到不错的效果。但如果是静态光照,需要点击 Build 按钮。
建议:
- 使用 Directional Light 作为太阳光。
- 使用 Sky Atmosphere + Volumetric Cloud + Exponential Height Fog 组成天空环境。
- 使用 Sky Light 采集环境光照。
- 第一次 Build 时按 Low 模式预览,最终输出按 High。
如果是夜晚场景,还可以加一个 Point Light 或 Spot Light 点缀建筑内部。
6. 简单交互:蓝图实现开门/触发事件
关卡不能只是摆设,至少要有基本的玩家交互。这里用最简单的蓝图实现“靠近门按 E 开门”。
6.1 创建触发盒
在关卡中放置一个 Box Trigger,把它放到门前面。这个触发盒会在玩家进入时触发事件。
蓝图内容概述:
- 使用 Actor Blueprint 新建一个蓝图类。
- 添加 Static Mesh Component,设置为门的模型。
- 添加 Box Collision,调整范围。
- Event BeginOverlap 触发时,播放门的旋转动画。
- Event EndOverlap 触发时,可以关闭或者不做处理。
6.2 蓝图节点逻辑
简化逻辑如下:
Event ActorBeginOverlap → Gate 是否允许触发 → 是 → 获取门的 Static Mesh Component → 调用 AddLocalRotation → 设置变量 bDoorOpen = true如果你不熟悉蓝图,也可以使用 Level Sequence 做一段简单的开门动画,然后用 Trigger Volume 播放。但用蓝图更灵活,也方便后续加锁、音效、UI 提示。
6.3 测试运行
点击 Play 运行,进入触发盒后门应该旋转打开。此时也可以顺便测试角色是否能正常站立在导入的网格体上,这能及时发现碰撞问题。
7. 常见问题与排查思路
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| FBX 导入后大小不对 | 单位不一致 | Blender 导出时勾选 Apply Unit,UE 导入时确认 Scale 为 1.0 |
| 模型显示为灰白色,无材质 | 纹理未嵌入 FBX,或材质创建失败 | 重新导出时勾选 Embed Textures,或在 UE 中手动创建材质 |
| 角色会穿透地面 | 模型没有生成碰撞体 | 在 Mesh Editor 中自动生成碰撞 |
| 地形过高或过平 | 灰度图高度范围没调整 | 回到 Blender 调整 Displace 强度,或使用 Curve 节点重新映射 |
| 植被随机散布在悬崖上 | 没有做坡度限制 | 在 PCG / 几何节点中加入法线 Dot Product 判断,过滤陡峭区域 |
| AI 纹理平铺接缝明显 | 生成图不是四方连续 | 使用 Photoshop/Krita 做 offset 滤镜修复,或换用 CC0 纹理库 |
| Nanite 模型无法导入 | 模型开口面或拓扑有问题 | 在 Blender 中检查几何体是否为封闭,不能仅使用边线 |
排查时建议按“数据层面 → 导入设置层面 → 引擎层面”的顺序来。先确认 Blender 里的模型是正确的,再看导出设置,最后检查 UE 导入参数。
8. 工作流总结与优化建议
这套工作流的核心不是“让 AI 替代你”,而是“让 AI 帮你尽快把想法变成可看的资产和场景”。
整体流程可以概括为:
- AI 生成概念图和纹理,确定视觉方向。
- Blender 中用几何节点和修改器生成地形,处理外部模型。
- UE5 中导入资产,用 Landscape 或静态网格体搭建基础场景。
- 用 PCG 或几何节点做程序化散布,快速填充植被和细节。
- 使用 Lumen 或静态光照构建明暗氛围。
- 最后用蓝图为关卡加入基础交互。
如果你想继续深入,可以按这几个方向学习:
- 进一步学习 Blender 几何节点,尤其是 Instance 属性传递和法线过滤。
- 研究 UE5 PCG 框架和 Landscape Spline,做出道路、河流、城市场景。
- 学习 ControlNet,让 AI 生成的纹理和深度图更可控。
- 尝试用 Layered 材质组合,给地形做雪、草、岩石之间的自然过渡。
实际项目中,我建议先把工具链跑通,再追求细节。第一次做不需要做一个完整可玩的游戏流程,先做一个 100 米 × 100 米的场景 Demo,把“AI 出图 → Blender 处理 → UE5 摆放”这条路径走熟,之后再做更大场景就会顺手很多。
如果本文对你有帮助,可以收藏备用。接下来动手试试,挑一个小场景,从一张概念图开始,走一遍这套工作流,你会发现免费 AI 工具 + Blender + 虚幻引擎的组合,确实能让你以很低的成本搭出像样的 3D 游戏关卡。