Unreal4中技术美术需要掌握的15种曲线

2016年11月18日 16:53 0 点赞 0 评论 更新于 2025-11-21 20:48

本文主要针对刚入门或入门不久的美术人员,分享一些想入门 Unreal4 的学习心得。

一、Unreal4 的物理材质

在 Unreal 的着色器体系(UE4)中,金属的漫反射颜色并非纯黑;而在传统 PBR 着色器体系(V-Ray)中,金属的漫反射颜色为纯黑。因此,在 UE4 中调整漫反射颜色时,应参考传统渲染(V-Ray)中的反射颜色(若使用 RGB 衰减曲线控制反射颜色,则另当别论)。

二、基本材质属性

玻璃材质的漫反射值设为 1(即纯白),金属度(Metal)设为 1,不透明度(Opacity)大约为 0.5(可根据实际情况调整)。将材质类型(Blend Mode)改为“Translucent”,当出现折射项后,使用 lerp(混合)节点从 1 混合到 1.517,遮罩 alpha 连接菲涅尔节点(无需设置任何参数)。若要透过玻璃看到后面物体的反射,需将玻璃材质的“Translucent Lighting Mode”调为“Surface”。

三、单面和双面

UE4 和 V-Ray 一样,默认采用单面渲染。对于半透明物体,需要开启“Two Side”才能计算背面信息。例如,对于没有厚度的单面纱帘模型,只有开启“Two Side”才能正确计算背面的受光情况。在 V-Ray 中,这对应“V-Ray 2-Side Material”;在 UE4 中,则在网格(Mesh)面板中勾选相应选项。此外,游戏引擎对于单面模型还有一个特性:只渲染法线正面朝向视角的面。也就是说,如果一个面片未勾选“Two Side”,且法线背向视角,那么该面片将不可见。而在 V-Ray 中,虽然另一面不计算信息,但至少面对视角的面会进行计算。

四、Unreal4 节点

对于美术人员而言,材质面板中各种节点的运用至关重要。对于习惯了像 V-Ray 之类离线渲染流程的美术人员来说,过渡到游戏引擎时会有一个显著变化:之前的离线渲染将各种功能图形化,使用者在图形化面板中进行操作。例如,在 V-Ray 中有“混合”“合成”“输出”等贴图界面,并且各种功能的命名会考虑美术使用者的习惯,而不会强调其中的数学原理,如“V-Ray Dirt 污垢贴图”,实际上它是多个数学节点的图形化集合。然而,在游戏引擎中,图形化界面被各种节点所取代,使用者需要更多地接触相对数学层面的操作模式。下面将分享个人对 UE4 中这些节点的理解。

五、强调 RGB 数学

在深入了解节点之前,有必要先探讨图形学和数学的关系。在图形学中,任何颜色都由 RGB 三原色构成,再加上 Alpha 通道表示透明度,从数学层面来看,它们就是 4 个通道的数字,这些数字可以是整数或小数。同样,任何空间位置由 xyz 三个坐标值(三通道)表示,也是数字。无论是处理颜色变化(贴图变化本质也是颜色变化),还是处理空间变量,本质上都是对这些数字进行操作。因此,“混合”“衰减”等功能本质上都是数字处理。如果将输入量设为 X(X 可以是四通道的颜色数据、三通道的坐标和向量数据,也可以是单通道的时间数据),输出量设为 Y(含义同 X),这些功能都可以用独特的曲线来表示。我们运用这些节点的目的,就是让颜色、时间、空间等数据按照我们的要求进行相互转化或自身转化。

六、15 条功能曲线

接下来将详细介绍这些“功能”曲线,只要输入一个 X 值,就会输出对应的 Y 值。配图顶部的颜色条用于直观显示输入值 X 变化时,输出值 Y 作为颜色的变化情况(在 UE4 中,颜色范围规定为 0 到 1,可以是该范围内的任意数字)。若输出值 Y 超出 0 到 1 的范围,则颜色条显示的是颜色的变化关系,而非准确的对应关系。

1. ABS 节点(“绝对值”曲线)

该曲线的特点是不会输出负值,在一定程度上适用于颜色处理(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 曲线结合,ABS 曲线的输出值始终大于等于 0,且可以是无穷大。

2. Frac 节点(取小数曲线)

该曲线的特性是无论输入值大小如何,都会忽略整数部分,只保留小数部分,并在 0 到 1 的区间内找到对应的 Y 值,实际上 Y 值就是小数部分本身,输出区间为 0 到 1(可以等于 0 或 1)。因此,该曲线非常适合用于颜色处理。例如,输入三通道数据 2.2, 5.3, 45.25(数据来源不重要),与输入 541.2, 125.3, -512.25 得到的 Y 值作为颜色显示时是相同的,因为输出值都是它们的小数部分:0.2, 0.3, 0.25。

3. Floor 节点(退位取整数曲线)

该曲线不一定适用于颜色处理,因为其输出值可以是负值,也可以大于 1。所谓“退位取整数”,就是输入任意值 X,该节点会舍弃小数部分,只保留整数部分作为输出值 Y。其适用场景是只需要得到一个整数,而不需要小数部分的情况。需要注意的是,配图中上方的颜色条显示的是变化关系,而非对应关系。这是因为在该图表中,输出值要么是 0(纯黑),要么是 1(纯白),当输出为 2 或 3 时,无法直接用颜色表示,所以通过缩放来展示颜色的递进关系。后续配图出现相同情况时,不再赘述。

4. Ceil 节点(进位取整数曲线)

Ceil 节点与 Floor 节点类似,但不同之处在于,当输入值 X 有小数部分时,在舍弃小数的同时会进一位到整数。例如,输入 19.521,输出将变为 20。该节点也不太适合用于颜色处理。

5. FMod 节点(余数曲线)

该曲线有两个输入值 Xa 和 Xb,输出结果为 Xa 除以 Xb 的余数。例如,在配图中 Xb 设定为 2,当 Xa 为 3 时,输出值 Y 为 1,因为 3 除以 2 商 1 余 1,商的大小不重要,关键是余数,即输出值 Y。在实际应用中,这也被称为循环,循环的起点值是 0(注意不是 Xa),终点值是输入值 Xb,输出值 Y 的范围在 0 到 Xb 之间。Xa 的作用在于,当 Xa 是一个不受主观控制的变量,或者 Xa 很大或很小时,可以通过设定 Xb 的值来限定循环次数。例如,假设一个值为 10(可以是空间单位或时间单位),若要每到 5 进行一次循环,只需将 Xb 设定为 5。无论输入值是 100 还是 250,都会每到 5 循环一次,最终输出值都在 0 到 5 之间。如果这个单位是时间,通过该节点可以实现一个循环计时器,每到规定时间就触发一个事件。

6. Power 节点(曲线绝对值)

Power 节点与 ABS 曲线类似,但该节点有第二个输入值 Xb。当 Xb 等于 1 时,曲线与 ABS 曲线完全相同;当 Xb 大于 1 时,配图中的红色曲线呈类似指数曲线的形状,输出值 Y 先缓慢上升,然后上升速度越来越快;当 Xb 小于 1 时,输出值 Y 先快速上升,然后上升速度越来越慢。在颜色处理中,这可以实现“缓进”“缓出”的效果。

7. Lerp 节点(混合)

Lerp 节点是美术中应用最多的混合功能。严格来说,由于有三个输入变量 Xa、Xb、Xc(Alpha)和一个输出变量,不存在传统意义上的曲线图。在配图中,Xb 被设定为定量 1,当 Xc 的值为 0.5 时,表示 Xa 和 Xb 各取一半。以颜色为例,如果 Xb 为纯白色,Xc(Alpha)为 0.5,当 Xa 为 0 时,输出值 Y 为 0.5。抽象地说,Xc(Alpha)的值越大,最终值 Y 越趋向于 Xb;Xc(Alpha)的值越小,最终值 Y 越趋向于 Xa。该节点常用于贴图的混合。

8. HeightLerp 曲线

HeightLerp 曲线与 Lerp 曲线相似,但 Lerp 曲线的 Alpha 是线性的,而 HeightLerp 曲线中的 Alpha 会受到高度图曲线的影响(配图中使用 sin 曲线模拟了一张高度图)。由于缺乏实际使用经验,暂不做过多评论。推测该曲线可用于高度图来控制地形中的材质分布,例如在山地中,海拔越高积雪越多,海拔下降一些则会长出一些草,但总体上积雪仍会逐渐增多。

9. Clamp 节点(输出曲线)

Clamp 节点是常用节点,有两个输入值 Xa 和 Xb,用于限定输出值 Y 的范围,使其不小于 Xa 且不大于 Xb,在这个中间范围内的输出值都是允许的。

10. Sin 节点(sin 曲线)

根据高中数学知识,sin 曲线的循环区间为 1,输出范围为 -1 到 1。

11. Cosine 节点(cosine 曲线)

同样基于高中数学知识,cosine 曲线的循环区间为 1,输出范围为 -1 到 1。与 sin 曲线不同的是,cosine 曲线从输出值为 1 开始循环。

12. OneMinus 节点(反转曲线)

OneMinus 节点属于固定的图形函数功能,是常用节点,常用于对 0 到 1 区间(颜色范围)的数据进行反向处理,其应用基于颜色使用的基础之上。

13. Exponential Density 节点(指数密度曲线)

该节点属于固定的图形函数功能,输出值一定在 0 到 1 范围内。通过两个输入变量 Xa(任意值)和 Xb(只能在 0 到 1 范围内),输出一条从 1 到 0 的曲线,且该曲线在起点和终点处平滑过渡。当 Xb 值越大时,曲线变化越快。

14. Sphere Mask 节点(球形遮罩曲线)

Sphere Mask 节点属于固定的图形函数功能,通过 Xa(Radius)和 Xb(Hardness)两个值对贴图输入值 Xc 进行纯黑和纯白遮罩处理。

15. Sphere Gradient - 2D 节点(球形渐变曲线)

Sphere Gradient - 2D 节点属于固定的图形函数功能,通过 Xa(Radius)来控制贴图输入值 Xb 的渐变处理。

以上就是关于 Unreal4 中 15 种曲线的理论介绍,实际运用方面我还没有深入研究。撰写本文主要是为了加深自己的印象,以便日后能够熟练运用这些知识。对于其他灯光功能和材质选项,通过阅读文字说明通常可以理解,如果仍有疑问,可以参考官方的 Content Examples 场景,很多功能一看便知。而数学和图形功能的转化是游戏引擎从业者需要重点掌握的内容。

作者信息

孟子菇凉

孟子菇凉

共发布了 3994 篇文章