卢鹏

特效美术:溶解材质教程


使用溶解实现纸张燃烧效果

  下图是一个使用溶解材质制作的纸张燃烧效果,一般来说,还需要需要配合火焰和烟雾特效,但是本文只着重讲溶解材质的使用。
   paper_burn01

模型及贴图的准备

模型:

  如下图所示,在max新建一个面片,并使用晶格命令调整一个纸张燃烧过程中的动画效果(100帧),并输出顶点动画到awd文件
paper_burn02
1

贴图:

  这里需要准备两张贴图,如下图所示,一张用作diffuse,一张用作溶解遮罩贴图,这里溶解遮罩贴图比较特殊,是一张彩色的,因为它的rgb分别存贮了不同的遮罩信息。
2

引擎材质的设置以及动画的编辑

  1.  打开awd文件,如图,选择模型mesh文件paper,并为之添加一个关键帧容器(KeyframeObjectContainer),命名为paper_burn。
    3
    4
  2.  选中模型材质,为之添加一个CorrodeMethod方法,具体设置如下:这里利用了maskmap其中的红色通道以及绿色通道(corrodepass下的pass 后面数值0123分别对应颜色贴图的RGBA),将两个通道做了一个乘法,其结果(如下图所示)作为最终的mask控制溶解的进程。另外Corrode,Pre-corrode Size,Color Transition Size参数可以不设置,因为后面key帧的时候会自动覆盖这个值。
    5
    6
    7

  3.  将溶解材质key帧做动画,比较简单,选定关键帧容器,key帧如下到此就实现了本文开头的纸张燃烧效果
    8
    9
    10

溶解材质详解

  下图就是溶解材质方法的参数设置面板,下面将逐一介绍各个参数的作用:
  11

ScaleUV面板

  根据字面意思非常好理解,及缩放UV,默认值为1,这个UV缩放只针对mask贴图UV的缩放。
  12

Corrode面板

  如图,这个面板下面有三个控制参数:
  13

  •  Corrode:这个参数值起作用取值范围为0~1(实际上这个值可以为负数,最低值可以取-Pre-Corrode Size,使得初始状态为默认diffuse颜色),是用来控制溶解进程的参数,最终的mask的值会和这个值比较,如果mask值低于corrode值,则像素被剔除,从而控制溶解的进度。这个值可以被key帧;如图corrode取不同值剔除效果:
      14

  •  Translucent Edge:这个值只有在材质使用Alpha Blend模式才起作用(即材质blend mode选择除normal以外的其他模式),勾选后,Corrode Color将会与材质alpha值相乘。如图所示:勾选此值前后对比,这里我将Corrode设置成黑色,blend model 设置成layer,勾选后材质边缘变透明了
      15

  •  Blend Tybe:这个混合类型其实用来混合Corrode color和diffuse贴图颜色的,目前有两个值Override和multiply,效果分别对应photoshop的normal(正常)和multiply(正片叠底)。如图我将Corrode Color调整成白色和红色;效果对比:
      16

Corrode Pass面板

  这个面板主要作用是用来控制最终的mask结果,最多可以使用贴图的两个通道进行混合操作得到最终的mask贴图,如图共有四个参数:
  17

  •  Pass:混合mask的其中一个值,只能取maskmap的RGBA通道的其中一个通道,取值0123分别对应贴图RGBA
  •  Mask Type:决定混合mask的第二个值,最终的mask则由这两个值混合而成,混合方式由【Second Pass Blend Type】决定:如图:MaskType共有6个参数值;
      18
    • PRIMARY_PASS_ONLY:         表示mask贴图仅由第一个值决定;
    • SECOND_PASS:             表示混合mask的第二个值也取自maskmap的RGBA通道其中的一个通道,由Second Pass的值控制取哪一个通道;
    • SECOND_PASS_U_FORWARD        表示混合mask的第二个值取自maskmap的UV值的U值;
    • SECOND_PASS_U_BACKWARD       表示混合mask的第二个值取自maskmap的UV值的1-U值;
    • SECOND_PASS_V_FORWARD        表示混合mask的第二个值取自maskmap的UV值的1-V值;
    • SECOND_PASS_V_BACKWARD       表示混合mask的第二个值取自maskmap的UV值的V值;
  • Second Pass:只有当Mask Type 选择ECOND_PASS时才能被激活,取值范围为0~3,分别对应maskmap的RGBA通道。
  • Second Pass Blend Type:决定混合最终mask两个值的混合模式,取值min(这里对应的是Photoshop里面的【darken(变暗)】)和multiply。
    下面我们将Pass 值取0,Second Pass 取值2,Second Pass Blend Type取值min,改变Mask Type值作对比加深理解:

    • 当MaskType 取值PRIMARY_PASS_ONLY时,最终mask取值为maskmap的红色通道,最终燃烧效果如下图所示:
        paper_burn03
    • 当MaskType 取值SECOND_PASS时,最终mask取值为maskmap的红色通道和蓝色通道的最小值,最终燃烧效果如下图所示:
        19
        paper_burn04

    • 当MaskType 取值SECOND_PASS时,最终mask取值为maskmap的红色通道和V向从0到1的线性渐变图的最小值,最终燃烧效果如下图所示:
        20
        paper_burn05

Corrode Color面板

  这个面板主要作用是混合两个颜色到溶解边缘,面板分为两部分,每部分都有三个选项,两个颜色可以单独控制羽化宽度:
   21

  • Need Precoorode 和 Need Color Transition 分别控制corrode color 和 Transit color 是否激活;
  • Pre-Corrode Size 和Color Transition Size 分别控制 Corrode Color 和 Transit Color 的羽化宽度(当然这个宽度受最终mask渐变的影响,实际上是个百分比),一般来说Pre-Corrode Size值要大于Color Transition Size;
    • 如图设置,我们可以得到一个效果,直观的看这些参数的作用:
      22
      23

PS:

本文为溶解功能介绍,后面如果对shader有更新,本文也会随之更新;
后面有时间或许会更新一些溶解的不同用法教程。
如果有疑问或者错误不足之处,请和TA组联系!欢迎交流,我们会及时补充纠正!