您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Game艺视界 于 2022-3-28 18:25 编辑
第30节半透明这节课我们看下光线穿过树叶呈现效果,非常美丽的绿色光芒,今天我们就要在虚幻中创建技术来实现他们
我们通过引擎入门内容自带模型SM_Bush实现下效果,复制一份出来。 我们在第12节课介绍了解过创建此着色器所有技术,创建叶子摆动。 需要创建一个mask通道把摆动叶子区分出来
接下来我们要做的是叶子在背光状态下实现通透效果
首先修改材质光照模式,开启双面次表面散射意思是允许向您的材质添加颜色, 所以第一件事我们创建一个静态不变的颜色红色测试,可以看见整个植被都是红色的了,或者是绿色。
导入我们准备好黑白图然后我们将其叠加到颜色上插入次表面散射
添加TwoSidedSign表达式用于翻转两面自定义照明材料背面的法线,以匹配Phong的功能。+1为正面,-1为背面的双面材料。 完整节点简单植被次表面散射效果
第31节材质包装打包不同明度、次表面散射和粗糙度
这节课所用资产(我给大家准备好了)接下来几周时间讨论树叶着色器也就是今天我们要用的这个树 同样我们先做树叶摆动效果,我们可以复制上面案例材质替换成我们树贴图
接下来合并
树叶摆动效果我们先用红绿蓝做mask
图1是我们颜色贴图的ALPHA通道、图2擦除图一的树枝、图3是我们颜色贴图灰度版将图2叠加到上面并适当调亮ctrl+L、图4是复制了我们的透明通道调灰了色阶、图5将图3+到图4上得到带有明暗变化的图5如下图。我们所做这张图放入颜色贴图的alpha通道中。
回到我们材质节点中,首先提高纹理亮度 接下来我们去掉蒙版中树枝深色部分
接下来 减去0.4是为了减去树枝,在乘以2提高叶子亮度,这里出现了负数用Satureate限制到0—1之间。然后插入我们次表面散射中。(叠加这张我们在ps制作的图就可以使得次表面散射不那么平) 我们在通过alpha通道制作下叶子的粗糙度,不能100%光滑
树枝100%粗糙叶子不是不是十分粗糙
第32节隐藏的面
首先我们修正叶子
我们着色器中uv坐标需要修改,在这里我们引入新的纹理坐标,我们要做的是反转v坐标,遮住我们红绿通道并将他们分开然后合并给到纹理节点 修复 修改我们不透明相乘数值为1.5,之所以是4是因为当时蒙版部分相当暗我想提亮他们。当我们再次看时候发现好多十字交叉面片
我们做一个相机与点法线的点积 材料淡出:取相机的矢量,垂直时,我们得到的值为零。平行时,我们得到白色。 打开双面显示,我们来到背面时候是黑色的,但无论那一边我们希望得到是白色
我们将节点插入透明通道 我们将这些节点插入我们树叶材料,我们看下树叶法线。模型的法线实际上已经被调整过,不是沿着面片的朝向,而是指着离开树木中心的方向。我们实际上想要淡出面法线 虚幻中有两个节点一个叫做DDX另一个叫ddy和这项给你的是表面坡度,所以DDX会给你一个面向对于屏幕的X方向的坡度、ddy会给你一个面在Y方向上相对于屏幕坡度,所以我们最终会得到面法线,两个朝向向量这两者之间交叉乘积,我们得到我们需要的面法线。所以回到我们节点继续制作。 旋转不同角度树叶片淡出
第33节平面法线
平面法线Foliage Normal
本节课讨论平面的法线,使他们不会像平面一样发光。 我们有四种法线 face Normal
Bent Normal Object pivot normals Camora Normals
我们将讨论如何创建,首先我们先开始面部法线。默认情况下,当您从平演的平原构建树叶时,顶点法线直接指向 平面所对的方向尽管这些法线对于平原是正确的,但他们现在在这个特定网格上光线很差。
我们讨论下第二种法线,首先我们在节点处将世界空间转换切线空间在相乘得到正确方式。
连接到材质球法线节点,可以看到下面结果,当然这可能不是我们想要结果,如果你用面片创建好树叶不去处理他似乎是不正确,那么下面我们就要谈谈弯曲法线 Ben Normal我们打开模型预览查看法线,这些树枝末端有这些小绿线向外指向树的中心,这就是我们现在所说的弯曲法线,您可以在制作网格物体的软件中执行此操作,您可以使用球或者半球告诉软件将球信息传递到树叶上。 具体操作方式号内有一篇文章有提到,这就是我们所说的弯曲法线
树法线传递视频添加
回到材质连接到我们正常法线看着还不错,树的法线与球法线差不多这正是我们想要的
第三中方法对象枢轴法线Object Normal 如果您由于某种原因无法更改几何体的法线,或者您可能想要另一种类型的法线这是个很好法方法。着色器中光照的法线我们实际可以从几个同位置生成一个法向量。如果我从对象位置减去像素位置 我们可以用像素的物体的世界中心的位置与对象中心的位置,两者相减,得到从物体向外朝着像素的向量,把这个当法线,输出球状照明
这样效果,和之前BentNormal很像,并且是真的平滑过渡,无须创建定点法线接下来我们合并下树叶法线贴图 2.4 Camera Normals用CameraVector作为表面的法线 法线始终朝向摄像机 相机矢量方法处理输的树枝,使用对象轴法线方法处理树叶。 我们使用漫反射的Alpha通道创建了一个蒙版,
第34节环境光遮蔽在今天的教程中,我们将介绍一种为我们的树叶生成环境遮挡的方法环境遮挡因为我们的树叶体积是由平面组成的,因此我们必须 使用一种特殊的方法生成。
然后我将向您展示三种 不同的方式 我们真正想要的是让树的中心更暗然后 在叶子的边缘看起来更亮 我们还是要利用从像素世界空间位置减去物体位置的。 所以如果我们创建我们的树叶体积,使中心树叶的轴心点或原点位于中间,中心给黑色边缘给白色 增加一点对比度
然后我可以将这个乘以的结果连接 到次表面,让我们保存 我已经乘以我们的次表面颜色,所以你可以看到我们的次表面颜色 在树外部的边缘闪耀,中间它有点暗, 这就是我们的效果让我们的树看起来更真实。 中间暗,周围亮效果 AO效果连接也可以不连接。
第35节树叶淡出在今天的教程中,我们将实施一种方法, 当相机靠得太近时淡出树叶。
你可能会问为什么我 想做真正的树叶不这样做,我们这样做的动机这纯粹是为了游戏玩法。 来到我们材质上,我要创建一个新的材质函数
我需要做的下一件事是获取我的距离值,我需要从中减去我的近值,所以我要创建一个组件蒙版,我要检查红色通道,我要从我的距离值中减去它要从我的距离值中减去它远值的值,然后我将第一次减法的结果除以第二次减法的结果 制作好以后添加到我们着色器上,我们实现了裁切效果但是效果很生硬 我们继续添加一个抖动时间AA节点,将我们灰度不同明度值转换为抖动模式然后它与时间抗锯齿,透明度我们在这里没有使用真正的透明度但我们用抖动模式伪造它与游戏正在执行的时间抗锯齿相结合或同步。
第36节生成树叶颜色变化如果我们只有一棵树,我们为树制作的着色器非常好,但如果我们有这样的森林我们看看树木所有树木的颜色完全相同
如果你看看这些在大烟山拍摄的参考图像你会发现每棵树的颜色都略有不同。 今天我们使用的方法是我创建的这个纹理只是一堆 绿色、黄色和橙色的噪点 我们要在世界中投射它从上到下的空间,然后每棵树将采样纹理中略有不同的像素,然后我们将树中已有的颜色与该纹理的颜色相结合,这样每棵树都将是一个颜色略有不同。 我把控制颜色叠加放在函数之外(红框位置)
加在外边
树在场景中不同位置出现树叶出现不同颜色。
第37节随风摇曳树叶WindIntensity (Scalar)(风力(标量))
控制风影响网格体的程度。 WindWeight (Scalar)(风权重(标量)) 这是一个灰阶贴图,用于控制网格体顶点对风产生反应的程度。 WindSpeed (Scalar)(风速(标量)) 控制风速。 AdditionalWPO (Vector3)(其他WPO(矢量3)) 接收任何其他全局位置偏移网络或函数
RotateAboutAxis(绕轴旋转) RotateAboutAxis(绕轴旋转)表达式在给定旋转轴、该轴上的某个点以及旋转角度的情况下,旋转三通道矢量输入。 此表达式适合于使用WorldPositionOffset(全局位置偏移)产生质量优于简单剪切的动画。
NormalizedRotationAxis(规范化旋转轴) 接收一个规范化(O-1)矢量,它代表对象的旋转轴。 RotationAngle(旋转角度) 旋转角度。值1表示完全360度旋转。 PivotPoint(枢轴点) 接收代表枢轴点的三通道矢量,对象将绕着该枢轴点旋转。 Position(位置) 接收代表对象位置的三通道矢量。创建RotateAboutAxis表达式时,将自动创建一个WorldPosition表达式并将其连接至此输入。 整体节点 详细看教程
原帖地址:【Ben UE4材质/06期】树叶/半透明/材质的包装/隐藏的面/法线/AO/相机褪色/颜色变化/随风摇曳 (qq.com)
|