县城夜晚场景这类题材,在UE4环境美术里其实很有代表性:场景整体规模不大,但内容密度高、灯光类型多、生活化细节杂,稍不注意就会被小物件和自发光材质把性能拖垮。标题里说“用UE4引擎做了一个多月”,这一点都不夸张——一个县城夜晚街道场景,需要处理的不是单个技术难点,而是灯光、材质、资产规范、画面验证、性能优化这一整条链路的组合。
先把这个项目类型最值得关注的几个点说清楚:
- 氛围靠灯光系统 + 后期处理控制,县城的“夜晚感”不是把灯调暗,而是把光的关系做对。
- 辨识度靠建筑结构、招牌、路灯、居民楼窗户、小卖部门口的光,这类细节比单纯高模更出效果。
- 稳定性靠资产规划、遮挡剔除、DrawCall 控制和阴影设置,白天看不出来的问题,夜景一上就全暴露。
- 制作周期一个月,说明迭代、验证、返工本身就是流程的一部分,不能等做完再看效果。
这篇文章会围绕“县城夜晚游戏场景”这个实际产出方向,完整拆一遍 UE4 的制作流程:从场景需求拆解、环境准备、资产组织、灯光材质调试,到画面验证、性能观察、常见问题排查和工程化建议。适合正在做 UE4 环境美术、开放世界填充场景、独立游戏氛围测试的开发者,也适合第一次尝试夜景场景、想少走弯路的新人。文中所有命令和参数都给出通用模板,具体数值需要按你自己的工程和机器配置调整。
1. 场景项目技术拆解与能力速览
先把这个项目当成一个标准 UE4 环境美术工程来拆。下面是项目级别的技术点整理,方便你判断它和你的需求是否匹配:
| 项目类型 | UE4 环境美术 / 场景制作 |
|---|---|
| 场景主题 | 县城夜晚街道 |
| 核心工作内容 | 街区布局、建筑模型、灯光系统、自发光材质、后期处理 |
| 灯光组成 | 月光主光源、路灯点光源、招牌自发光、室内光溢出、补光 |
| 关键资产 | 低模建筑模块、道路、路灯、电线杆、灯箱招牌、车辆、植物 |
| 质量指标 | 夜晚辨识度、光照层次、明暗节奏、色彩倾向 |
| 性能重点 | DrawCall、阴影数量、材质复杂度、粒子/贴花数量、光照烘焙 |
| 目标平台 | PC 为主,需上移动端则要额外做资源压缩和渲染降级 |
| 推荐分工 | 1 个美术 + 1 个 TA 或程序,单人周期约 4-6 周 |
从上面的表格可以看出,这个项目的核心不是“做出一栋楼”,而是“做出一整条街的夜晚状态”。县城夜景和城市夜景的区别在于光的尺度:县城没有成片的玻璃幕墙和大型广告屏,它的光更多来自路灯、店铺招牌、居民楼窗灯、车灯,光是分散的、局部的、亮度偏暖的。UE4 里做这种场景,重点不是把每一个灯都开满,而是让每盏灯都有存在理由。
1.1 县城夜晚场景的内容清单
开始动手之前,先把场景内容列成一个清单,避免做着做着失控。一个标准县城主干道场景,通常包含这些内容:
- 主干道:双向车道、人行道、马路牙子、斑马线、破损路面贴花。
- 沿街建筑:商铺、居民楼、自建房,高度在 3-6 层为主,屋顶轮廓要错落。
- 招牌:灯箱招牌、发光字、霓虹灯、卷帘门上的喷绘。
- 基础设施:路灯、电线杆、配电箱、垃圾桶、公交站、树池。
- 车辆:停在路边的车、偶尔驶过的车灯。
- 生活细节:晾衣架、空调外机、防盗窗、小卖部门口的冰柜、电动车。
- 环境元素:远处山体剪影或者乡镇天际线,地面水渍贴花,路灯下的光晕。
这份清单建议在项目开始时就定好,每个类别都要有对应的资产目录和负责人。一个月周期听起来长,其实大部分时间是在反复调整光的强度和颜色,资产本身反而要在一开始就定好规范和数量上限。
2. 适用场景与使用边界
县城夜晚场景适合谁来用?如果你正在做以下这些项目,这套流程可以直接参考:
- 独立游戏或小型团队项目里需要一张有生活气息的夜晚地图。
- 开放世界项目里用县城/乡镇区域填充,做一个“非地标”但能产生记忆点的环境。
- 影视预演、短视频取景、虚拟制片里的县城夜景背景。
- UE4 环境美术作品集项目,需要展示一套完整的夜景场景制作思路。
它能解决的问题也很明确:从零开始搭一个县城夜晚街道,包括灯光系统、材质参数、场景验证和性能调优。你跟着流程走完,能拿到一个至少能看的夜景场景,并且知道自己的机器瓶颈在哪里。
但要有一个边界:这套流程解决的是“场景怎么做”,不解决“玩法怎么做”。如果你要在这个场景里加交互玩法、NPC 寻路、大型物理系统,那需要另外设计游戏性部分。另外,县城夜景的氛围非常依赖参考图,建议制作前先收集一批真实县城夜晚的照片,把色调倾向和灯光亮度定下来,这和美术能力同等重要。
合规方面也要特别注意:
- 建筑、招牌、品牌图标不要直接使用真实商户的商标和店招,可以做成“类风格化文字”。
- 贴图、模型、材质不要从其他商业项目里扒资源,通过逆向手段提取别人手游的场景资产既违反版权,也会因为资源格式不匹配导致返工。
- 如果场景里出现人脸、车牌、身份证等信息,要打码或替换,发布到公开平台前做一轮敏感内容检查。
- 用 Quixel、虚幻商城资产时要核对授权范围,尤其是项目要商业化时。
县城场景的一个特点就是“太容易撞真实世界”,所以原创性反而更重要。做一个月,其实很多时间就是花在把普通素材改造成有县城气质的过程上。
3. UE4 县城夜景场景制作环境准备
无论你是从零新建工程,还是把场景加进现有项目,先确认环境没问题。下面这套检查清单适用于大多数 UE4 场景制作项目,具体版本和机器配置以你的实际情况为准。
3.1 UE4 版本与基础软件
UE4 系列推荐使用 4.26 或 4.27 作为稳定版本,4.27 也是 UE4 的最终版本,功能完整且插件生态稳定。如果你的项目有明确的移动端目标,要注意 UE4 对移动端的渲染特性支持范围和 PC 不完全一致,需要提前确认。
- 引擎版本:UE4 4.26 / 4.27。
- 可选辅助工具:Blender 或 3ds Max 做模型,Substance Painter 或 Quixel Mixer 做贴图,Photoshop 或 CSP 做招牌贴图。
- 版本库:GitHub、SVN 或 Perforce,UE4 工程一定要纳入版本管理,LightingBuild 配置、蓝图、配置目录能被误改后回滚。
3.2 硬件建议
县城夜晚场景的面数不会特别高,但 UE4 在编辑器里的实时渲染、阴影重建和灯光迭代比较吃配置。桌面台式机建议 32GB 内存起步,显存 8GB 及以上比较稳妥。如果显存只有 4GB-6GB,也不是不能做,但需要严格控制贴图分辨率和阴影级联,同时把视口分辨率降到 75% 左右预览。笔记本的话尽量关掉体积雾和高阴影质量,避免编辑器卡死。实际占用要以你工程的资产和灯光数量为准,没有一个固定的“多少显存够用”的答案。
3.3 创建工程与基础设置
创建工程时选择“空白(Blank)”模板即可,不需要额外的游戏模板。项目创建后先做三件事:
# 1. 设置渲染风格:Edit -> Project Settings -> Rendering # 移动端项目选 Forward Shading,PC 项目可以用默认 Deferred Shading # 2. 设置默认地图 # Edit -> Project Settings -> Maps & Modes,把默认地图指向你的主场景 # 3. 设置输入映射(配置外接设备时必看) # Edit -> Project Settings -> Input,绑定 Action / Axis 事件如果你要接外接手柄、方向盘、体感设备这类硬件做场景调试,UE4 的输入映射集中在 Project Settings -> Input 里,PC 上外接设备一般通过 DefaultInput.ini 做按键和轴映射。设备能不能被 UE4 识别,先看 Windows 设备面板里能否正常识别,再在蓝图里用Print String打印输入事件确认。移动端的外接设备映射相对复杂,涉及厂商 HID 协议,建议先用官方文档确认设备支持情况,不要把 PC 映射方案直接套到移动端。
3.4 目录结构规划
场景资产一多,命名和目录不整理,一个月后自己都找不到东西。建议 Content 目录下按这个结构组织:
Content/ |- Maps/ # 地图文件,主场景和测试场景分开 |- Assets/ | |- Buildings/ # 建筑模型和贴图 | |- Props/ # 路灯、电线杆、招牌、车辆等道具 | |- Vegetation/ # 树、灌木、花坛 | |- Road/ # 路面、路牙、斑马线 | |- Materials/ # 共用的材质实例 |- UI/ |- Blueprints/ |- Textures/注意 UE4 内容路径不能有中文和特殊符号,目录层级不要超过 8 层,否则寻址可能出问题。每个资产文件建议加前缀,比如SM_LampPost_Street、MI_Sign_Neon、T_Road_Asphalt_D,方便搜索引擎和插件批量处理。
4. 县城夜晚场景搭建与资产组织
环境搭好之后,先把场景的地形、道路、街区的“骨架”摆出来,再进入灯光环节。不要在只有一盏平行光的时候就开始抠招牌细节,那样效率很低。
4.1 街区平面布局
县城街道的特点是宽度偏窄、建筑贴线率高、街口密度大。用 UE4 里放 Blocking Volume 或者简单 Box 模型先把主干道、十字路口、路牙和建筑占地标出来。这一步的目的是确定视野范围、摄像机路径和取景方向。
建议把场景主干道控制在“街道宽度 12-16 米,两侧建筑高度 12-24 米”这个尺度里,它接近真实县城老街的比例。如果建筑太高、街道太宽,就会变成“城市广场感”,不像县城。UE4 的单位是厘米,所以 12-16 米就是 1200-1600 单位。
4.2 模块化建筑资产
县城建筑不追求单体高精度,而是用模块化拼接。常见做法是做一套基础建筑盒子:一层商铺、标准层、顶层、山墙,然后通过组合变化拆出不同建筑。每个模块的面数建议控制在几百到两千三角面以内,纹理用 512 或 1024,招牌和门窗单独拆 UV。
模块化资产的好处是能在不改模型的情况下做出几十栋楼的变化。你只需要调整商店招牌贴图、立面颜色、二楼阳台形式,就能获得完全不同的建筑观感。这个阶段特别注意屋顶轮廓:县城建筑的屋顶绝对不是一个平面,水箱、太阳能、瓦片坡顶、露台围栏都能成为夜景剪影的关键。
4.3 道路与地面细节
路面是县城夜景最容易出效果也最容易忽略的地方。沥青路面贴图建议用 Tiling 纹理,叠加一张大范围的破损贴花,让路面有补丁感。斑马线、车道线不要用模型做,用贴花(Decal)叠加,方便随时调整位置。
夜晚路面上最提气氛的是水渍和反光。你可以铺半透明材质的水洼贴花,并通过材质参数的粗糙度变化,让路灯、招牌的光在路面产生高光反射。这个细节做好了,夜晚街景立刻会“湿”起来,也更有生活感。贴花数量要控制,一张贴花就是一个 DrawCall,全场景几十张贴花也会积少成多。
4.4 道具和生活化细节
电线杆、路灯、配电箱、垃圾桶、空调外机、晾衣架这些道具,统一用低模 + 基础材质完成。它们单个看起来不惊艳,但成群出现时能迅速建立县城身份。尤其是电线:跨越街道的黑色电线在夜景里是非常强的视觉引导,直接单位置没有线缆模型的话,会少很多味道。
道具的摆放要遵循一个原则:所有道具都要有功能逻辑。路灯一定在路牙边上,配电箱一定在楼角,垃圾桶一定在店门口附近。摆错了,人眼会直觉性觉得“不合理”,即使说不出哪里有问题。
5. UE4 灯光系统与县城夜晚氛围控制
进入灯光环节,这是夜景场景做得久的核心原因。县城夜晚的光源类型比城市单纯,但层次更细腻。以下步骤建议严格按顺序做,先主光、再局部光、再后期。
5.1 主光源:月光与天光
夜晚场景的主光通常是定向光(Directional Light),模拟月光。月光不需要照度很强,关键是角度和颜色。一般做法是定向光颜色偏冷蓝紫色,强度很低,开启阴影,角度压得很低,让建筑拉出长投影。阴影的清晰度不要太锐,月光阴影应该偏软,所以把 Shadow Resolution 调低一点,或者加一点阴影偏移。
Directional Light 参数建议(以实际场景为准): - Intensity: 2-5 lux 左右,不要超过 10 - Light Color: 偏冷蓝紫(例如 RGB 0.05, 0.08, 0.15) - Cast Shadows: 开启 - Shadow Map Resolution: 1024-2048 - Direction: 与地面夹角 20-40 度天光(SkyLight)负责天空和环境的微弱散射,让阴影里不是死黑,而是有一点点冷色倾向。如果场景有远处山体剪影和天空,可以再配一个 ExponentialHeightFog,把雾的密度调到很低、颜色调成夜晚蓝灰色,让远处建筑消隐到空气里。县城夜晚远处几乎都是黑黢黢的,雾不要太大,否则会把夜景变成“雾天”。
5.2 街区灯光:路灯、招牌、室内溢出光
街区灯光是县城夜景的灵魂,使用点光源和聚光灯组合。路灯用聚光灯或者带 IES 截光配件的点光源,做出地面光斑,光色偏暖黄。招牌用自发光材质,不做实际灯光,因为招牌本质上是被发光字点亮的表面。
这个阶段有一个核心技巧:不要所有物体都用灯光照亮,而是要让“发光物体”去暗示光的存在。路灯周围的地面、招牌附近的人行道、居民楼窗户里透出的暖光,才是眼睛看到“那里有光”的信号。如果整个街道都用大面积补光提亮,就失去了夜晚的神秘感。
居民楼的窗户是很重要的光源编排工具。手工放几百个窗户点光源会直接拖垮性能。更稳的做法是:建筑窗户用自发光材质,通过纹理和材质实例控制亮灯窗户的数量和颜色;少数关键窗户前面放一两个低强度的点光源,做出光溢到墙面的效果。这样既有细节又有性能。
5.3 自发光招牌材质
招牌材质是整个场景最出彩的部分。做灯箱字的基本材质思路:
TextureSample 招牌文字贴图 -> Multiply(自发光颜色) -> 输出到 EmissiveColor -> 同时作为 Emissive 强度参数,方便在材质实例里调强弱自发光材质的关键不是让招牌越亮越好,而是要控制“过曝边界”。在 UE4 后期里,Bloom 会把高亮自发光扩散开,形成光晕。如果你觉得招牌糊成一团,优先检查两件事:一是自发光强度是否已经超过 3-5,二是 Bloom 阈值是否合理,别让所有中性灰都进入 Bloom 范围。
推荐给同一个招牌制作一个材质实例,暴露Emissive Intensity、Light Color两个参数。这样晚上可以统一把一个区域招牌调暗,把另一个区域调亮,避免反复打开材质编辑器。
5.4 用蓝图控制灯光动态
县城夜晚不需要所有灯都静止,路灯偶尔闪烁、广告牌按节奏变色、车辆灯光移动,能让场景“活”起来。以下是一个驱动自发光材质动态闪烁的蓝图伪代码:
Event Tick -> Custom Time -> Sine (频率可调) -> 转换到 0-1 范围 -> Set Material Instance Emissive Intensity这个节点组合做出来的效果是均匀呼吸闪烁,适合做霓虹灯。如果只需要偶发闪烁,可以在蓝图里用 Random Time 控制开关,比一直跑 Sine 更省性能。动态材质参数只是改变参数,不增加额外材质复杂度,开销可控。但要注意,场景里所有动态灯光和动画材质都会阻止光照烘焙完全静态化,对移动端和低端设备不友好。
5.5 后期处理与色彩倾向
最后放一个全局 Post Process Volume,Infinity Extent 开启,让它影响整个场景。后期参数建议从这几个方向调:
| 后期项 | 作用和调节方向 |
|---|---|
| Exposure | 把曝光压到 0.5-1.0 之间,保留暗部细节 |
| Color Grading | 往冷蓝紫方向偏移,招牌暖色会被衬托出来 |
| Bloom | 强度 0.5-1.0,阈值调高一点,避免过曝 |
| Ambient Occlusion | 强度 0.4-0.8,让建筑墙角、车窗暗部更深 |
| Vignette | 轻微压暗四角,提高集中感 |
| Film Grain | 加一点噪点可以让夜景更真实,移动端慎用 |
后期处理的原则是“先调曝光,再调颜色,最后加效果”。很多夜景看起来假,不是灯光参数错了,而是曝光和颜色倾向没调对。县城夜晚整体是暗的,但暗部不能死黑,要在后期里留出一点点暗部细节,否则看起来像“废弃游戏”。
6. 场景效果验证与画面测试
灯光做完之后,最关键的一步是验证。做一个月的场景,最怕“编辑器里好看,序列器里翻车”。所以要建立一套可重复的验证流程。
6.1 场景验证检查清单
把摄像机放到街道不同角度,逐项检查下面这些内容:
| 检查项 | 判断标准 | 不过关时的调整方向 |
|---|---|---|
| 主光方向 | 建筑投影方向统一 | 调整定向光角度 |
| 路灯光斑 | 地面有明显暖色光斑且边缘柔和 | 调 IES 或点光衰减半径 |
| 招牌亮度 | 能看到发光的字,不糊成一团 | 调自发光强度和 Bloom 阈值 |
| 建筑暗部 | 阴影区有冷色倾向,不死黑 | 增强天光或补冷色点光 |
| 远处天际线 | 有轮廓但不过于清晰 | 调 ExponentialHeightFog |
| 整街节奏 | 有亮区有暗区,不是全亮或全暗 | 关闭部分灯或降低强度 |
| 路面反射 | 有水渍反光和灯柱倒影 | 调整水渍贴花粗糙度 |
建议用中文把这些检查项做成一个表格,美术每天改完灯光后,花五分钟按表格过一遍,比反复凭眼睛看效率高得多。
6.2 用控制台命令做性能与画面快照
UE4 提供了一系列 stat 命令,可以快速判断当前画面开销。这个阶段不需要专业工具,控制台即可覆盖大部分需求。按~打开控制台,输入:
stat fps # 显示当前帧率 stat unit # 显示 Frame / Game / Draw 时间,定位瓶颈 stat scenerendering # 显示 DrawCall、三角形数量、Mesh 数量 r.ScreenPercentage 80 # 降低渲染分辨率,预览时节省性能验证场景时,先固定一个标准视角,再用 r.ScreenPercentage 对比 100 和 75 的观感差别。如果 75 分辨率和 100 看起来差别不大,说明场景细节冗余或抗锯齿策略有问题,可以针对优化。注意这些命令调整的是运行时变量,重启编辑器会重置,不要把它当成永久项目设置。
6.3 序列器与多视角预览
如果要输出作品集视频或演示,用 Sequencer 做一次多机位拍摄。建议在场景里放 3-5 个摄像机机位:街角全景、招牌特写、人行道平视、车灯跟拍、楼顶俯视。每个机位固定参数,逐段渲染,比在编辑器里“飞着看”更容易发现问题。渲染输出时使用 UE4 自带的 Movie Render Queue,能够稳定输出高质量序列帧。素材准备、渲染时长、输出目录都要提前规划,不要边渲染边调灯光。
6.4 外接设备与真机验证
如果场景要跑在移动端或者用手柄调试,需要提前做外接设备映射验证。UE4 的输入映射在 Project Settings -> Input 里配置 Action 和 Axis 映射,PC 上外接设备通过 DefaultInput.ini 管理;手柄设备先在系统设备面板确认能被识别,再在蓝图里打点确认 Input 事件。不同外接设备的映射规则差别很大,尤其是手机手柄、体感设备这类硬件,必须以官方文档和你具体设备的支持情况为准,不能直接套用 PC 键鼠模板。
7. 资源占用与性能观察
县城夜晚场景有一个性能陷阱:场景看似简单,但自发光材质、点光源、贴花会在视觉上很“重”。以下是项目运行期间的性能观察方法。
7.1 怎么看性能开销
用stat unit观察三段耗时:Frame(总帧)、Game(游戏逻辑)、Draw(渲染提交)。县城场景这类纯环境场景,瓶颈通常在 Draw 和 Shadow 上。如果 Frame 高但 Draw 不高,要优先检查自己的场景逻辑和蓝图循环;如果 Draw 明显高,就是渲染管线问题。
阴影是最容易被忽视的消耗来源。多盏路灯开启投影,会产生多张 Shadow Map;招牌自发光虽然不产生阴影,但配合 Bloom 会消耗屏幕空间开销。建议只给路灯和车灯开阴影,招牌、窗户发光全部不开启“投射阴影”。这在光照烘焙场景里尤其重要。
7.2 降低性能开销的常用手段
| 优化方向 | 具体操作 |
|---|---|
| 减少灯数 | 远处招牌改用自发光代替实际光源 |
| 减少阴影 | 只保留路灯和少量关键点光源的阴影 |
| 合并资产 | 把同区域路灯、垃圾桶合并成一个 Actor,降低 DrawCall |
| 使用 HLOD | 远景建筑切换更低面数版本 |
| LOD 设置 | 建筑、车辆设置 LOD 0-2,距离切换 |
| 贴图压缩 | 移动端使用 ASTC/ETC2 格式,PC 视情况保留 1024 以下 |
| 后期裁剪 | 移动端关闭体积雾、动态模糊、Film Grain |
| 光照烘焙 | 静态灯烘焙 Lightmap,减少运行时实时光照 |
这里的数值不固定,比如 LOD 距离、HLOD 生成策略、贴图尺寸,都需要在你自己的机器上跑一遍才能确认。大原则是“能静态就不动态,能合并就不要打散”。夜景的特效粒子也要注意,比如飞虫、车灯尾迹、雨丝,粒子数量一旦超过几十个,在中低端设备上帧率会明显下降。
7.3 编辑器和打包环境分开观察
在编辑器里看帧率,和打包后在独立环境里看,结果可能差很多。项目后期一定要养成“每周打一次包”的习惯。打包后用 launch 参数启动,观察首帧加载、切换场景和长时间驻留后的内存占用。
# Windows 打包后启动示例,实际路径按项目替换 "项目构建目录\ProjectName.exe" -game -windowed -resx=1920 -resy=1080如果机器配置不同,观察到的帧率没有横向对比意义,但同一个工程在不同时刻的数值下降趋势能说明优化方向是否正确。记录下每次优化前的帧率、DrawCall 和显存占用,再对照看改动是否有效,比“感觉变流畅了”可靠。
8. 县城夜晚 UE4 场景常见问题与排查方法
做一个月的夜景场景,一定会反复撞到几个典型问题。这里列一张排查表,出现问题时先对照检查。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 场景整体过亮或过暗 | 曝光值设置不合理 | 打开后期查看曝光参数 | 调 Post Process 曝光,手动锁定曝光值 |
| 招牌发光糊成一片 | 自发光强度过高或 Bloom 阈值太低 | 降低 Emissive,调整 Bloom 阈值 | 单张测试,逐步提高阈值 |
| 路灯在地面没有光斑 | 点光强度太低、半径太小或阴影遮挡 | 查看灯光的 Attenuation Radius | 提高强度、扩大半径、关闭遮光 |
| 远处建筑消失不见 | 指数高度雾过浓或剔除距离过短 | 检查 ExponentialHeightFog 和 Cull Distance | 调低雾浓度,放宽剔除距离 |
| 窗户亮灯数量太少或太整齐 | 自发光贴图设计问题 | 检查贴图亮色区域分布 | 手绘更随机的窗户明暗 |
| DrawCall 突然变高 | 大量独立材质实例或蓝图层叠 | 用 stat scenerendering 观察 | 合并材质、合并 Actor、生成 HLOD |
| 阴影闪烁、漏光 | 阴影偏移不足或重叠阴影 | 调整 Shadow Bias | 加大偏移,减少重叠投射灯 |
| 移动端真机画面偏暖/偏绿 | 色彩空间和目标平台差异 | 在真机和编辑器对比 | 统一项目 Color Grading 和 Gamma |
| 外接设备输入无反应 | 输入映射未配置或设备未识别 | 检查系统设备面板和 UE4 Input 设置 | 按官方文档配置 Action/Axis,重启编辑器 |
| 光照烘焙后暗部死黑 | Lightmap 分辨率不足或漏光被烘焙掉 | 检查 Lightmap UV | 提高烘焙分辨率,修正第二套 UV |
这里特别提醒:阴影问题在夜景里非常显眼。白天场景因为整体亮度高,阴影的小锯齿和漏光还能容忍;到夜晚,任何阴影瑕疵都会被暗部对比放大。排查时优先把 Dynamic Shadow 临时关闭,如果画面立刻干净,就说明阴影参数需要调。
9. 最佳实践与项目收尾建议
一个月时间做场景,工程管理和迭代节奏往往比技术本身更决定最终质量。下面几条建议值得放进项目流程。
9.1 先用小样验证最终氛围
不要一开始就把整个街道铺满。先划出一段约 30 米的街区,把月光、路灯、招牌、后期全部调通,形成一套“氛围标准”。这段小样是后面所有扩展的基准,建筑密度、灯光颜色、材质参数都从这一段往外复制。小样通过后,再铺开整条街,避免做完整条街后发现氛围不对,返工成本巨大。
9.2 灯光参数全部参数化
把路灯强度、招牌亮度、月光颜色、后期曝光统一做成可调节的参数。用 UE4 的 Material Instance 和 Post Process Volume 关键帧,把所有主力灯光挂在同一个父蓝图下,提供几组预设:深夜、凌晨、雨夜、过年红灯笼版。不同预设之间一键切换,一个月里每天调两版也能保证不失控。
9.3 版本管理与备份策略
每天下班前提交一次版本,每个大阶段打一个 Tag。UE4 场景文件是二进制资源,几天的改动一旦丢失会很致命。光照构建、烘焙数据也属于大文件,建议单独配置 LFS 或使用 SVN 锁定,避免多人同时写入冲突。另外,内容目录不要出现“final”“new2”“最终版”这类命名,资产版本靠版本库管理,不靠文件名。
9.4 移动端和合规提醒
如果你的目标是移动端,要更早开始做真机验证。UE4 的移动端渲染管线和 PC 有差异,体积雾、半透明材质、多光源都是移动端大敌。发布时注意对贴图、模型、包体做压缩,并且不要引入未授权的第三方资源。这里再强调一次:不要通过逆向手段提取别人手游的场景、模型和贴图来使用,这种做法既涉及版权风险,也会因为资源构筑管线不一致导致后续难以维护。县城场景的“味道”来自原创的生活细节,不是来自复制。
10. 总结与下一步
这个县城夜晚场景项目最值得参考的,是“灯光分工”的思维方式:月光负责整体氛围,路灯负责街区结构,招牌负责街道趣味,窗户和室内光负责生活感,后期负责把这些光统一成一种情绪。先拆需求,再搭骨架,最后调灯光和后期,这套流程比任何单个节点技巧都重要。
如果你要开始做同类场景,第一步建议这样做:找 5-8 张真实县城夜晚的参考照片,把照片里的光线关系画成简单的明暗分区图,然后照着分区图在 UE4 里摆灯光。你会发现,大多数夜景做得像“白天压暗”,就是因为没有从参考图里提取明暗关系。
最容易踩的坑有三个:一是补光太足,夜景失去了夜的边界;二是招牌太亮,Bloom 把整条街糊成光污染;三是阴影质量太高导致性能崩盘,夜景的阴影设置需要比白天更收敛。
后续可以扩展的方向包括:加入昼夜循环系统,让场景从日落过渡到深夜;加入雨夜状态,路面反射和灯晕会完全改变气质;或者把场景接进 Sequencer 和蓝图交互,变成一条可供玩法使用的夜色街区。建议收藏这篇流程,等真正动手搭县城夜景时,一条一条对照着做。