Contents

UE4 Anisotropy

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313030363537312f35633034363331662d303631662d323666372d313435642d3930383964336338633537652e6769.gif

自虚幻引擎 4.26 起,各向异性已正式添加到材质中,使表达各向异性反射更加容易。

在本文中,我将介绍 Anisotropy,尤其是 Tangent 输入。

Anisotropy使用方法和输入

从 4.26 开始,默认情况下已将各向异性和切线添加到材质输入中。可以通过在此处输入值或纹理来使用它。 https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120211337.png

Anisotropy(各向异性)输入

在这里,您可以输入 [-1 到 1] 范围内的标量值。

  1. 当Anisotropy为 0 时,没有因各向同性反射而发生的变化。
  2. 当Anisotropy为正值时将沿切线(切线方向)突出显示。
  3. 当Anisotropy为负值时,遵循 Binormal 方向。(Tangent 和 Binormal 将在后面介绍。)

下图是 Tangent 朝向 UV 的 U 方向时的示例。可以看到正值和负值对应的方向是不一样的。

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120211717.png

Tangent(切线)输入

首先,这个输入的Tangent(切线)指的是从曲面顶点的法向量沿曲面成90度角的切线向量。副法线Binormal是垂直于 Tanegnt 的向量。

您还可以从 UE4 的 Staic Mesh 工具栏中检查 Normal、Tangent 和 Binormal。绿色表示法线方向,红色表示切线方向,蓝色表示副法线方向。

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120211915.png

如果材质的切线节点没有输入,那么我们将使用曲面顶点的切线(法线)。因此,如果每个顶点的Tangent都朝向是我们预期的方向,那么即使Tangent输入中没有输入也可以直接使用。

Tangent基本上是根据顶点坐标、法线、UV值计算的,但是在导入mesh的时候,需要选择使用“Normal Import Method”。

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120212123.png

但是,在大多数情况下,Tangent 并不指向(难以指向)预期方向。因此,您可以通过将 Tangent(和 Binormal)的方向输入到 Tangent Input 来控制反射方向。

Tangent Input 的数值和纹理

那么我应该在 Tangent Input 中输入什么值?在这里,我们将介绍以下三种方法。

  1. 使用各向异性贴图
  2. 使用角度贴图
  3. UE4内计算

各向异性贴图

这是一种使用纹理的方法,它存储了 R:Tangent、G:Binormal、B:Normal 的方向,如下图所示。

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120212419.png

Binormal可以通过Normal和Tangent的叉积来计算,但是没有多少软件可以让美术们轻松制作出这张贴图,所以最简单的方法就是使用下面的Angle Map。

Angle Map

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120212632.png

第二种方法是使用上面的贴图。

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120212700.png

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120212727.png

请注意,从 UE4.26 开始,除非您拥有 32 位贴图,否则将出现以下伪影。您还可以通过使用分辨率尽可能高的纹理来获得更平滑的高光。

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120212808.png

在 UE4 内计算

一种选择是在不使用纹理的情况下计算切线和副法线方向。

下图是像文章开头的gif图一样,在圆形方向计算Tangent的例子。 从 UV 中减去 (0.5, 0.5) 将得到 (0,0) 的中心,并且所有点都是指向中心外的向量。 https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20220120212851.png

请注意,此方法也使用 TexCoord,因此它是基于 UV 的。 使用此方法时,除了用于使用颜色纹理的 UV 之外,最好创建从要使用各向异性的表面的法线方向投影的 UV。

另外,如果您在材质编辑器中取消选中“Tangent Space Normal”,法线输入将是 World Space,但请注意,Tangent 输入也将是 World Space 。