内景 仓库混凝土场景内部——从零搭建写实环境的完整拆解
做3D场景有一段时间的朋友,大概率都会遇到一个绕不开的需求:写实的仓库内部环境。无论是给游戏项目做关卡背景、给产品渲染搭一个工业风展示台,还是为动画短片营造气氛,仓库混凝土场景都是出镜率极高的“万能背景”。这个标题看着朴素,真要做得耐看、经得起镜头推近,里面门道其实不少。
这篇内容我把自己反复做这类场景的完整流程整理出来,从尺寸规划、混凝土材质制作、光照逻辑,到布景细节和渲染优化,全部摊开讲。适合刚接触场景搭建的新手,也适合已经能做基础模型、但总觉得画面“塑料感很重”的朋友。我会把每一步为什么要这么做、踩过哪些坑、怎么修正都交代清楚,争取给你一份可以直接上手的参考方案。
1. 项目整体设计与思路拆解
1.1 为什么拿“仓库混凝土”作为场景练习
我之前给一位做建筑可视化的朋友帮忙,他给我看了一批国外工作室的参考图,里面有个很有意思的现象:很多高端商业短片、汽车广告,甚至一些独立电影的过场镜头,背景都选在废弃仓库、混凝土厂房之类的空间。这些地方结构简单但细节丰富,光照条件粗糙却自带质感,特别适合用来练手。
仓库混凝土场景内部这个题材,有四个很明显的练习价值。第一,几何结构不复杂,不需要花大量时间建造型复杂的模型,可以把精力集中在材质和光照上;第二,混凝土材质本身包含大量微细节——裂缝、水渍、起砂、霉斑、水泥修补痕迹,做一次等于把PBR材质的核心逻辑全部过了一遍;第三,仓库里通常有管道、货架、杂物、照明设备,这些布景元素能训练场景叙事能力;第四,它的光照环境介于室内与室外之间,窗户、天窗、人工光源混合,非常考验布光思路。
1.2 核心需求拆解与技术选型
做这个场景之前,先搞清楚你的最终交付形态是什么。是静帧渲染,还是需要运镜的动画?是游戏里的实时场景,还是影视级的离线渲染?不同需求直接决定了技术路线。
我这次做的目标设定为:离线渲染级别的静帧,兼带一小段摄像机推进动画,因此选用Blender加Cycles作为主力工具。选Blender的原因一是免费开源,二是Cycles的光线追踪在混凝土这种高细节材质上表现非常稳定,三是它的材质节点系统足够灵活,方便做多层混合。
如果你做的是游戏场景,那方案要调整为:用低模搭建,配合Substance Painter或者Quixel Megascans的纹理贴图,光照用烘培光照贴图(Baked Lighting),引擎选UE5或Unity。两种路线没有绝对好坏,关键看你要什么效果。我在文章里主要以Blender路径来讲解,但材质逻辑和布景思路其实是通用的,Unity或UE5里一样能用。
1.3 仓库场景的“感觉”从哪来
很多人做仓库场景容易“空”,就是模型都建了、材质也给了,但画面就是缺味道。问题通常出在氛围设计上。仓库不是白墙实验室,它应该有使用痕迹、堆放痕迹、时间痕迹。
动手之前我会先定一个“场景故事”。这次我的设定是:一个半废弃的物流中转仓库,曾经常年存放金属零部件,最近两三年基本闲置,但偶尔还有人临时堆放一些木托盘和旧设备。这个设定决定了场景里的细节方向:地面上要有叉车碾压和金属拖拽的痕�迹,墙角要有积灰和脱落的水泥块,窗户附近因为漏雨要有水渍蔓延的痕迹,货架上有零星遗留的零件箱。
定好故事之后,所有的布景决策就都有了依据。做场景不是堆模型,而是用物件讲清楚这个空间经历过什么。这一步想清楚了,后面反而省时间。
2. 核心细节解析与实操要点
2.1 仓库尺寸与比例规划
比例感是这个场景里最重要的隐性因素。很多人搭建仓库时会犯一个典型错误:层高不够。真实的物流仓库内部净高一般在6到10米,如果层高只做了3米,任何视角都会显得“像办公室改造的假仓库”。
这次场景我按一个中型中转仓来定尺寸:长30米、宽18米、净高7米。这个比例做静帧构图很舒服,做摄像机推进也有足够的空间纵深。地面到顶部的7米高度,让顶部的钢结构桁架、照明灯带、桥架管线都能自然展开。
比例不是随手定的。30米长是考虑到厂房钢柱的标准间距通常为6米,30米正好是5个柱距;18米宽则是考虑到仓库常见的跨度模数,配合三排照明灯位刚好均匀覆盖。如果你做的是小型的社区快递仓,尺寸可以缩到20乘12乘4.5米,但要注意门窗、柱距、货架尺寸都要等比调整,绝不能出现2.4米宽的货架摆在3米层高空间里那种失真。
2.2 混凝土材质制作的核心逻辑
混凝土材质的核心在于“非均匀性”。纯色的灰色混凝土是CG感最重的材质之一,因为真实混凝土没有一处是均匀的。
我的混凝土材质是用程序化纹理混合出来的,大致分五个层次。第一层是大范围的明暗变化,用低频率的噪波纹理(Noise Texture)配合颜色渐变,模拟水泥浇筑时浆料分布不均产生的色差;第二层是细颗粒感,用高频率的小噪波模拟混凝土表面的砂砾质感,这一层通过粗糙度贴图来表现,数值控制在0.75到0.9之间;第三层是裂缝,用单独的裂缝贴图叠加,混合因子控制在0.3左右,只让它在局部出现;第四层是水渍和霉斑,用Voronoi纹理配合低透明度叠加;第五层是边缘磨损,通过Ambient Occlusion(AO)贴图在墙角、柱脚、踢脚位置压暗,模拟积灰和磨损。
值得强调的是,混凝土不能用一个材质贴满全场景。地面、墙面、柱子虽然都是混凝土,但它们的表面处理方式不同。地面一般做过硬化或收光,表面更致密,粗糙度略低,反射更强,而且会有大量叉车碾压的亮痕;墙面则是清水模板浇筑,有模板拼缝和螺栓孔眼;柱子的棱角最明显,磨损最集中。我通常会把材质拆成BaseConcrete、FloorConcrete、ColumnConcrete三个变体,在同一个核心节点树的基础上调整参数。
2.3 摄像机视角与透视构图
仓库这类内景场景,最忌讳的是“平行正对墙面”的构图。正对墙面会把透视感彻底压平,空间的纵深、柱子的节奏感全部丢失。
我这次选了两个机位。主机位放在仓库纵向三分之一的位置,摄像机朝向斜45度方向,让柱子形成前后叠压的层次感,同时把侧面窗户的漏光纳入画面右侧。这个机位的焦距我用了35mm,既保留了足够的视野宽度,又避免了广角镜头带来的边缘畸变。副机位做一段推轨动画,从门口位置缓慢推进到仓库中段,镜头带一点仰角,强调层高带来的压迫感。
构图时注意“前中后”三层关系:前景用一根柱子或一架货架的局部,中景是主要活动区域——木托盘和遗留设备,背景是纵深方向的窗户光和远处的柱列。这三层缺一层,画面都会显得平。前景物体我刻意让它稍微虚焦,景深设在2.8左右,既突出了中景主体,又保留了空间的完整感。
3. 实操过程与核心环节实现
3.1 基础结构建模与顶点规划
基础结构建模有一个原则:能用方盒子解决的绝不用复杂网格。仓库的墙体、地面、顶棚全是平面结构,不需要任何曲面细分,这能省下大量计算资源留给材质和光照。
墙体和柱子我用的是纯立方体加倒角修改器(Bevel)。柱子截面400乘400毫米,倒角半径10毫米,倒角分段2段,这个参数在近距离观察时能保留锐利的工业感,同时避免完全直角带来的假硬边。地面我单独建了一个大平面,30乘18米,然后切成6米见方的网格,方便后面做地面分缝——真实仓库地坪都是有切割缝的,间距通常是3到6米。
顶棚结构我做了轻钢桁架和彩钢瓦屋面。桁架用圆柱体阵列搭出三角结构,钢管直径设定为80毫米和50毫米两种规格,主次分明。屋面板用波浪形修改器,但波纹幅度调得很小,只做漫反射质感,不至于抢视觉重点。
门窗洞口要在建模阶段就预留好。侧面窗户我按2米宽乘1.5米高做了6扇,窗台高度1米。洞口的位置直接决定后面布光的入射角度,所以这一步宁可多花时间确认尺寸,也不要等渲染了再返工。
3.2 混凝土材质节点树详解
我重点讲一下地面混凝土材质怎么做。这层材质我用的混合节点(Mix Shader)把三种基础着色器混合在一起:主体用Principled BSDF,叠加层用另一组Principled BSDF只控制粗糙度变化,破损层用Mix加遮罩。
具体参数如下:主体Base Color用深灰(RGB 0.35, 0.33, 0.30),这个色值偏暖,避免纯灰的死板。Roughness做主通道,用噪声纹理驱动,Scale设为0.8,细节缩放设为4,对比度拉到0.6,这样地面微观起伏明显但不脏。Normal贴图强度我控制在0.4,太高会出现“洗洁精擦过”的油腻感。
裂缝和磨损用混合因子控制。裂缝遮罩我用了程序化生成的Voronoi边缘叠加,阈值调到0.12,让裂缝呈断续状而不是一整条贯穿。水渍区域用第二层Voronoi,颜色调成偏黑的深灰RGB(0.12, 0.12, 0.10),透明度用色彩渐变控制成边缘硬、中间软。
墙面材质略有不同。墙面的模板拼缝我用平面网格细分后,在几何节点或位移修改器里做横向凹陷,凹槽宽度3毫米,深度1毫米,间距1.2米——这是常见的钢模板宽度。螺栓孔眼我直接用粒子系统散布小圆柱体,做了布尔减法,每个孔眼直径18毫米,深10毫米。这些细节在正常视距下不明显,但摄像机推近时就是让画面“可信”的关键。
3.3 光照方案:自然光加人工光的混合逻辑
仓库的光照是整个场景的灵魂。我这次用了三套光源系统。
主光源是侧面窗户的日光。窗户外面我放了一块较大面积的矩形光(Area Light),尺寸设为2米乘1.5米,功率在Cycles里用Strength控制,我给了800W的等效值,色温设为5600K,带一点点暖。为什么要用矩形光而不是太阳光加环境光?因为窗外我设定的是阴天散射光,矩形光更接近天空光的柔和效果。如果你想要强烈的阳光光束穿透效果,那就换成平行光(Sun Light),配合体积散射(Volume Scatter)做光束尘埃。
第二套光源是仓库内部的工矿灯。这些灯挂在7米高的顶棚上,我用了IES光度学灯光——这是一种定义了真实配光曲线的灯光类型,Blender里通过IES纹理加载文件即可。每盏灯的功率设为150W,色温4000K,带微黄,强度不需要太高,主要作用是打亮地面和货架区域,形成局部暖色与窗外冷色的对比。
第三套是补充光源,也是我觉得最关键的一套。纯靠窗外光和顶灯,仓库深处和背光面会死黑一片,这不是真实视觉感受——真实空间里即使暗部也有环境漫反射。我在仓库纵深处放了两块低强度的面光源,色温4500K,强度只有80W,用于模拟远处开口和环境反射的微弱补光。暗部提亮以后,整个场景的层次立刻丰富起来。
光照还有个很容易被忽略的点:反射遮挡。混凝土墙面看着糙,但并不是完全不反射。我在场景里放了几块大型的平面反射探测器(Reflection Plane,Blender中可配合Glossy BSDF的粗糙度来天然处理),让地面和潮湿区域的光滑部分能映出窗户的形状。这个效果是让场景“活”过来的关键。
3.4 布景细节:从“空房子”到“有人待过”
布景这一步直接决定观感。空荡荡的仓库,材质做得再好也是一张建筑效果图。只有加入符合故事设定的物件,才能变成一个有“生活感”的空间。
我按功能把布景物件分成四组。第一组是重型遗留物:3个木托盘堆叠在仓库东侧,托盘尺寸1.2米乘1米,部分木板破损;一台报废的小型液压搬运车斜靠在柱边,轮子锈蚀。第二组是散落物料:墙角堆放了几袋水泥,袋子做了一些褶皱变形和灰尘遮罩;地上散落着几根钢筋和螺纹钢短料。第三组是仓储设备:两排货架靠墙放置,货架上零星放着几个塑料零件箱,其中一个翻倒。第四组是环境碎片:矿泉水瓶、破损的纸箱、缠绕膜团、扫把。这些物件我不追求每样都精细建模,很多是Quixel Megascans的资产下载后调整比例直接用的,重点在于摆放位置的真实性。
摆放逻辑也有讲究。物件之间要留出人的动线,不能堵成一面墙。我按照“从门口到窗口”的路线,在路线上刻意清空一条通道,通道两侧的物件密度逐渐增高——这种疏密对比能强化空间的尺度感。另外,所有落地物件都加了一点旋转角度,没有一个是完全平行于墙面的,真实世界的随机感就是这样来的。
灰尘和污渍是布景的最后一层。我用了几个透明平面的粒子系统,在物体表面散布灰尘粒子。粒子用简单的圆形贴图,透明度很低,只在大面积的水平面上可见。货架顶部、管道上方的积灰多些,人活动频繁的路径上基本没有灰——这个逻辑跟场景故事是配套的。
4. 常见问题与排查技巧实录
4.1 噪点多、渲染慢,问题出在哪
Cycles渲染混凝土场景最常见的痛就是噪点多。墙面和地面都是大面积漫反射材质,光线在空间里反复弹射,渲染到一定程度后高频噪点仍然去不掉。
我试过几个办法,最有效的是组合拳。第一,渲染采样(Samples)从128提到256,配合去噪器(Denoising)用OptiX或OpenImageDenoise,这两个搭配下来画质提升非常明显。第二,把灯光的采样数均衡分配,尤其是IES灯光涉及的阴影区域,增加灯光采样可以显著减少阴影噪点。第三,开了自适应采样(Adaptive Sampling),阈值设为0.01,噪点一旦低于阈值系统自动停止计算,省了差不多三成渲染时间。另外,如果是日光场景,别忘了开启光斑降噪(Filter Glossy),它能大幅减少焦散类的闪烁噪点。
4.2 混凝土看起来“太脏”或“太干净”
这两个极端我都经历过。太脏通常是把磨损遮罩和裂缝遮罩的混合因子调得过高,导致整个墙面像被火烧过。解决办法是在混合节点前加一个颜色渐变的遮罩,让脏旧感集中在墙脚0到1.5米高度范围内,上部墙面保持相对干净。真实仓库因为空气对流和清洁习惯,上面的墙确实比下面干净。
太干净的问题则出在粗糙度通道上。很多新手把粗糙度设为统一数值,比如全0.6,结果墙面像刷了亚光漆。正确做法是用贴图做微变化,甚至同一面墙的踢脚区域和中部区域都要区分。我通常会把下部区域的粗糙度调低到0.6左右,上部调到0.72,因为下部经常被擦碰,表面更光滑,上部保留了模板原始的毛糙感。
4.3 场景比例失真,怎么看都不对
比例失真在仓库场景里特别容易“看不出来但感觉怪”。我有一个笨办法:在建模阶段就把真人比例尺放进去。具体操作是在门口放一个1.75米高的人体模型,或者用一块标准尺寸的门(2.1米高乘0.9米宽)做参照物。每次调整摄像机或摆放物件之前,切换正交视图看一眼这个参照物,确认它和周边结构的大小关系合理。
柱距和层高之间也有比例惯性。层高7米时柱子截面至少400毫米起,如果层高5米以下还放400毫米的柱子,会显得很笨重。反过来,层高10米的大空间配250毫米细柱则毫无说服力。遇到这种问题,直接用柱距除以柱截面,比值大于15就要考虑调整柱子方案。
4.4 光照过曝或死黑
窗户旁边的墙面过曝,我一般先检查曝光值(Exposure)和灯光强度。Blender的物理单位是辐射度,很多人会不习惯直接用大数值,结果窗边一片惨白。解决办法是用False Color视图模式检查曝光区域,需要保证画面最亮点不超出安全范围。如果窗外日光强,可以在窗户位置加一块薄纱帘,用漫射材质降低入射强度,这个操作同时还能给画面增加一个柔和的前景层次。
死黑区域的排查逻辑正好相反。如果阴影视觉得“压抑到窒息”,不要一味加补光强度,而是补一块反射板。我在场景里沿着背光墙放了几块白色的平面板,材质设为纯白Principled BSDF,开低粗糙度,这样暗部获得的是真实的散射反弹光,过渡自然,不是一盏灯硬打出来的假亮。
4.5 细节纹理出现拉伸或接缝
UV展开这一步做得粗糙,贴图就会出现拉伸,尤其在墙角转折处。我的习惯是所有结构在建完后统一走一遍智能UV投射,再手动修正接缝明显的区域。对于大尺寸墙面,我倾向于程序化节点生成纹理而不是依赖贴图,因为程序化纹理不受UV限制,放大缩小都能自动适配。如果非得用贴图,确保贴图分辨率不低于2048像素,而且使用Triplanar Mapping映射方式,这样在柱子和墙面交界处纹理不会出现明显的“换肤”痕迹。
5. 后期合成与质感提升
5.1 渲染输出参数配置
静帧输出我习惯用PNG格式,色彩空间设置为Filmic Log,这个色彩空间保留暗部和亮部细节的能力比标准线性强得多,后期调整空间大。采样数256,配合去噪,输出分辨率设定为3840乘2160,如果做印刷级输出可以上到7680乘4320,但渲染时间要翻倍。
另外一个容易被忽略的参数是Bounce(光线反弹次数)。默认4次反弹对多数场景够用,但混凝土场景里两个相邻暗面之间会反复反弹,我建议提高到6次,能明显减少角落里的暗部噪声。
动画输出另当别论。我是先输出EXR格式的OpenEXR多层文件,把Diffuse、Glossy、Transmission等通道分开保存,后期合成的灵活性高很多。Cycles的渲染层设置里,把Diffuse Direct和Indirect、Glossy Direct和Indirect分别勾选,后期就能单独控制环境光的亮度或物体的镜面反射强度。
5.2 通过色彩分级做出“仓库调性”
最后一步是色彩分级。我通常的做法是在Blender里先做基础调色,输出后再进DaVinci Resolve或Lightroom做精修。仓库场景的基础基调是“干净中带一点冷峻”,不要一上来就套一个又黄又旧的滤镜,那会毁了材质的质感。
我的调色步骤大致是这样:先是白平衡修正,让窗外光保持中性,顶灯保持微暖,形成自然的冷暖对比;然后拉高中间调的对比度,把暗部压一点,但控制在高光不过曝的前提下;最后HSL调整里把暖色饱和度略微降低,让破旧的红砖、生锈的钢架这些颜色不至于过于跳脱。输出时色彩空间转换成sRGB,嵌入sRGB ICC文件。
这里有一个小经验:渲染出来的图用看大图的显示器或平板检查一遍色准,笔记本屏幕的色偏会让暗部细节失真,尤其是混凝土这种低饱和材质的画面。有条件的话直接进校色过的显示器上定稿。
5.3 个人体会:这个场景还能怎么扩展
仓库混凝土场景搭完一次之后,后续的复用价值非常高。我后来很轻松地就把这个场景改造成了几个变体:一个是把货架清空、关掉主灯、加大窗外光,变成纯冷调废弃仓库;一个是把窗户外光换成夜景蓝光,室内加几盏高色温补光灯,变成了夜景偷拍风格的犯罪片场景;还有一次是直接把这个场景导入了UE5,换了一套动态光照和Virtual Shadow Maps,跑起来做VR演示,效果也相当好。
能把一个题材吃透,比换着花样品类泛泛地做要划算得多。框架、材质逻辑、布光思路这些都是可迁移的,下次你做地铁站台、地下车库、老旧工厂,大部分经验直接搬过去就能用。这也是为什么我一直建议场景学习者不要急着追求“数量”,而是把一个中等复杂度的仓库场景从头到尾做到位,所有的原理和技巧都能在这个项目里练全。