一、用途
工作中有时候一整个网格体需要多个材质拼接,然而贴图有时候不一定对的准,例如这样一大块面板。如果不方便动模型就只能在材质中手动调整纹理UV :: 定义了两个标量参数,分别表示U和V方向上的偏移量、旋转中心点、旋转角度
向量拼接节点 Append: 将U和V偏移量拼接成一个二维向量。这是为了将两个独立的标量值组合成一个可以用于坐标变换的向量。
向量加法节点Add(快捷键A) :将基础纹理坐标与拼接后的偏移向量相加,生成新的纹理坐标。这一步实现了对纹理坐标的平移操作。
材质函数调用节点 :调用一个自定义的旋转材质函数CustomRotator。这个函数负责将偏移后的纹理坐标进行旋转变换。
这个节点有三个输入:UVs(传入的是加法节点输出的新纹理坐标)、Rotation Center(旋转中心)、Rotation Angle(旋转角度)。
UVs: 传入的是新的纹理坐标。 :
Rotation Center: 定义了旋转的中心点,通常在0到1的范围内。
Rotation Angle: 定义了旋转的角度,通常在0到1的范围内(0表示0度,1表示360度)。
CustomRotator原理 :
坐标平移: 首先,将纹理坐标从旋转中心平移到原点。这是为了简化旋转计算。
旋转变换: 使用旋转矩阵对平移到原点的纹理坐标进行旋转。旋转矩阵的定义如下
cos(θ)sin(θ)−sin(θ)cos(θ);其中,θθ 是旋转角度。
平移到原点UVs = UVs - RotationCenter;
应用旋转矩阵RotatedUVs.x = UVs.x * cos(Angle) - UVs.y * sin(Angle);
RotatedUVs.y = UVs.x * sin(Angle) + UVs.y * cos(Angle);
平移回旋转中心RotatedUVs = RotatedUVs + RotationCenter;
通过灵活调整标量参数,可以在运行时动态控制纹理的平移和旋转
三、使用
制作好材质之后创建材质实例
在材质属性细节面板中勾选属性调整旋转角度,平移纹理