4、材质与光照:让场景活起来的关键

大家好,我是你们的老朋友。今天我们来聊聊材质与光照。说实话,这是3D场景搭建中最有「魔法感」的部分。你想想看,一个白模场景,加上材质和光照,瞬间就能变得真实可信。我个人觉得,这部分内容掌握好了,你的场景搭建水平至少能提升一个档次。

4.1 创建和编辑材质:给模型穿上「衣服」

材质是什么?说白了,就是告诉渲染器「这个物体看起来应该是什么样」。金属、塑料、木头、石头……每种材质都有自己独特的视觉特征。

在Unity中,创建材质很简单。右键点击Project面板,选择Create -> Material。然后你就可以在Inspector面板里调整各种参数了。

核心参数一览:

  • Albedo(反照率):物体的基础颜色。我习惯先从这里开始调。
  • Metallic(金属度):0是非金属,1是金属。中间值很少用。
  • Smoothness(光滑度):控制表面的粗糙程度。0是磨砂,1是镜面。
  • Normal Map(法线贴图):模拟表面凹凸细节,不改变几何形状。

我在项目中遇到过一个问题:一个金属材质的零件,怎么调都像塑料。后来发现是Metallic值设成了0.5。记住,金属材质要么是0,要么是1,中间值反而会显得不真实。

4.2 理解PBR材质系统:为什么它这么牛?

PBR,全称Physically Based Rendering,基于物理的渲染。嗯,这个名字听起来很唬人,但原理其实不难理解。

传统的材质系统,说白了就是「看起来像就行」。但PBR不一样,它模拟了真实世界中光线与物体表面的交互方式。你想想看,真实世界里,金属为什么会反光?因为它的表面有自由电子。塑料为什么不反光?因为它是绝缘体。PBR把这些物理特性都考虑进去了。

PBR的两大黄金法则:

  1. 能量守恒:反射的光 + 折射的光 = 入射的光。不会凭空多出光来。
  2. 微表面理论:任何表面在微观下都是凹凸不平的,这些微表面的朝向决定了光的反射方向。

我曾经踩过一个坑:在PBR材质里同时把Metallic和Smoothness都调到最高,结果物体亮得像灯泡。后来才明白,金属度越高,反射越强;光滑度越高,反射越清晰。两者叠加,效果会非常夸张。

4.3 添加光源:三种光源的实战用法

光照是场景的灵魂。没有光,再好的材质也白搭。Unity提供了三种主要光源,每种都有自己的用武之地。

4.3.1 Directional Light(方向光)

方向光模拟的是太阳光。它的特点是:光线平行,没有衰减,位置不影响光照效果,只有旋转角度重要。

我个人习惯把方向光作为场景的主光源。调整它的旋转角度,就能模拟一天中不同时间的光照效果。清晨的光偏暖,正午的光偏冷,黄昏的光又偏暖。这些色温变化,都可以通过调整方向光的Color属性来实现。

// 在脚本中调整方向光的颜色和强度
Light directionalLight = GetComponent<Light>();
directionalLight.color = new Color(1.0f, 0.95f, 0.8f); // 暖色调
directionalLight.intensity = 1.2f; // 强度

4.3.2 Point Light(点光源)

点光源模拟的是灯泡、蜡烛这类点状光源。它的特点是:向四面八方发光,有衰减,距离越远光照越弱。

我在项目中用过点光源来模拟篝火效果。把点光源放在篝火模型中间,设置一个橙黄色的颜色,强度调到2.0左右,再配合一个闪烁的动画脚本,效果非常棒。

注意:点光源的Range(范围)参数不要设得太大。范围越大,性能开销越高。我一般控制在10-20个单位之间。

4.3.3 Spot Light(聚光灯)

聚光灯模拟的是手电筒、舞台追光这类有方向性的光源。它的特点是:有方向,有角度,有衰减。

聚光灯有两个关键参数:Spot Angle(聚光角度)和Inner Spot Angle(内聚光角度)。外角度决定了光照的范围,内角度决定了中心亮斑的大小。两者配合,可以做出非常自然的渐变效果。

// 创建聚光灯的脚本示例
GameObject spotLight = new GameObject("SpotLight");
Light light = spotLight.AddComponent<Light>();
light.type = LightType.Spot;
light.spotAngle = 30f; // 外角度
light.innerSpotAngle = 20f; // 内角度
light.range = 15f;
light.intensity = 1.5f;

4.4 光照设置对场景的影响:实战经验分享

光照设置不是随便调几个参数就完事的。它需要你理解场景的氛围和想要传达的情感。

举个例子,一个恐怖场景,我会用冷色调的方向光,配合几个闪烁的点光源。而一个温馨的室内场景,我会用暖色调的点光源,加上柔和的方向光。

光照设置的几个关键点:

  • 主光源:决定场景的整体亮度和色调。通常是方向光。
  • 补光:补充主光源照不到的区域,避免死黑。强度一般是主光源的1/3到1/2。
  • 背光:从背后打光,突出物体的轮廓。强度要低,否则会喧宾夺主。
  • 氛围光:模拟环境中的漫反射光。在Unity中通过Environment Lighting设置。

我曾经接手过一个项目,场景里的物体看起来都「浮」在地面上。排查了半天,发现是方向光的阴影设置没开。开启阴影后,物体有了投影,立刻就有了「扎根」的感觉。

避坑指南:我曾经在场景里放了十几个点光源,结果帧率直接掉到20。后来才意识到,实时光源的数量要控制。一般来说,场景中同时生效的实时光源不要超过4个。其他光源可以用烘焙光照贴图来替代。

4.5 材质与光照的协同工作

材质和光照不是孤立的。它们互相影响,共同决定了场景的视觉效果。

你想想看,一个高光滑度的金属球,在强光下会反射出清晰的光斑。而一个粗糙的木头球,在同样的光照下只会呈现均匀的漫反射。这就是材质和光照的协同作用。

我习惯在调整材质时,先设置好场景的主光源。因为材质在不同光照下的表现差异很大。在暗光下调好的材质,放到强光下可能就过曝了。反过来也一样。

材质类型 推荐光照强度 注意事项
金属(高光滑度) 0.8 - 1.2 避免过曝,反射会放大光照效果
塑料(低光滑度) 1.0 - 1.5 需要稍强的光照才能显现细节
布料(粗糙) 1.2 - 2.0 漫反射为主,需要充足的光照
玻璃(透明) 0.6 - 1.0 注意折射和反射,光照太强会失真

好了,这一章的内容就到这里。材质和光照是3D场景搭建的核心技能,值得你花时间去琢磨。下一章我们会聊聊场景的优化技巧,让你的场景跑得更流畅。

公众号:蓝海资料掘金营,微信deep3321