Heron
返回作品

月球基地

独立完成的 3D 场景:Maya 建模、材质、场景搭建与光照。

地编3D 场景MayaSubstance PainterArnold

职责

地编(独立完成)

引擎

Maya + Substance Painter + Arnold + AE

团队

个人项目

周期

2025

项目概述

3D 建模课的个人作业:一座完全独立完成的月球基地内景。这一页不打算把它当作渲图集来展示,而是以一名场景地编的视角来 review 这个项目:沿美术管线逐个环节推进,记录每个环节在哪里出了问题,以及修复它付出了什么代价。

最终场景约 42.6 万三角面21.6 万顶点,贴图为 按资产划分的 2048 × 2048 PBR 材质集。管线本身是常规的:

白模 → 模型清理 → UV → Substance Painter → 回到 Maya 在 ACES 下指定材质与 lookdev → 场景陈设与植被 → Arnold 布光渲染 → After Effects 合成输出。

而制作过程中最有价值的一条认识是:这些环节并不是一条只走一遍的队列。清理是一道关卡,前期跳过它,意味着在之后每一道关卡都要补交学费。

1. 白模与建模

场景是按模块化套件来搭建的,而不是做成一整块网格:地砖、护栏、护栏窗、门洞、楼梯、观景窗,以及陈设道具(培养基槽、桌子、杯子、天文望远镜)。穹顶是一套结构桁架——在任何贴图存在之前,正是它确立了剪影,并承担了大部分构图工作。

对这类场景而言,把白模阶段拖得足够长是正确的选择。让几何计数器常驻视口,形体与可读性才能被单独评判,而面数预算也始终是一个有意识的决定,而不是渲染时才发现的意外。

Maya 视口中的月球基地白模,附带顶点、面与三角面计数
白模阶段:穹顶桁架与模块化地面确立剪影,几何计数器常驻显示(此时 21.1 万顶点 / 41.6 万三角面)

2. 几何完整性——我学会敬畏的那道关卡

项目早期,Maya 的 Unfold 直接失败了。原因是非流形几何(non-manifold)与"蝴蝶结"顶点(bowtie vertices)——这类拓扑不存在有效的展开解,因此算法根本无从下手。

解决办法是把模型清理协议作为一个常设步骤固定下来,而不是当作救火手段:排查 T 型接点(T-junctions)、合并游离顶点,并在网格进入下游之前确认它是水密(watertight)且流形的。

这个环节是任何一张成品渲图都不会展示的,却决定了后面整条管线是否成立。从地编的角度看,这里的教训是流程性的而非艺术性的:清理应当紧跟在每个套件部件建模完成之后,因为一个损坏的网格不会当场报错,它会一直沉默到 UV 或渲染阶段才浮现,而那时追溯它的成本已经翻了好几倍。

3. UV 与纹素密度

拓扑干净之后,UV 成了下一个失效点。若干部件出现了 UV 炸裂与极端拉伸,表现为桌面贴图模糊、呈现"条形码"状——这是纹素密度严重不均的典型症状,而非贴图绘制的问题。

解法是按表面性质选择算法,而不是一套算法用到底:平整的板状面用 Planar Mapping,较为有机的外壳用 Unfold3D;随后重点检查模块化地砖之间的纹素密度是否保持一致。对模块化套件来说,密度统一比单块的排布完美更重要——因为地砖在最终场景中彼此紧邻,任何密度差都会立刻被读成一条接缝。

Maya 中望远镜的线框与 UV 编辑器内展开后的 UV 布局
望远镜的 UV 展开:硬表面外壳按材质切分排布,所选部件约 1.7k 三角面

这是整个项目里最难的一部分。我反复想起的类比是"包礼物却不能有一丝褶皱"——表面是既定的,所有的功夫都在于你选择在哪里下刀。

4. Substance Painter 贴图制作

贴图按每个资产一个 2048² 材质集来组织——FloorTileBarriersBarrierWindowDoorwayStairsViewPortBasinCultivaterLowCultivaterTableCupDataBaseGround。以套件部件来命名材质集,是模块化场景保持可检索的关键;而我自己工程窗口里暴露出的一个薄弱点,是仍有一个材质集沿用了 Standard_Surface 默认名——场景一旦膨胀,这类命名就会彻底找不回来。

Substance Painter 工程中模块化套件的十二个 2K 材质集
每个套件部件一个 2K 材质集,对照已装配的模块化布局绘制
Substance Painter 中的平台与道具,附带平铺控制
陈设道具与地面,UV 平铺按材质分别驱动

通道栈按完整 PBR 输出——高度、粗糙度、金属度、法线、不透明度与自发光。把不透明度与自发光一并带过导出环节,正是玻璃面板与发光元素抵达 Arnold 后仍能正确表现的原因,而不必留到合成阶段去伪造。

Substance Painter 通道列表:玻璃与栏杆材质集的高度、粗糙度、金属度、法线、不透明度与自发光
玻璃与栏杆材质集携带完整通道栈——高度、粗糙度、金属度、法线、不透明度、自发光——使透明属性在交接给 Arnold 时不致丢失

5. 回到 Maya:材质指定与 Lookdev

回到 Maya 后,贴图按材质集逐一指定,场景则在 ACES 1.0 SDR-video (sRGB) 色彩管理下审看,以保证我在视口中判断的结果与 Arnold 最终产出的一致。在 lookdev 之前而非之后设定色彩管理,是一个能省下日后重做 albedo 的小纪律。

分批装配的好处在于场景始终可被审阅:下面这张内景中,已贴图的建筑结构与仍是白模的道具并置,一眼就能看出哪些资产已经跑通管线、哪些还没有。

Maya 视口中从外部观察的已贴图月球基地
外壳材质指定完成,在 ACES 色彩管理下审看
内景视角:已贴图建筑与仍为白模的道具并存
分批装配:已贴图建筑与仍是白模的道具并置,进度一目了然

6. 场景陈设与植被

温室培养槽是这座基地叙事的来源——一个在月面上种植粮食的居住舱——因此植被承担着真实的分量,而不是用来填空的。

它也贡献了整个项目最具教学意义的一次管线失败:用 Paint Effects 制作的植被在视口中显示正常,却在最终渲染中彻底消失。 原因不是 bug,而是一条硬边界——Arnold 无法渲染 Maya 原生笔触(strokes)。解决方式是将 Paint Effects 转换为多边形,再为转换结果指定 Arnold 标准着色器。

值得带走的通则是:对任何只存在于视口里的东西保持怀疑。 一个与渲染器解耦的场景,其内容必须落在渲染器真正能理解的几何与着色器上;而这一步转换应当发生在陈设阶段,而不是渲染前夜。

基地内部培养槽中已转换为多边形的植被
培养槽:Paint Effects 转为多边形并为 Arnold 重新着色之后的效果

7. Arnold 布光与渲染

渲染阶段由两个问题主导。

Z-fighting 在地面上产生了闪烁的黑色瑕疵。这根本不是渲染设置问题,而是几何症状——共面重叠的表面——修复方式是移除重复几何,而不是在渲染器里去调偏移值。这已经是本项目中第三次出现"渲染阶段的症状,成因却在建模阶段"。

噪点与渲染时长是另一重约束,并因使用 GPU 渲染器叠加景深(DoF)而进一步恶化。解决方案不是全局提高采样数,而是**自适应采样(Adaptive Sampling)**配合 OptiX 降噪器——在初始采样数相对较低的情况下依然得到干净的画面,这是一个个人项目在截止日期前务实的取舍。

基地屋顶上的望远镜在 HDRI 环境下的渲染结果
望远镜在 HDRI 环境下的 Arnold 渲染,并启用了景深

8. 合成与输出

最终帧以序列形式在 After Effects 中装配,用于呈现场景的环绕与运镜。

这一阶段也暴露了两个镜头层面的失误,若有第二轮我会最先修正它们:前景因景深压得过重而发虚,以及镜头运动过快,观众来不及读懂空间。两者修正成本都很低,却都是在管线最后 5% 做出的决定,反过来削弱了前面 95% 的工作——这正是应当在早期就把运镜白盒化、而不是把它当作交付包装的理由。

After Effects 中合成月球基地渲染序列的工程
渲染序列在 After Effects 中装配并输出

管线复盘

回看整个流程,最清晰的结论是:3D 美术大约一半是"搭建",另一半是"清理"。 我起初只想把场景做得好看,但很快意识到,如果引擎盖之下的东西——干净的拓扑、合理的 UV、无重叠的几何——是错的,项目一定会在更下游的某处崩掉,而且总是崩在诊断成本更高的那个阶段。

我遇到的四次失败中有三次其实是同一次失败换了件衣服:Unfold 拒绝执行、贴图读成条形码、地面在渲染中闪烁——它们都是几何问题延迟一个环节才浮现。因此修正方案是流程性的而非技艺性的:每完成一个资产就随手清理它,而不是把清理攒到最后集中处理,这也是我最想改变的一个工作习惯。

真正迁移得不错的是交接本身。资产在 Maya 与 Substance Painter 之间来回流转、材质集与套件部件保持对应、包含不透明度与自发光的完整 PBR 通道栈一路带到 Arnold——这些都站住了。相比开始时,我对在这条工具链上作业已经有了明显更强的把握。