参考:在虚幻引擎中混合材质函数 | 虚幻引擎 5.4 文档 | Epic Developer Community (epicgames.com)
效果:
知识储备:
混合材质函数:
这些函数用于将一种颜色与另一颜色混合,这类似于PS中的混合模式。
混合 是一种函数类型,这类函数在纹理的颜色信息中执行数学运算,以使一个纹理可以特定方式混合到另一个纹理中。
混合始终具有"底色"(Base)和"混合"(Blend)输入,这两个输入都是"矢量 3"(Vector3)。这两个输入都接收纹理,并以某种方式混合到一起。混合方式取决于您所使用的混合函数类型。
以下是部分混合材质函数的列表。
Blend_ColorBurn(混合_颜色加深)
Blend_ColorBurn(混合_颜色加深)以"混合"(Blend)颜色越暗,在最终结果中使用该颜色越多的方式,对材质进行混合。如果"混合"(Blend)颜色为白色,则不进行任何更改。
项目 | 说明 |
---|---|
输入 | |
底色(矢量 3)(Base (Vector3)) | 要以某种方式与"混合"(Blend)纹理进行混合的底色(原始纹理)。 |
混合(矢量 3)(Blend (Vector3)) | 这是混合纹理,它根据所执行的混合操作类型,以某种方式与底色混合。 |
蓝图节点的函数内部:
根据函数内部的计算公式,如果基础颜色为(R1,G1,B1),混合颜色为(R2,G2,B2),那么结果颜色为((R2+R1-1)/R2,(G2+G1-1)/G2,(B2+B1-1)/B2)。我们来分析下结果(R2+R1-1)/R2与R1、R2的关系,假设其中R1是暗的颜色,那么为了好分析,我们直接给值,假设R1为0.4,R2为0.6,那么(R2+R1-1)/R2为0,会发现变暗;假设R1为0.6,R2为0.8,那么(R2+R1-1)/R2为0.5,依然比其中的任何一个都暗。
Blend_ColorDodge(混合_颜色减淡)
Blend_ColorDodge(混合_颜色减淡)通过将"底色"(Base)颜色反转并将其除以"混合"(Blend)颜色,使结果变亮。
项目 | 说明 |
---|---|
输入 | |
底色(矢量 3)(Base (Vector3)) | 要以某种方式与"混合"(Blend)纹理进行混合的底色(原始纹理)。 |
混合(矢量 3)(Blend (Vector3)) | 这是混合纹理,它根据所执行的混合操作类型,以某种方式与底色混合。 |
蓝图节点内部数学运算:
Blend_Darken(混合_变暗)
Blend_Darken(混合_变暗)针对"底色"(Base)和"混合"(Blend)颜色的每个像素,选择较暗的值。如果"混合"(Blend)颜色为白色,则不会产生变化。
项目 | 说明 |
---|---|
输入 | |
底色(矢量 3)(Base (Vector3)) | 要以某种方式与"混合"(Blend)纹理进行混合的底色(原始纹理)。 |
混合(矢量 3)(Blend (Vector3)) | 这是混合纹理,它根据所执行的混合操作类型,以某种方式与底色混合。 |
Blend_Difference(混合_差异)
Blend_Difference(混合_差异)通过从"混合"(Blend)中减去"底色"(Base),然后取结果的绝对值,创建反转样式的效果。
Blend_Exclusion(混合_排除)
Blend_Exclusion(混合_排除)将"底色"(Base)和"混合"(Blend)纹理二等分,对其进行组合,然后对结果执行部分反转。
Blend_Screen(混合_滤色)
Blend_Screen(混合_滤色)按"混合"(Blend)颜色使"底色"(Base)变亮。其工作方式如下:对这两种颜色都执行"一减",将它们相乘,然后对结果执行"一减"。
Blend_HardLight(混合_强光)
Blend_HardLight(混合_强光)与 Blend_Overlay(混合_覆盖)的粗糙版本相似,它会对"底色"(Base)和"混合"(Blend)进行滤色或正片叠底。此函数对"混合"(Blend)颜色执行比较,从而每当"混合"(Blend)比 50% 灰度亮时,就通过"滤色"(Screen)操作对"底色"(Base)和"混合"(Blend)进行组合。如果"混合"(Blend)比 50% 灰度暗,那么将像"乘"功能一样,将"底色"(Base)与"混合"(Blend)相乘。然后,提高最终结果的对比度,以产生粗糙输出。
可与ps的图层混合模式相比较
夜视效果步骤:
1、使用混合强光来混合图层
连接蓝图节点如图,
效果如图:
把绿色调的暗一些,效果如图:
2、使用自定义深度与场景深度的差来获得选区
观察下面一组蓝图节点的效果:
当把角色的自定义深度通道开启:
画面效果如图:
这样我们就得到了一个这样的黑白蒙版。
3、用选区作为线性插值的alpha来控制画面不同部分的亮度
我们把上面2步骤结合起来,蓝图连接节点如下:
首先我们用场景颜色与暗绿色相混合,采用强光混合方式,亮的更亮,暗的更暗,我们用蒙版选区作为alpha来控制图像在与其更亮的图像之间过渡即角色部分更亮其它部分偏绿,然后再乘以一个选区,获得下面的效果:
4、用场景深度来获得距离选区
蓝图节点如下图所示:
效果图如下图所示:
5、根据距离调整亮度
蓝图节点如下图:
效果如下图:
摄像头离物体近的时候,物体比较亮
摄像头离物体远的时候,物体比较暗,相对的。
扫描线效果步骤
1、观察屏幕uv效果。
效果如图:
2、我们只选择其中绿色通道时
效果如图:
3、让渐变变多
这样我们就获得了一个从上到下的渐变,如果我们乘以一个值增大它的区间,然后在取余会得到什么呢?让我们来试试吧,节点如下:
效果如图:
我们得到了10条这样的线,如果乘以1000,是不是就得到了1000条这样的线,
4、与原始颜色相乘变成扫描线效果
如果我们把它与我们的原始颜色相乘,乘以1会不变,乘以1以下的会变暗变黑。
节点如下:
效果图如下:
5、添加动态效果-移动线条
我们需要时间线,乘以渐变,这样就会得到移动的渐变效果,测试一下:
会得到移动的渐变,如图:
扫描线多了即渐变多了就好看些,