本章介绍光源
就像在真实史杰一样,在untiy里我们用光来照亮我们的场景
没有光源就什么也看不到 (without lights
广义的说,Unity有动态光源(Dynamic)和烘培光源(Boked Lighting)两种类型的光源
动态光源是游戏里即时运算的光源只要增加光亚un对象到场景即可使用
烘培光源预先运算好光照并存在贴图里
将处理好的光照贴图贴在场景上对象可以提升效能
更多关于烘培和动弹光源的内容请参考官方文件
我们利用灯光组件在场景里打光
相同于Unity其他组件 灯光组件也是依附在对象上
我们可利用Transform工具在场景内移动光源
灯光组件也有四种不同的类型
点光源(Point) 定向光源(Direction) 投射灯(SpotLight)和区域光源(烘培限定)
每一种光源在游戏里的效果都截然不同
点光源效果就像灯泡
点光源从他的位置投射光源到场景对象上
这种光源平均投射到所有的方向所以旋转角度对它没有影响
定向光源效果像是太阳
根据定向光源的方向与角度投射到所有场景的对象
它在场景的位置是无关紧要的
投射光效果像是手电筒或车头灯
投射光源根据它们的方向和角度投射出一个圆锥并且照亮里面的对象
所以灯光的位置和角度对投射光都有影响
区域光源(Area light)只在烘培光照贴图时有作用
区域光源从一个矩平面的一面投射并反射到四面八方的静态对象
除了这四种主要的光源以外
还有另外2种可以影响到照明的对象环境光(Ambient light)和发光材质(Emissive material)
环境光控制场景的整体照明
Edit-Render Setting
Inspector -- (Ambient light)
环境光会和动态光源及烘培光源一起运算
建议把环境光设为黑色,只用场景内的照明工具比较全面控制照明
发光材质可以从材质的Shader里选self-illumin并调整Emission大小来控制
发光材质只会被烘培贴图运算
更多自寻请参观官方教学
光源有几个属性供我们设置
范围(Range)让我们定义光源从对象的忠心可以照多远
范围属性只对点光源和投射灯有作用
如果类别是投射灯我们也可以设定Spot Angle属性
投射角度(spot angle)影响投射光源锥体的斜度
颜色(Color)控制光源的颜色
场景内表示光源的图示也会跟着同步改颜色
强度(intensity)控制光的亮度 这和范围所影响的不同
当想要对一个场景打灯时,组合这些属性建立一个有效的光源是必要的
灯光会因为调整强度和范围而显得更亮因为它们是用不同的原理来照亮场景
灯光除了照明功能之外还可以制作一些效果
GameObject - Move to View
阴影(shadow) 闪光、光晕和叫做投影遮罩的东西
投影遮罩(Cookie)的功能就像是一个虚拟的遮罩或标示
挡在光源前面用来建立阴影团
投影遮罩使用有Alpha的贴图来产生投射用的阴影图案
当使用定向光和投射光时 投影遮罩必须是一张2D贴图
当使用点光源时投影遮罩必须是一个方块贴图(Cube Map)
这是有它的道理
因为定向光和投射光是有方向性的但点光源是没有方向性的
当使用定向光源时可以缩放场景里投射的遮罩图案大小
投射遮罩无法应用在区域光源里
当用烘培制作光照贴图时
烘培只会运算投射光的投射遮罩点光源和定向光的投影遮罩会被忽略
接下来介绍阴影
当灯光里的阴影启用时有2中阴影可以选择
硬式阴影(Hard) 和软式阴影(Soft).
硬式阴影效能比较好
软式阴影在真实感比较有说服力但比较耗效能
阴影有几个属性供我们设置
强度(Strength)设定阴影的黑暗度
调整这个值符合场景要的感觉
最大强度 1 一般来说是太多了
解析(Resolution)就是阴影品质设定
预设情况下,灯光会使用User Quality Settings 设定每盏灯光都可以单独调整这个设定
更多关于品质的设定(Quality Settings)请参阅相关章节
偏移(Bias)控制阴影的便宜量来最佳化阴影
偏移用来设定对象开始显示阴影的距离
数值太低会让作品假假的但数值太高又会让对象有悬浮的感觉
当定向光源加上软式阴影时会多2个额外设定
柔软度(softness)和柔软淡出(Softness fade)
柔软度控制阴影的柔边柔软淡出控制阴影柔和的淡化
更多关于灯光的内容请参阅官方文件
DrawHolo会在灯光周围绘制光晕灯光的范围和强度都会影响光晕呈现
预设光晕设定可以在
Render settings找到
要改变预设光晕设定要先取消Draw holo并增加一个holo组件来取代
闪光很想光晕但是它模拟光通过光学玻璃产生的反射光晕
当有镜头光晕(lens Flare)指定到栏位时光源就会呈现镜头光晕
光源设定里只有强度对闪光有影响
镜头光晕的组件可以指定在对象上
那样的话光源的flare设定应该清楚否则镜头光晕就会被处理两次
相机也必须制定一个闪光层(Flare Layer)组件才会呈现闪光
接下来是着色模式
有两个不同的动态光源着色方法
顶点照明(Vertex lighting)和像素照明(Per pixel Lighting)
顶点照明通常是最快的它会算出多少光要投射在对象网格上
然后把光投射到网格表面
像素照明会计算屏幕上每个像素因此比较耗效能
虽然像素照明比较慢但它可以做到一些顶点照明无法达到的效果
法线贴图、投影遮罩和即时阴影只能用像素照明呈现
投射形状处理和镜面高光处理在像素照明表现也比较好
灯光对于着色速度有很大的影响
像素照明的灯光数量可以从
quality Setting里面来设定
当PlayerSetting里的Rendering path制定forward时
Render mode 这个参数可以明确的指定
灯光要是用定点照明还是用像素照明来处理
重要(Important)会强制使用像素照明
不重要(not Important)会强制使用快速的顶点照明或球谐函数运算
更多关于着色模式和着色路径的内容请参阅官方文件说明