1 Object Postion的运用
如果将该阶段放到base color上
那么移动物体发现物体颜色会根据它的位置发生变化
来用下SpeedTreeColorVariation节点
调整变量的值发现不同位置的叶子的颜色是不一样的
来研究下SpeedTreeColorVariation这个材质函数
它就是将物体的位置拿出来乘以一个值,这里PerInstanceRandom是每个Instance都会给出一个随机值
二 VertexNormalWS节点
顶点法线的信息,如果mask出rgb信息分别得到顶点法线的xyz三个值
如果将下面这段逻辑作为basecolor的话,可以看到,mask出了顶点法线的z值,减去一个参数,乘以一个参数,同它来作为Lerp从白色到草色的Alpha,如果顶点法线朝上,Alpha越大,越靠近B的值,也即白色,反之,草色
效果:雪地中的草
顶点法线朝上的就是白色否则就是草的颜色
同理还有个PixelNormalWS,这个是像素顶点,这个应该更加精细吧
三 Dot节点
如果相机向量和像素法线点积,外侧点积为0,因为垂直,黑色,中心点积为1,白色,内白外黑
取反后就内黑外白
在这段逻辑中,明显有了更丰富的变化
在原来的纯白色节点改成了菲涅尔,作为Alpha,从蓝Lerp到白,细节更丰富
四 如何用Lerp来混合三种颜色
混合两种颜色比较容易,用一张噪声来做alpha
这样做:
第一个lerp混红和绿,让一个TexCoord的R通道中0到0.5的值用于混合红和绿,0.5到1混合蓝
如果把纹理的R通道改成一张噪声纹理,效果就变了
五 做出叶子的流动自发光
先将这段逻辑放到EmissiveColor上,由于地板是个2040*2040大小的,使用了绝对世界位置
效果如下
再将Panner加进来,就出现了流动效果
效果
六 Distance
使用Distance用来取得两个坐标的距离
在视频中
七 制作战争迷雾效果
可以在蓝图中给材质设置参数,每一帧去更新参数(主角位置等等)
只不过设置参数完后,将材质给到渲染目标中
将这个材质放到地板上这个TextureSample是上面那个RT渲染目标
效果如下:
八 将该效果应用到树叶中
我们把上面流动叶子材质的这个TextureSample改成这个渲染目标
效果
将去反的节点断掉
效果
九 将燃烧后的叶子掉落下来
做下叶子的offset
原理:用一个噪声混合两个z方向为负的4维向量,减absuloteWorldPosition乘以(0,0,-1),再用连到Lerp的B节点,A节点是0,Alpha是AbsoluteWorldPosition位置除以地板宽度,Saturate,也即在人物附近的叶子,就会掉的多,否则掉的少
选择Subsurface次表明,模拟雪地透光效果
将这段逻辑连接到SubSurfaceColor上
最终效果: