环境色与氛围感:底层原理、数字绘画分层及引擎配置指南

环境色与氛围感:底层原理、数字绘画分层及引擎配置指南 最近在美术交流群里看到有人发了一张静物练习图画面构图没问题明暗关系也画出来了只是暗部莫名其妙地扫了一层紫红色。配文是“尝试加入了一些环境色不知道能不能体现氛围感。”评论区很快出现了两种声音一种说“好看有感觉”另一种说“颜色有点脏说不上来哪里不对”。这种分歧很典型。因为它背后藏着一个更本质的问题环境色从来不是“往画面里加了一层颜色”那么简单。同样一笔颜色放在正确的光影逻辑里叫氛围放在没有逻辑的位置就叫脏色。这篇文章会从环境色的底层概念讲起拆解氛围感到底是怎么生成的然后分别给出数字绘画软件里的环境色分层方法、Unity/Unreal引擎里的环境光配置方式最后附上一份可以直接对照的排查清单。读完你会发现判断一张画面的氛围感是否成立其实有一个很清晰的标准。1. 什么是环境色先分清固有色、光源色、环境色很多人在第一次学色彩的时候都背过一句话一个物体的颜色由固有色、光源色和环境色共同决定。这句话听起来很完整但真正开始画画或者调场景时大多数人只记住了固有色偶尔考虑一下光源色环境色则是“想起来才加一笔”。为了把环境色讲清楚先给三个概念划好边界。固有色是物体在标准白光下呈现出来的颜色也是我们大脑里的“常识色”。我们说起苹果会默认它是红色的说起草地会默认它是绿色的。哪怕在深夜的路灯下苹果看起来已经接近黑褐色我们依然会认为“苹果是红的”。光源色是发光体本身发射出来的颜色。中午的太阳光是偏白的夕阳是橙红色偏暖的普通LED台灯是冷白的烛光是黄暖的。光源色决定了画面的第一层情绪它影响的是物体受光面的颜色。环境色则是主光源发出的光打到其他物体表面后被反弹回来的二次光。它没有独立的光源能量通常比主光源弱很多主要出现在暗部、阴影边缘、以及光滑物体的反光区域。用一个简单的例子理解在红墙边放一只白色瓷碗。瓷碗的固有色当然是白色但靠近红墙那一侧的暗部会明显泛出红棕色。这不是碗本身变了颜色而是墙面反射的红光进入了暗部。把同样的碗放到绿色丝绒沙发旁边暗部又会变成绿灰色。同一个物体放置在什么环境里环境色就偏向什么颜色。这里有一个经常被误解的地方环境色不负责“照亮”画面它负责“交代关系”。它告诉观众这个物体旁边有什么颜色的物体、距离大概多远、材质是光滑还是粗糙。所以环境色用得好的画面即使光影很简单也会让人觉得空间关系很丰富环境色用得乱画面就会显得脏、花、平。概念来源强度主要影响区域常见误解固有色物体材质本征恒定整个物体以为固有色就是最终呈现颜色光源色主光源最强受光面以为灯光颜色只影响亮度环境色二次反射光较弱暗部、阴影边缘、反光带以为随手加一个颜色就是环境色小结一下环境色本质是一种有逻辑的间接光颜色。它不是调色盘上的某个预设色而是由光源、材质和空间共同推导出来的结果。2. 环境色为什么能营造氛围感三个底层机制很多人会把“氛围感”理解成一种很玄的东西好像只能意会。但从视觉技术角度看环境色能产生氛围感靠的是三个可以拆解的底层机制。2.1 机制一间接光反射真实世界里的光不会只打一次就消失。太阳光打到地面地面会反射一部分到墙壁墙壁再把带颜色的光反弹到人物脸上人脸又把一部分光反射到周围空气里。这一连串的反弹在渲染领域叫作全局光照也就是GI。而在传统绘画里它对应的就是环境色。如果把这个物理过程简化成一条绘画规则就是邻近物体的颜色会渗入目标物体的暗部。这意味着环境色的位置不是随便选的它一定出现在有反射关系的两个物体之间。画面中环境色越丰富说明这个空间的反射关系越复杂观众接收到的空间信息也就越多。2.2 机制二色彩情绪颜色本身会引发观看者的情绪反应这是色彩心理学一直在研究的内容。偏冷的蓝紫色环境色通常让人感觉安静、疏离、有科技感偏暖的橙红色环境色通常让人感觉温暖、热闹甚至带有紧张感。高明度、低饱和的环境色会带来柔和通透的氛围低明度、高饱和的环境色则容易制造梦幻或者压抑的气氛。这里的关键是环境色承担了画面里除了明暗关系之外的第二层情绪信号。如果只靠光源色和明暗关系画面可以成立但缺少情绪倾向一旦加入带有明确色相倾向的环境色观众的情绪就会被引导到指定方向上。2.3 机制三光影秩序人对画面“真实感”的判断并不取决于画面是否接近照片而取决于光影规则是否一致。比如夜景场景中画面所有暗部普遍带蓝紫倾向暖光源室内场景中暗部带灰棕色和冷色倾向。当环境色在一个画面里保持统一的逻辑观众的大脑会自动补全空间和光线信息这时氛围感就产生了。反过来如果画面里的每个物体各自为政有的暗部偏蓝有的暗部偏绿有的暗部根本没颜色光影秩序就被破坏了。观众不知道这个空间里到底有什么光源氛围感自然就不存在。所以这里可以得出第二个结论环境色的作用是建立颜色关系而氛围感来自颜色关系的统一。颜色多不是问题颜色之间没有逻辑才是问题。3. 环境色配色参考与一个快速模拟脚本进入实操之前先给出一组常用的环境色配色参考。这组参考不是规定数值而是从CG绘画和游戏场景中总结出来的起手方向适合作为项目开始时的验证起点。场景主光源常见环境色氛围倾向晴天户外暖白/金黄天空蓝紫、草地绿灰清新、开阔黄昏橙红蓝紫、紫红浪漫、怀旧、电影感夜晚室内冷白/暖黄小灯深蓝、暗紫、灰棕安静、私密密闭空间单一人工光邻近墙面颜色压抑、聚焦科技场景冷白/青色蓝、紫、品红未来、克制恐怖氛围冷白/绿灰暗绿、紫灰不安、危险如果你不想只靠直觉配色可以用下面这个Python脚本做一个简单的环境色混合模拟。它的功能是把底色和环境色按权重混合帮助你快速验证“在某种底色上混入环境色后会得到什么颜色”这样在做大面积暗部染色之前可以先在数值层面确认方向。# mix_ambient.py # 将环境色与底色按权重混合用于快速验证暗部/反光区域的色彩倾向 def mix_color(base, ambient, alpha): base: 底色 RGB 元组取值范围 0-255 ambient: 环境色 RGB 元组 alpha: 环境色权重0.0-1.0 返回混合后的 RGB 元组 return tuple( int(round(base[i] * (1 - alpha) ambient[i] * alpha)) for i in range(3) ) # 例子墙壁的固有色 base (120, 100, 80) # 旁边红色物体反射出的红棕色环境光 ambient (180, 60, 50) for alpha in (0.1, 0.2, 0.3, 0.5): result mix_color(base, ambient, alpha) print(falpha{alpha:.1f} - RGB{result} HEX#{result[0]:02X}{result[1]:02X}{result[2]:02X})运行这段脚本会看到底色会随着环境色权重升高逐渐失去自己的色相整体向环境色方向偏移。这也从数值上说明了环境色的核心风险权重太高会把固有色吃掉画面发色单一。在日常绘画中暗部环境色的混合权重建议控制在0.2到0.4之间受光边缘的环境色权重控制在0.1到0.2之间。这个范围只作为参考具体数值仍然要根据画面氛围调整。4. Photoshop/Procreate 环境色分层实操在数字绘画软件里做环境色最忌讳的做法是拿一支高饱和度的笔直接在暗部区域铺一圈颜色然后发现调不回来。正确的做法是分层处理把环境色放到独立图层上用混合模式控制它和底色之间的关系。建议按照下面的图层结构来组织一幅画的颜色关系图层结构从下到上 ├── 底色 / 固有色 ├── 阴影层正片叠底 Multiply灰色或冷色 ├── 环境色受光层叠加 Overlay / 柔光 Soft Light ├── 环境色反光层颜色减淡 Color Dodge / 叠加 Overlay ├── 高光层滤色 Screen └── 整体调色层可选为什么要这样分层因为环境色在不同位置发挥的作用不一样需要使用的混合模式也不一样。受光面的环境色比如阳光照射下地面把草绿色反射到人物下巴这一部分通常使用叠加或柔光透明度控制在20%到40%颜色偏草绿或暖黄。暗部的环境色比如背光部分接收天空蓝紫光可以使用颜色减淡或柔光透明度控制在10%到30%。颜色减淡的好处是能让暗部透出环境色同时又不会让画面整体变亮。边缘反光比如头发边缘、玻璃杯边缘适合用柔光图层或者细描边方式处理。边缘反光通常非常细颜色饱和度和明度相对较高。在Photoshop中新建图层后把混合模式改为“颜色减淡”或“叠加”然后用画笔在特定区域涂抹。关键是要控制图层不透明度而不是一步到位。如果发现暗部被环境色染得太厉害先降低图层不透明度再看颜色是否还能透出底色。在Procreate中操作逻辑一样只是入口位置不同点击图层面板右侧的调整按钮就能找到混合模式。这里还有一个容易被忽略的点环境色需要跟随明度变化。在一个整体偏灰暗的画面里环境色的明度也应该相应压暗。环境色永远不可能比主光源更亮否则它就不是反射光而变成了第二个光源整个光影逻辑就会被打破。5. Unity/Unreal 引擎里的环境光与氛围配置对于游戏场景来说环境色在引擎里通常不叫“环境色”而是叫环境光、间接光照或者天光。Unity和Unreal都提供了控制环境光的入口只是名字和层级不同。在Unity中最直接的方式是打开Lighting窗口路径是Window Rendering Lighting然后在Environment Lighting部分进行设置。把Ambient Mode调整为Trilight就能分别设置天空色、地平线色和地面色。这三个颜色分别对应上方、水平方向、下方物体的环境色可以很好地模拟天光反射到物体暗部的效果。下面这段C#脚本可以在运行时调整环境光适合在测试场景里快速预览氛围变化// AmbientLightController.cs using UnityEngine; public class AmbientLightController : MonoBehaviour { void SetNightAmbient() { // 使用三向环境光模式 RenderSettings.ambientMode UnityEngine.Rendering.AmbientMode.Trilight; RenderSettings.ambientSkyColor new Color(0.10f, 0.12f, 0.20f); RenderSettings.ambientEquatorColor new Color(0.06f, 0.08f, 0.12f); RenderSettings.ambientGroundColor new Color(0.02f, 0.03f, 0.04f); RenderSettings.ambientIntensity 0.6f; } void SetDawnAmbient() { RenderSettings.ambientMode UnityEngine.Rendering.AmbientMode.Trilight; RenderSettings.ambientSkyColor new Color(0.45f, 0.40f, 0.55f); RenderSettings.ambientEquatorColor new Color(0.35f, 0.30f, 0.35f); RenderSettings.ambientGroundColor new Color(0.20f, 0.18f, 0.20f); RenderSettings.ambientIntensity 0.8f; } }如果项目使用的是URP或HDRP渲染管线也可以通过后处理Volume中的Color Adjustments来统一整个场景的色温、对比度和饱和度。这个方式和传统绘画里的“整体调色层”非常像它能同时影响场景里所有物体特别适合做氛围校色。在Unreal Engine中环境光通常来自Sky Atmosphere、Sky Light和Directional Light的组合。改变太阳角度或调整Sky Light的Intensity Scale就等同于调整环境色的强度。快速预览氛围时可以打开Post Process Volume搜索Color Grading调整Saturation、Contrast、Color Temperature这些参数。引擎配置的核心思路和绘画完全一致把环境光当成一个独立的颜色输入而不是只调主灯颜色。很多场景一看就是“缺少氛围”往往不是因为主光源不够亮而是环境光区域是纯黑色或纯灰色物体暗部没有任何颜色信息。6. 完整案例一个黄昏走廊的氛围变化把上面的流程串起来模拟一个最典型的场景黄昏阳光从走廊窗户照进来画面一开始看起来很平缺少氛围。下面按顺序调整。第一步确定主光源。阳光色用偏橙黄的暖色色值约#FFB36B强度给到较高水平。方向光负责投影也决定了画面的明暗分割。第二步加入冷色环境光。把走廊背光墙壁、地板和人物背光侧的暗部统一加入偏蓝紫的环境色色值约#4C5A78强度控制为主光源的20%到30%。第三步处理材质差异。走廊的油漆墙面属于高粗糙度表面环境色以漫反射为主颜色扩散范围较大地面如果有抛光材质则会在远处出现细长的反光带这一条可以单独用高光或者柔光图层处理。第四步检查三个区域的颜色逻辑。受光面偏橙暗部偏蓝紫过渡区保持中性灰。如果你看到的画面是“受光面橙色、暗部灰色”说明环境色还没有真正参与进来如果暗部蓝紫过头说明强度过高。下面把调整前后的关键参数记录下来方便对照调整阶段主光源色值环境色值环境光强度画面效果初始#FFFFFF无0平、灰、缺乏氛围加入主光#FFB36B无0.8有了明暗对比加入冷环境#FFB36B#4C5A780.3暗部透气有电影感再加暖反光#FFB36B#4C5A78 #D98A5A0.25空间层次更丰富这个案例不能覆盖所有场景但顺序可以复用先有主光再加环境色最后用反光和高光收尾。不要一开始就在整个画面上泼颜色那样很难判断问题出在哪一层。7. 常见问题与排查为什么你的画面还是不“氛围”环境色翻车的原因很少是不懂概念更多是逻辑和操作细节出了问题。下面整理了几个高频问题。问题现象可能原因排查方式解决方案画面颜色脏环境色饱和度太高或色相太多关闭环境色图层逐层查看或者转为灰度检查明度降低环境色饱和度统一色相倾向画面发灰环境光强度过强压过了主光源先把环境光强度降一半对比让主光源保持最高对比环境光只补充暗部暗部死黑没有给暗部加入环境色观察暗部区域是否有颜色倾向在暗部边缘用小流量笔刷补环境色氛围感不统一每个物体各自加了不同环境色缩小画布看整体缩略图检查色板给场景设计统一色彩脚本再逐物体应用环境色像贴图只是平涂没有跟着物体结构和材质变化模糊掉环境色图层观察色块形状让环境色图层跟随结构走配合蒙版控制区域这些问题的根源基本都落在“环境色缺少逻辑”这一点上。颜色不是越多越好而是越有根据越好。每一块环境色都应该能回答一个问题这个颜色是从哪个邻近物体反射过来的8. 把环境色嵌入项目工作流的六个建议环境色不是孤立技巧如果要在一个项目里稳定复现氛围感需要把它嵌入到完整的色彩工作流中。第一先做色彩脚本。项目开始之前做小色稿把每个场景的色板固定下来。比如黄昏走廊用暖主光加蓝紫环境色冷清实验室用冷白主光加青色环境色。有了总体约束单个美术在执行时就不会随意发挥整体氛围也能保持一致。第二保证灰度关系成立。任何时候都可以把画面转为灰度检查。如果灰度关系不成立环境色再漂亮也无法救回画面结构。环境色可以改变色相和饱和度但不能破坏明度秩序。第三遵守主光源优先原则。环境色是辅助信息不能在画面中抢过主光源的亮度或饱和度。如果一个区域既是环境色又很亮那它实际上已经变成了另一组光源光影逻辑就会出现冲突。第四材质和环境色联动。在引擎里调整物体材质时先检查金属度和粗糙度。光滑表面的环境色会表现为镜面反射粗糙表面的环境色是漫反射两者形状完全不同。材质不对环境色再准也表现不出来。第五用参考而不是空想。找真实照片、电影截图或者直接拍身边的桌面用取色器吸取暗部和反光颜色。你会发现真实环境的环境色往往很弱但非常统一。记住这种“弱而统一”的感觉比记住任何鲜艳的配色方案都重要。第六保持可回退的工作流。在绘画软件中把环境色放在独立图层在引擎里把环境光做成可调参数或者使用后处理Volume。这样随时可以回到某个步骤单独调整不需要推倒整个画面。9. 结语氛围感的答案在光里回到最初的问题“尝试加入了一些环境色不知道能不能体现氛围感。”现在可以给出一个明确的判断标准了——你能否解释画面里每一处环境色的来源如果能说明这一笔颜色有光逻辑支撑观众会接收到清晰的空间关系如果不能那它只是装饰甚至可能是破坏气氛的“脏色”。环境色能不能体现氛围感答案其实不在颜色本身而在颜色背后的光。下次画图或者调场景时可以只先加一层暗部环境色然后在灰度和色相两个维度上分别检查变化。你会发现氛围感不是靠颜色量堆出来的而是靠逻辑统一出来的。这个判断方式可以一直用下去。