欢迎光临散文网 会员登陆 & 注册

细节控福利——Unity2D光照系统

2020-01-10 17:50 作者:皮皮关做游戏  | 我要投稿

作者:Yumir

哈喽大家好我是Yumir。用Unity制作了几个2D游戏了,不知道各位有没有注意到我之前的教程里面完全没有使用到光照系统。

为什么呢?如果我是读者我反而会问:

2D要什么光照系统?素材自带光影啊?

而这意味着一旦光影信息发生变化,素材就要回到“第三方”重新绘制调整了。最直观的好处就是当你在制作瓦片地图的素材的时候,你再也不用一个光照画一个新的瓦片了!

于是很多游戏里面会使用3D光照来对2D世界进行照明,但这样意味着屏幕垂直方向也会被计算渲染光线,并且无法生成正确的投影(有第三方插件可以,但是不在今天的讨论范围)。

前不久Unity官方发布了一个光照系统的展示项目,展示了2D光照系统的天花板,可以看到新的光照系统也并没有实现所谓的2D光照,而是用各种奇技淫巧模拟出了光照的效果,如果恰好你正在学习shader或者正准备要学,那么你一定会很喜欢这个项目的。

https://assetstore.unity.com/packages/essentials/tutorial-projects/lost-crypt-2d-sample-project-158673


当然再复杂的场景也是用“0”和“1”组成的(大雾),再复杂的光照也是由几种基本光照模式组成的。Unity提供了五种类型的光照,分别是:"Freeform(自由变形)"、"Sprite(图片精灵)"、"Parametric(多边形)"、"Point(点)"、"Global(全局)"。

Freeform(自由变形) ,该类型的光的形状可以自由调整,调整时需要点击下图这个按钮,可以自定义形状,适合环境中的小片不规则光,比如液体反射在墙壁上的光或者阳光照进洞穴入口的光。

Sprite(图片精灵),这个类型的光非常有意思,官方示例用他做了太阳光线和树叶光斑,实际上他可以投影任何的图片,我已经脑部了一部鬼畜恐怖游戏。通过给组件的Sprite字段赋值,会在对应位置出现一张半透明的图片。

Parametric(多边形),绘制多边形的光,通过Sides字段控制边数,如果还能像PS那样选择多一个选项变成星型我感觉会更有意思。

Point(点),点光源可以说是最常见常用的光源了,模拟中心点发光,可以调整光照和衰减的角度,也可以调整光照和衰减的大小等等。

Global(全局),实际上就是整个场景发光,但是可以通过”Target Sorting Layers“设置照亮的图层,一般选择All。这是每种光都有的一个字段,可以用来设置屏蔽。

注意事项:

1、光的一些属性:

Light Order:光渲染的顺序。

Alpha Blend On Overlap:灯光基于Alpha值混合,如果alpha为1则会遮挡住后面的灯光。

Use Normal Map:让物体表面可以呈现更多细节的光影变化(需要法线贴图,设置方法如下)。

2、事前准备

在使用之前,我们需要现在场景中加载所需要的包。打开unity项目点击Window>PackageManager打开插件加载窗口,下载的两个插件,我用的是2020的版本,2019的版本可能找不到Universal RP,问题不大。

在Project面板点击新建一个渲染管线(Create>Rendering>Universal Render Pipeline>Pipeline Asset)

打开Project Settings>Graphics,将渲染管线拖拽到下图位置。

在Project面板点击新建一个2D Renderer(Create>Rendering>Universal Render Pipeline>2D Renderer)

点击渲染管线文件,将2D Renderer文件拖拽到下图位置(2019版需要选择Custom)

点击Edit>Render Pipeline >Universal Render Pipeline>2D Renderer>Upgrade Scene to 2D Renderer自动将整个场景的材质更新,此时场景应该是一片黑色(因为没有光)如果有紫色的,就需要手动设置材质球为Universal RenderPipeline/2D/Sprite-Lit-Default。

接着就可以开始布置自己的场景光照啦。我试着自己搭建了一个场景,果然我根本不适合做搭建场景的工作hh。实际上因为网上的资源都是自带光影的,想要找合适的素材并不容易,最后找了一堆带法线图的地板素材来做实验。

场景原效果

把几种光都运用上,实际上就是一堆可以灵活控制的透明发光板(→_→),录动图用的软件还录出了残影,实际是没有的。

重新渲染的场景

多边形光源通过调整衰减范围做出了下图的奇妙效果,再给我几个脚本的时间,我要做一个光污染舞台~

想要更多的效果,点击2D Render文件配置不同的混合模式,unity提供了一个默认的混合模式,你可以启用并设置另外三个。

其中Blend Mode是最重要也是最直观的,有四种模式,分别是:

Additive:颜色相加(高光效果)

Multiply:颜色相乘(柔和光)

Subtractive:颜色相减(背光)

Custom:啥也不干,不被影响。

其他属性:

Name:当前Style的名字。

Mask Texture Channel:遮罩纹理通道,这个需要一个通道贴图,选择的通道会被照亮。

Render Texture Scale:渲染纹理比例。

如果想要更炫酷的游戏效果,那就要学Shader啦o(* ̄▽ ̄*)ブ



欢迎加入游戏开发群欢乐搅基:869551769

有意向参与线下游戏开发学习的读者可戳这里进一步了解:http://www.levelpp.com/


细节控福利——Unity2D光照系统的评论 (共 条)

分享到微博请遵守国家法律