开头先讲一个场景:你在团队里负责做一批游戏关卡摆件,手里只有一张概念草图,甲方又说“先出个白模看效果”。以往你会打开建模软件从零开始拉线,一个下午可能只能出一版。现在有了 AI 3D 生成方案,从单张图片出三维网格,再丢进虚幻引擎看场景效果,流程快得不像以前的时代。但真正让我意外的是,这套流程在 6GB 显存的显卡上也能跑起来,而且不是那种“能打开但完全不能用”的勉强状态。
这篇文章想分享的不是又一个“AI 一键生成 3D 模型”的演示,而是一套可以从单图生成到虚幻引擎角色落地的完整工作流。我的核心判断是:6GB 显存能不能跑,关键不在显卡本身,而在你有没有把流程拆成“生成、清理、优化、导入、迭代”五个环节。单图生成 3D 只是入口,真正决定项目能不能用的,是后续那些看起来不性感的步骤。
1. 先想清楚:单图生成 3D 到底解决了你的哪个问题
1.1 6GB 显存不是天花板,而是筛选条件
看到“6GB 显存也能跑”这个说法,大多数人的反应是:性能会不会很差?我一开始也这么想。但实际跑下来,这个限制反而是一种好事——它逼迫你去选择更合适的模型、更高效的推理方式,而不是把一个几千兆参数的模型无脑加载到显存里。
如果你现在用的是 6GB 显存,常见做法是把 PyTorch 模型切换到半精度推理,或者开启显存优化;实在不够就把输入图像分辨率降下来。多数 AI 3D 生成模型的显存开销集中在图像编码器、摄像机位置预测和网格解码三个阶段,前面两个才是显存大头。控制住输入图和中间特征层,6GB 是够用的。
这里有一个容易混淆的概念:显存占用不等于生成质量。单图生成 3D 的质量主要取决于模型对相机位置和几何先验的预测能力,而不是你把分辨率拉多高。很多时候,1024 的输入图在 6GB 显存上会直接爆显存,但 768 分辨率的图反而能稳定出结果,最终效果差距并不明显。
1.2 别把“生成”当“完成”,它真正改变的是迭代成本
我得先泼一盆冷水:从单图生成的 AI 3D 网格,很少有哪一版能直接作为游戏角色资产丢进虚幻引擎使用。确实能让美术快速看到体量、比例和大致轮廓,但这只是草稿阶段。
它真正改变的是迭代成本。以前改一个角色的头身比,你得重新调整一大堆拓扑结构;现在你只需要回到参考图,把概念图里的人物比例稍微改一下,重新跑一次生成,新版本几分钟就能出来。
所以,这套工作流的核心不是“替代建模师”,而是把传统 DCC 软件里的重复劳动前置了。你先让 AI 生成一个有形状、有材质、有基础贴图的底模,然后在 Blender 里做减面、清 UV、重烘焙,最后再导入虚幻引擎。这个顺序几乎没有变过,变的只是中间“生成底模”这一步从几天变成了几分钟。
2. 先用最小闭环验证流程,不要一上来就跑全量
2.1 环境准备:把驱动、依赖和模型目录先理顺
在 6GB 显存上跑 AI 3D 工作流,我第一次踩的坑就是依赖版本混乱。这类项目通常会用到 PyTorch、CUDA 运行时、一些 3D 工具库,而不同仓库对 Python 版本的要求还不完全一样。
建议先建一个独立的虚拟环境,再按顺序安装依赖。这里我给一个通用执行思路:
# 示例:创建独立 Python 环境 python -m venv ai3d_env source ai3d_env/bin/activate # Windows 下为 ai3d_env\Scripts\activate # 安装 PyTorch 的 CUDA 版本,注意根据你的驱动版本选对应的 cuXXX pip install torch --index-url https://download.pytorch.org/whl/cu118 # 再根据项目 README 安装其余依赖 pip install -r requirements.txt如果你的显卡驱动版本比较旧,可以直接把 CUDA 版本选低一点。运行前要确认模型权重文件下载到哪个目录,很多项目默认从 Hugging Face 下载,国内网络环境容易出现卡在下载环节。建议提前单独下载好权重,放到项目指定的checkpoints或weights目录里。
2.2 输入图不是越清晰越好,要“够用”
单图生成 3D,最影响结果的往往不是程序参数,而是你的输入图。理想的输入图应该满足三个条件:
- 主体完整,没有被裁切
- 背景尽量干净,或者至少是纯色
- 正面朝向镜头,光影不要过度复杂
如果你的参考图是有背景的,建议先用任何你习惯的图像处理工具把主体抠出来,再补一个白底或透明底。AI 模型对背景非常敏感,背景越乱,生成的背面几何就越容易出现粘连或膨胀。
分辨率方面,在 6GB 显存下可以从 768 开始尝试。如果显存还有富余,再逐步往 1024 或 1280 拉。
2.3 最小化显存占用:半精度、梯度关闭、按需加载
这一类 AI 3D 项目在推理时通常会默认开启很多无关模块。你要记住一个原则:生成阶段只需要推理,不需要训练。所以代码里能关的梯度计算尽量关掉,模型能切成半精度就切成半精度。
# 示例:最小推理配置 model = model.to(device).to(torch.float16) model.eval() with torch.no_grad(): mesh = model.generate(image, num_steps=20)在 6GB 显存环境下,可以按这个优先级优化:
- 开启半精度:显存直接少一半。
- 关闭梯度:减少中间变量缓存。
- 降低采样步数:从默认 50 步降到 20 步。
- 输出更小的网格面数:先出低模,再在 Blender 里增加细节。
注意:不要一上来就把采样步数改成 5。步数太低,几何会缺少结构,后面反而要在 DCC 软件里花时间修补,不一定划算。
3. 从单图到网格:送入引擎前需要经过哪些清理
3.1 生成的网格缺的不是面数,而是拓扑和贴图规范
AI 3D 模型输出的网格,常见格式是 GLB、OBJ 或 PLY。这类网格有一个共同特征:拓扑比较乱,面数分布不均,经常会有重叠顶点、非三角面和非流形边。
如果你直接把 GLB 拖进虚幻引擎,有可能能显示,但后续想做骨骼绑定、动态材质或者 LOD,就非常痛苦。所以我建议在进入引擎前至少走一遍清理:
- 去重顶点:在 Blender 里选中网格,使用“合并重合点”。
- 统一法线:选中全部面,重新计算外侧法线。
- 检查非流形边:用 3D 打印工具箱插件检查一下,避免导入后破面。
- 清理孤立点:把游离顶点和空物体删掉。
3.2 导出时选对格式和坐标轴
虚幻引擎和 Blender 的坐标轴不一致,这是一个很经典的坑。Blender 使用 Z 轴朝上,而虚幻引擎使用 Z 轴朝上,但默认单位、缩放和旋转顺序需要设置正确。通常推荐在 Blender 里把角色摆正,应用一下位置、旋转、缩放,再导出 FBX。
如果你在 Blender 中使用了米制或厘米制,导入虚幻引擎时也要统一单位。建议把 Blender 的场景单位调成厘米,因为虚幻引擎默认使用厘米。
导出 FBX 时的设置,可以参考这个思路:
- 选择“仅选中物体”
- 应用变换
- 如果要做骨骼绑定,把“仅蒙皮骨骼”或相关选项勾上
- 法线、切线、UV、顶点色按需勾选
这里又引出一个选择:到底该用 GLB 还是 FBX?如果你只是临时看效果,GLB 更便捷,拖进去就完事;如果你要把角色真正放入游戏项目,FBX 是更稳妥的选择,因为它在动画、骨骼和材质数据上兼容性更好。
3.3 先在 Blender 里出的不是“成品”,而是“可编辑资产”
很多人忽略的一点是:AI 生成的网格即使清理干净,顶点数也会偏高。你需要在 Blender 里用减面修改器,把面数压到目标范围内,再烘焙法线贴图。
具体步骤一般是这样:
- 复制一份原模型作为高模。
- 在低模上使用“细化”或者重新拓扑工具得到一个干净拓扑。
- 创建新的 UV 布局,尽量把接缝藏在角色背面或隐蔽位置。
- 用“烘焙法线”工具,把高模法线信息贴到低模贴图里。
- 导出低模加贴图。
这样做出来的资产,进虚幻引擎后才会像“游戏资产”,而不是一个美术预览文件。
4. 进入虚幻引擎之后:材质、LOD 和性能的平衡
4.1 为什么导入后模型是紫色的
导入虚幻引擎后最常见的问题是模型显示为紫色。原因通常只有一个:材质没找到贴图,或者贴图格式不对。你需要在 FBX 导入设置里确认材质导入规则,或者直接在 UE 材质编辑器里重新指定贴图路径。
还有一个容易被忽略的点:AI 生成的贴图如果包含透明通道或混合模式,在虚幻引擎里默认材质可能不会自动保留。建议把生成的多张贴图转换成引擎常用的格式,比如把基础颜色贴图复制为_BaseColor,法线贴图复制为_Normal,粗糙度贴图复制为_Roughness。命名规范一开始就理清楚,后面会省很多事。
4.2 LOD 与网格减面:让 6GB 显卡在引擎里也能流畅跑
这里说的显存,其实不是运行虚幻引擎编辑器的瓶颈,而是当你把项目打包或在编辑器中同时加载很多资产时,显存占用会迅速涨起来。AI 生成的角色通常面数很高,如果在同一个关卡里放五六个高模,6GB 显存很容易吃满。
解法是做好 LOD(关卡距离细节切换)替代方案。在虚幻引擎里,你可以使用自动 LOD 生成,也可以把 Blender 里减好的几个面数版本导入进去。通常建议准备三档:
| LOD 层 | 面数 | 贴图大小 | 使用场景 |
|---|---|---|---|
| LOD0 | 原始或中等面数 | 2048 | 近距离观察 |
| LOD1 | 中等面数 | 1024 | 中远距离 |
| LOD2 | 低面数 | 512 | 远景或远景装饰物 |
不要把所有贴图都做成 4096,在 6GB 显存环境里,这会让编辑器和打包后的游戏一起卡顿。贴图分辨率不是越高越好,而是要看物体在屏幕上占据的像素量。
4.3 材质整理:把三张贴图合并成一张可维护材质
AI 生成的角色默认贴图往往不止一张,有的会输出一张 UV 贴图和多张通道贴图。到了虚幻引擎,你可能需要手动创建材质实例,把这些贴图通道重新组合。
工作流比较顺的做法是:
- 在 Blender 里把贴图通道提前组合成:BaseColor、Normal、Roughness、Metallic。
- 导入 UE 后,创建一个基础材质,把四张贴图分别连到对应引脚。
- 把材质设成“可变”,方便后续在材质实例里调颜色或金属度。
这样你的临时 AI 资产,也能像正式美术资产一样被材质实例复用。后续如果角色进入真正的生产管线,这套材质可以无缝迁移。
5. 从单角色到批量制作:沉淀一套可复用的半自动流程
5.1 把一次流程拆成三个可复用层级
这套工作流如果只跑一次,意义不大。它真正值钱的地方,是可以把从单图到网格、从网格到 UE 的步骤,沉淀成一个可重复消费的流程。我建议你把实现方式拆成三层:
- 第一层:单角色验证,纯手动操作。
- 第二层:小批量生产,用脚本做批量推理和文件名整理。
- 第三层:引擎内集成,用自动化工具在 DCC 软件里批量清理和导出。
从第一层到第二层的转变,往往是效率提升最大的一个节点。因为当你开始批量生成时,你会被迫把输入图命名、输出目录、格式转换、贴图整理这些事规范化,而不是每次手动复制文件。
5.2 编写简单脚本,让重复劳动远离输入框
一个很实用的思路:把 AI 3D 生成封装成一个命令行脚本。输入一张图片和输出路径,自动完成推理,并保存成网格文件。
# 这是一个流程示意,具体接口以你使用的模型代码为准 import subprocess import glob images = glob.glob("./input/*.png") for img in images: subprocess.run([ "python", "run_generate.py", "--image", img, "--output", "./out/" + img.stem + ".glb", "--fp16", ])这样做的意义不是省掉几次点击,而是让流程变得可控、可复现。生成出来的文件名建议带上日期和分辨率后缀,比如character_A_768_01.glb。这样万一以后想重新生成,你知道原始参数是什么。
5.3 长期维护:什么该保留,什么该删
不要把所有中间文件都堆在目录里。AI 3D 工作流会产生大量中间产物:输入图、带背景的原图、抠图后的 PNG、生成的 GLB、FBX、贴图、备份文件。如果不做清理,几天后你就会找不到哪个才是真正用到项目里的版本。
我自己的习惯是固定一个项目目录结构:
project/ reference/ # 参考图、原始概念图 input/ # 抠图后的输入图 output_raw/ # AI 生成的原始格式 export/ # 进入 UE 前的最终网格和贴图 logs/ # 生成参数和报错记录保留日志尤其重要。AI 3D 领域的模型更新很快,今天用的参数,下个月换了新模型可能就不适用了。如果你把每次运行用的模型版本、图片分辨率、采样步数和输出格式都记录下来,那么以后模型更新时可以迅速对比判断:是模型进步了,还是自己的参数设置变了。
6. 常见问题排查:从“不工作”到“能用”的排查链路
6.1 爆显存、卡死和黑屏
在 6GB 显存下最常见的问题就是“CUDA out of memory”。排查顺序是这样:
- 看输入图大小,先把分辨率降到 768。
- 看模型权重,确认是否开启了半精度。
- 看是否有其他程序占显存,比如浏览器硬解视频。
- 查看采样代码,确认没有重复加载模型或保留多余的中间张量。
如果你只是临时需要跑一次高分辨率图,可以用torch.cuda.empty_cache()清理缓存,但不能指望它解决根本问题。真正要做的还是控制生成分辨率和采样步数。
6.2 人形角色变形:手指、面部和背部
单图生成 3D 最常见的质量问题是手指粘合、面部五官扭曲和背面空洞。这些问题的根源不是显存,而是输入图信息不足。
如果参考图里人手是握着拳头的,模型大概率会生成一团形状。更合理的处理是:
- 尽量选择手指分开、掌心朝向镜头的参考图。
- 如果背面细节确实看不到,宁可使用“背面半身像”的参考图,也别让模型自己补全。
- 生成后用 Blender 里的雕刻模式修一下大形,再重烘焙。
这个阶段不要追求一次生成完美。AI 3D 工作流的效率来源于“多版本迭代”,而不是“单次生成即终版”。我会用同一张输入图跑 3 到 5 个不同随机种子,挑一个比较好的版本继续修。
6.3 导入 UE 后模型不显示、法线翻转或材质丢失
这类问题用一套排查链路基本都能解决:
- 看模型在 Blender 里是否正常显示。
- 看 Blender 里法线方向是否正确。
- 看导出设置是否应用了变换。
- 看 FBX 导入设置里是否勾选了正确的内容。
- 看材质贴图是否存在中文路径或特殊字符,路径里的中文会导致 UE 找不到贴图。
建议:所有工程路径和文件名都使用英文小写和下划线,不要用中文、空格或特殊符号。很多时候问题不是出在模型上,而是出在文件路径上。
7. 最后说点不那么技术的话
单图生成 3D 到虚幻引擎,这套工作流在 6GB 显存上能不能用,我的答案是可以。但前提是你要把期望值放对位置:它不是让你从一个图片瞬移到一个完整可玩的游戏角色,而是把原来需要几小时甚至几天的工作,压缩到十分钟完成一个可以迭代的基础版本。
这套方案真正的价值也不只是在省时间。它让“没有专业建模经验的人”也能参与到三维资产的概念验证环节。策划可以先画一张草图,拿给 AI 生成一个 3D 白模,放进虚幻引擎里跑一下摄像机视角和场景比例;然后美术再基于这个底模做精细化重拓扑。以前这个流程需要等美术排期,现在可以前置到需求讨论阶段。
如果你还在犹豫要不要在低显存显卡上尝试,我建议你从最小流程开始:找一张主体干净、背景简单的角色图,用一个你熟悉的 AI 3D 生成仓库,先跑通“单图 -> GLB -> Blender -> UE”这条链路。不要急着调参数,不要一上来就渲染最高分辨率。先把流程跑通,你会发现后面所有优化都有的放矢。
工具会更新,模型会换代,6GB 显存这个限制以后也可能不再是限制。但把一次临时操作沉淀成一套可复用流程的思路,任何时候都不会过时。