Unity | 特效系统

什么光怪陆离的特效,统统能搞定!

文 / 丁建雄
图 / 董士阳

小白是单纯为兴趣而写作的独立创作人,如果您喜欢小白的文章,欢迎关注、交流、分享(引用请链接到本文)。

秋天里的笑声

特效系统简介

要让游戏画面栩栩如生,单靠模型贴图和光照是不够的。对于有些应用场景,还需要粒子系统、Shader 和 Post Processing 等方法。

一、Shuriken 粒子系统

  1. 粒子系统是很多游戏引擎都自带的,在unity中被称之为Shuriken(手里剑)。命名的人一定是个狂热的日本动漫迷,因为小白也是从火影忍者中才知道手里剑的,类似于中国的飞镖。
  2. 粒子系统主要参数包括:发射速率、生命周期、空间范围和单个粒子的外观表现等。
  3. unity 粒子系统的属性很多,但是基本上可以分为三类:粒子系统主模块、具体属性模块和Shader。

二、Shader 的初步学习

  1. unity 粒子系统前两个属性主要是对整体效果的优化,Shader则是对单个粒子外观表现的优化。Shader的编码是针对GPU的,用于图形效果渲染,可以极大地改善视觉效果,提升游戏品质。如果说好的3D游戏创新,一部分可以归结为游戏模式,那另一部分游戏品质就是渲染效果了。
  2. unity 中集成了多种标准Shader,比如石头、木头、玻璃、塑料和金属等材质。所谓材质,其实就是一个或者多个Shader 的组合,用于描述真实世界物体表面的物理属性,通常使用PBS渲染方法。
  3. Unity 拥有一个标准的Shader,这个Shader 将多种材质模式统一到一个Shader 中,这样就可以通过修改一个标准Shader 从而创造出各种炫酷的效果。同时,由于采用了统一的Shader 标准,不同的材质可以使用统一的光照计算效果,从而得到更真实的渲染体验。
  4. Shader 的渲染模式:
    Opaque 模式,默认设置,用于渲染不透明物体;
    Cutout 模式,用于渲染完全透明或者完全不透明物体;
    Fade 模式,用于透明度渐变物体的渲染;
    Transparent 模式,用于纯透明模式的渲染。
  5. Shader 的6种贴图:
    Albedo:用于定义色彩和透明度
    Metallic:用于定于材质表面反射率
    Normal Map:法线贴图,用于给物体表面添加刮痕或者凹槽效果,对数学有一定要求,希望深入理解的可以看如下博客:https://www.cnblogs.com/freeblues/p/5742956.html
    英文水平不错的建议看原文:https://github.com/mattdesl/lwjgl-basics/wiki/ShaderLesson6
    数学水平可以的,可以参考这位大神的博客:http://acko.net/blog/making-worlds-3-thats-no-moon/
    Height Map:用于很大起伏的平面(Normal Map 只是用于描述表面曲率变化从而得到光照模拟效果,而对于大的凹凸和断层,则需要很密集的Normal Map 或者根本无法反映,因此引入了Height Map 作为补充)。
    Occlusion Map:用于定义间接光量,具体参考官方文档:
    https://docs.unity3d.com/Manual/StandardShaderMaterialParameterOcclusionMap.html
    Emission:自发光体的色彩和强度。
  6. 高分辨率的纹理设定:Secondary Maps
    用于定义高分辨率下的图像细节信息,详细参见官方文档:https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html
    同时,main maps 里面的Detail Mask可以用于定义显示高分辨率的区域,从而有选择性地显示高分辨率区域。
  7. 创建自定义Shader:Shader 可以通过自定义的方式进行创建,通过修改标准Shader 的参数,可以创造定制化的Shader 代码段。

三、Post Processing 后期处理

  1. HDR (High Dynamic Range) 高动态范围:允许计算机捕捉超出屏幕显示范围的亮度值,这样计算出的画面光场更逼真。
  2. 计算光场时,需要先将色域转换到linear 色域下(默认为Gama)。Gama 色域是为了弥补人眼对颜色的非线性敏感度而设定的更适合人眼显示习惯的色域,但是这种色域并不适合光场的计算,因此必须先进行转换。具体关于Gama 色域和Linear 色域的讨论可以参见如下博客:
    http://www.manew.com/thread-105952-1-1.html
  3. 后期处理特效有很多效果,有时候也不一定就是为了真实,也可以制造出很多特效。

结束语

Unity 特效系统是相当复杂的系统,除了需要专业知识外,更多的需要经验与感觉,还需要有很强的设计情结。其中,对算法要求最高的是Shader 的编程。Shader 的代码编写难度是不大的,关键是要理解设定各种参数背后的数学原理,这部分是有相当高的数学、物理要求的。也只有充分理解了其背后的数学、物理原理,才能在设计的时候变得游刃有余。
当然,对于非常有经验的设计师,充分掌握了设计规律之后,这部分根本不需要从数学物理角度来思考,直接凭感觉就可以了,这就是所谓的直觉。从物理角度来讲是建立了直接的输入 -- 效果输出的对应关系表,而不需要进行中间的过程转化,直接查表就能快速得到结果了,这也是烘焙的原理,哈哈。
既然Shader 如此重要,自然有更专业的第三方插件支持深入的Shader 编辑,比如 Amplify Shader Editor,其作为付费的Assert 插件,自然有更好的用户体验,广受好评。
关于Shader 的使用,有很多专业的书籍去详细探讨,基本可以作为完全独立的课题去研究了,这里就不再展开讨论了。
好啦,这个Shader 花了我两天的时间,不过领略到的魅力却是无穷的。暂时不能继续深入探讨Shader 了,下面要进入 Unity UI 系统的学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容