UE4 Anisotropy
自虚幻引擎 4.26 起,各向异性已正式添加到材质中,使表达各向异性反射更加容易。
在本文中,我将介绍 Anisotropy,尤其是 Tangent 输入。
Anisotropy使用方法和输入
从 4.26 开始,默认情况下已将各向异性和切线添加到材质输入中。可以通过在此处输入值或纹理来使用它。
Anisotropy(各向异性)输入
在这里,您可以输入 [-1 到 1] 范围内的标量值。
- 当Anisotropy为 0 时,没有因各向同性反射而发生的变化。
- 当Anisotropy为正值时将沿切线(切线方向)突出显示。
- 当Anisotropy为负值时,遵循 Binormal 方向。(Tangent 和 Binormal 将在后面介绍。)
下图是 Tangent 朝向 UV 的 U 方向时的示例。可以看到正值和负值对应的方向是不一样的。
Tangent(切线)输入
首先,这个输入的Tangent(切线)指的是从曲面顶点的法向量沿曲面成90度角的切线向量。副法线Binormal是垂直于 Tanegnt 的向量。
您还可以从 UE4 的 Staic Mesh 工具栏中检查 Normal、Tangent 和 Binormal。绿色表示法线方向,红色表示切线方向,蓝色表示副法线方向。
如果材质的切线节点没有输入,那么我们将使用曲面顶点的切线(法线)。因此,如果每个顶点的Tangent都朝向是我们预期的方向,那么即使Tangent输入中没有输入也可以直接使用。
Tangent基本上是根据顶点坐标、法线、UV值计算的,但是在导入mesh的时候,需要选择使用“Normal Import Method”。
但是,在大多数情况下,Tangent 并不指向(难以指向)预期方向。因此,您可以通过将 Tangent(和 Binormal)的方向输入到 Tangent Input 来控制反射方向。
Tangent Input 的数值和纹理
那么我应该在 Tangent Input 中输入什么值?在这里,我们将介绍以下三种方法。
- 使用各向异性贴图
- 使用角度贴图
- UE4内计算
各向异性贴图
这是一种使用纹理的方法,它存储了 R:Tangent、G:Binormal、B:Normal 的方向,如下图所示。
Binormal可以通过Normal和Tangent的叉积来计算,但是没有多少软件可以让美术们轻松制作出这张贴图,所以最简单的方法就是使用下面的Angle Map。
Angle Map
第二种方法是使用上面的贴图。
请注意,从 UE4.26 开始,除非您拥有 32 位贴图,否则将出现以下伪影。您还可以通过使用分辨率尽可能高的纹理来获得更平滑的高光。
在 UE4 内计算
一种选择是在不使用纹理的情况下计算切线和副法线方向。
下图是像文章开头的gif图一样,在圆形方向计算Tangent的例子。 从 UV 中减去 (0.5, 0.5) 将得到 (0,0) 的中心,并且所有点都是指向中心外的向量。
请注意,此方法也使用 TexCoord,因此它是基于 UV 的。 使用此方法时,除了用于使用颜色纹理的 UV 之外,最好创建从要使用各向异性的表面的法线方向投影的 UV。
另外,如果您在材质编辑器中取消选中“Tangent Space Normal”,法线输入将是 World Space,但请注意,Tangent 输入也将是 World Space 。