Shader Graph6-Dot Product节点(下)

一、模拟衣服材料

首先我们来观察下面衣服材质

第一个图是棉毛织物,第二个图是丝绸,m黄线表示表面最高的位置,b蓝线表示表面边缘位置。我们可以看出棉毛织物的m线比较亮,b线比较暗,而丝绸的m线比较暗,b线是比较亮的,所以下面我们要使用菲尼尔效果模拟不同布料的效果。

神秘海域2的衣服光照公式,这里感谢John Hable和Ben Cloward的分享。

 二、打开UE,新建材质,打开Shader Graph

Camera Vector是由物体顶点指向摄像机的向量,它会一直朝向你的眼睛,在Shader Graph6-Dot Product节点(上)中讲过了,PixelNormalWS为物体像素法线方向。

它的效果与之前的效果的一样的,因为我们的两个参数都是1,下面我们改一下参数值。先将Power的Exp的值改为4,出现下面第2个图效果,继续修改Multiply的参数B改为4,出现下面第3个图效果,第一个图是两个参数都是1的情况。

我们发现参数1控制内部光亮的范围,参数2控制内部光亮的强度。现在内部的光亮有了,然后我们需要加个外部的光亮。

修改一下Shader代码,添加外部效果,外部效果我们需要多加一个OneMinus节点,最后还要使用Add节点将两个效果叠加,下面我们的参数都改为4的效果。

 三、下面我们添加一个布料的Texture,测试一下我们的Shader。注意这里我们把参数调整为参数1=1,参数2=0.5,也就是内部亮度变暗,发光的范围变小。参数3=3,参数4=1.5,也就是外部不发光的部分变大,亮度变暗。

不打光的情况是图一,打光的情况是图二。

在UE中Material左上角Lit为打光,Unlit为不打光。

这里面我们引入两个贴图,一个是布料的Texture,一个是布料的Normal。这里需要注意的是,要将布料的Normal转换为世界坐标,才可以与Camera Vector进行点积运算。最后我们的布料Texture要与内外光圈叠加的结果相乘,然后把Normal连接到Normal上。

猜你喜欢

转载自blog.csdn.net/zhuziying99/article/details/129989462
今日推荐