以下内容针对入门或者入门不久的美术们,主要介绍想入门unreal4的美术们一点学习心得。
一.Unreal4的物理材质
在unreal的shader体系(ue4)中:金属漫颜色非纯黑,而传统PBR shader体系(Vray)中金属的漫反射是纯黑的,所以在UE4中的漫反射颜色应按照传统渲染(Vray)中反射颜色(使用RGB衰减曲线控制反射颜色另当别论)来调。
注意该配图中上方的颜色条显示的是变化关系,而不是对应关系。其良苦用心是因为在该图表中输出值要么是0(纯黑),要么是1(纯白),输出2或者3的时候就不能直接表示成颜色了,所以这么缩放下对应关系,可以清楚的表明颜色的递进关系,在之后配图出现相同情况就不再做解释了。
4.Ceil节点(进位取整数曲线)
在实际运用中,这个也叫循环,循环的起点值是0(注意不是Xa),循环的终点值是输入值Xb,而输出值Y就是0到Xb这个区间。那Xa有啥用呢?因为比如Xa是个变量的时候,不受主观值控制的时候,或者Xa很大或者很小的时候,可以通过设定Xb值来限定循环的次数,假定一个值10(它可以是空间单位,时间单位),但我们要限定每到5循环一次,那么就设定Xb为5就行了,无论这个输入是100,是250,始终每到5就循环一次,最后输出值都在0到5这个区间内。在比如这个单位是时间,游戏运行时间一直在增加,但是我们可以通过该节点做出一个循环计时器,每到一个规定时间就循环一次,触发一个事件。
6.Power节点(曲线绝对值)
用在颜色来讲就是“缓进”“缓出”。
7.Lerp节点(混合)
8.HeghtLerp曲线
9.Clamp节点(输出曲线)
开始循环的。
二.基本材质属性
玻璃材质漫反射为1(纯白),metal 为1,opacity大概0.5(视情况),材质类型(blend mode)改为translucent,出现折射项后,用lerp(混合)节点从1混合1.517,遮罩alpha则连接菲涅尔节点(无任何参数),如要透过玻璃看到后面物体的反射,玻璃材质需要将translucent lighting mode调为surface。
三.单面和双面
ue4中和vray一样,默认单面渲染,所以对于半透明物体,需要开启two side 才能把背面信息进行计算,比如单面的纱帘,如果没有厚度,纯单面模型,则需要开启two side才能计算背面的受光情况,在vray中叫做Vray 2sidematerial,在ue4中则在mesh面板勾选,而且游戏引擎对于单面模型,还有个特殊性就是只渲染法线正面面对视角的面,就是说一个片,不勾选2side,又是法线背面对着视角,将会看不见,vray则不存在这个问题,只是会另一面不计算信息而已,但至少面对视角的面是肯定会计算的。
四.Unreal4节点
对于一名美术来讲,最重要的G点莫过于材质面板各种节点的运用,对于习惯了像Vray之类的离线渲染流程的过渡到游戏引擎的美术人员,有一点很大的变化就是:之前的各种渲染是面板把种种功能图形化了,使用者在图形化的面板来进行操作,例如在Vray里面有“混合”贴图界面,“合成”贴图界面,“输出”贴图界面,而且各种功能的名字会考虑到美术使用者而不会强调其中的数学原理,例如“VrayDirt污垢贴图”,实际上它是很多数学节点的图形化集合。但是在游戏引擎中,图形化的界面被各种节点取代,使用者会更多的接触到相对数学层面的操作模式,所以下面就要讲一讲个人对UE4中的这些节点的认识。
五.强调下RGB数学
五.强调下RGB数学
在这之前,先想说说图形学和数学的关系。其一,任何一个颜色,由RGB三原色构成,包括Alpha透明,在数学层面,其就是4个通道的数字,无论其数字是整数还是小数。任何一个空间位置,也是由xyz三个坐标值(三通道)来表 示,其也是数字,包括移动,旋转,缩放,无非就是在原点三通道基础上附加上另外一个向量xyz值。所以无论我们处理一个颜色的变化(贴图变化也是颜色变化),还是处理一个空间变量,本质上就是对其的数字的处理。所以,无论“混合”也好“衰减”也好,它们本质就是数字的处理,并且如果我们把输入量当做X(这里的X可以是四通道的数据如颜色,也可以是三通道的数据如坐标和向量,也可以是单通道如时间),输出量当做Y(示意同左),这些功能都可以画出它们独特的曲线。 我们运用这些节点的目的,无非就是让颜色,时间,空间这些冷漠的数字,按我们的要求让它们相互转化,或者自己和自己转化。
六 .15条功能曲线
六 .15条功能曲线
接下来要讲的就是具体的这些“功能”的曲线,只要输入了一个X值,就会输出对应的Y值。
以下配图顶上部分的颜色条,是为了单纯的显示当输入值X变化时,输出值Y当作颜色是什么颜色(在UE4中规定了颜色范围由0到1表示,可以是范围内的任意数字),如果输出值Y超出了0到1的范围,则显示的是颜色的变化关系,并不是准确的对应关系。
以下配图顶上部分的颜色条,是为了单纯的显示当输入值X变化时,输出值Y当作颜色是什么颜色(在UE4中规定了颜色范围由0到1表示,可以是范围内的任意数字),如果输出值Y超出了0到1的范围,则显示的是颜色的变化关系,并不是准确的对应关系。
1.ABS节点(“绝对值”曲线):
如运用在空间坐标中,如果把时间当做X输入sin曲线(后面会讲到),则sin曲线输出的值Y在-1到1之间,高中知识,如果再把这个值当做X输入ABS曲线,就会得到的Y是个0到1的区间,接着再怎么用就看你的需要了。当然,这是和sin曲线结合的情况,如果不结合,你需要明白的就是它永远不可能输出负数就行了,即输出值区间为大于等于0,可以是无穷大。
其特点就是不会输出为负的值,一定程度上适用于颜色(UE4中RGB值在0到1之间,其他软件也有0到255的,但还是会转化成0到1的),因为颜色数据不可能是负值。
如运用到颜色中,一个三通道数据,0.5,0.5,0.5,输入了以后输出出来结果依然是0.5,0.5,0.5.如果它是颜色,这是一个中度灰色,介于纯黑和纯白的中点。哪怕输入的是负值,输出后就变成了正值。如运用在空间坐标中,如果把时间当做X输入sin曲线(后面会讲到),则sin曲线输出的值Y在-1到1之间,高中知识,如果再把这个值当做X输入ABS曲线,就会得到的Y是个0到1的区间,接着再怎么用就看你的需要了。当然,这是和sin曲线结合的情况,如果不结合,你需要明白的就是它永远不可能输出负数就行了,即输出值区间为大于等于0,可以是无穷大。
2. Frac节点(取小数曲线)
所以这个曲线非常适用于颜色,比如一个三通道数据2.2,5.3,45.25(无论你是怎么计算的到的不重要),输入该节点以后得到的Y值作为颜色来显示的话,和541.2,125.3,-512.25输入以后得到的Y值作为颜色来显示是一样的颜色,因为输出值都是它们的小数部分:0.2,0.3,0.25。
3.Floor节点(退位取整数曲线)
所以这个曲线非常适用于颜色,比如一个三通道数据2.2,5.3,45.25(无论你是怎么计算的到的不重要),输入该节点以后得到的Y值作为颜色来显示的话,和541.2,125.3,-512.25输入以后得到的Y值作为颜色来显示是一样的颜色,因为输出值都是它们的小数部分:0.2,0.3,0.25。
3.Floor节点(退位取整数曲线)
注意该配图中上方的颜色条显示的是变化关系,而不是对应关系。其良苦用心是因为在该图表中输出值要么是0(纯黑),要么是1(纯白),输出2或者3的时候就不能直接表示成颜色了,所以这么缩放下对应关系,可以清楚的表明颜色的递进关系,在之后配图出现相同情况就不再做解释了。
4.Ceil节点(进位取整数曲线)
5.FMod节点(余数曲线)
在实际运用中,这个也叫循环,循环的起点值是0(注意不是Xa),循环的终点值是输入值Xb,而输出值Y就是0到Xb这个区间。那Xa有啥用呢?因为比如Xa是个变量的时候,不受主观值控制的时候,或者Xa很大或者很小的时候,可以通过设定Xb值来限定循环的次数,假定一个值10(它可以是空间单位,时间单位),但我们要限定每到5循环一次,那么就设定Xb为5就行了,无论这个输入是100,是250,始终每到5就循环一次,最后输出值都在0到5这个区间内。在比如这个单位是时间,游戏运行时间一直在增加,但是我们可以通过该节点做出一个循环计时器,每到一个规定时间就循环一次,触发一个事件。
6.Power节点(曲线绝对值)
用在颜色来讲就是“缓进”“缓出”。
7.Lerp节点(混合)
8.HeghtLerp曲线
9.Clamp节点(输出曲线)
开始循环的。
12.OneMinus节点(反转曲线)
13.Exponential Density节点(指数密度曲线)
14.Sphere Mask节点(球形遮罩曲线)
15.SphereGrandient-2D节点(球形渐变曲线)
理论大概就是这样了,实际运用我也没有太深入的了解。写出来也是为了加深我自己的印象,以便以后能熟练运用。
对于其他的灯光功能,材质选项这些看文字和解释就能明白,还不懂就看官方的ContentExamples场景,很多功能一看就明白了,复杂的点恰恰就是这些数学和图形功能的转化,也是作为游戏引擎从业者最需要具备的。
理论大概就是这样了,实际运用我也没有太深入的了解。写出来也是为了加深我自己的印象,以便以后能熟练运用。
对于其他的灯光功能,材质选项这些看文字和解释就能明白,还不懂就看官方的ContentExamples场景,很多功能一看就明白了,复杂的点恰恰就是这些数学和图形功能的转化,也是作为游戏引擎从业者最需要具备的。