一、课程前置说明 & 核心学习目标

 通用基础规则(双引擎通用)

  • 颜色、UV 常规运算数值区间:标准 0 ~ 1;超出区间会产生纹理重复、拉伸、黑边、断层等问题;
  • 所有对 UV 的修改,本质都是对二维向量 (U, V) 做数学运算(加减乘除、向量变换);
  • 性能优先级:原生 UV 节点 > 基础四则运算节点 > 复杂形变节点,移动端 / 低配项目优先精简 UV 链路。

二、核心概念:UV 纹理坐标

1. 什么是 UV

UV 是二维纹理坐标,作用是将一张 2D 图片(纹理 / 贴图)精准 “贴” 到 3D 模型表面,类比为把平面贴纸包裹在立体物体上。

  • U:对应贴图水平方向(横轴),等价于 X 轴;
  • V:对应贴图垂直方向(纵轴),等价于 Y 轴;
  • 标准坐标范围:模型单块 UV 区域内,U∈[0,1]V∈[0,1]

2. 坐标数值对应关系(可视化理解)

表格

UV 坐标 (U, V) 对应贴图位置 补充说明
(0, 0) 贴图左下角 纹理原点
(1, 0) 贴图右下角 水平终点
(0, 1) 贴图左上角 垂直终点
(1, 1) 贴图右上角 整张贴图完整范围

3. 超出 0~1 区间的默认表现(双引擎一致)

当 UV 数值 <0 或> 1 时,引擎默认开启纹理重复(Tiling):贴图会像地砖一样无限平铺重复,这是制作连续纹理(地面、墙面、布料)的基础;若关闭重复,超出区间部分会显示拉伸、黑边或纯色。

4. UV 与模型的关系

模型建模阶段会提前展开 UV(UV 展开),着色器中仅负责修改 UV 坐标数值,不会改变模型本身。着色器里所有纹理偏移、缩放、动画,本质都是修改 UV 向量。


三、双引擎原生 UV 节点详解

1. Unity Shader Graph UV 节点

  1. 节点名称:Texture Coordinates(纹理坐标),简称 UV 节点;
  2. 默认输出:二维向量 float2 (U, V),直接输出模型原始 UV;
  3. 端口说明
    • Out:主输出端口,输出原始 UV 向量,可直接接入纹理采样节点(Sample Texture 2D);
    • 无额外输入端口,原生节点仅读取模型 UV,修改需搭配数学节点;
  4. 调用方式:空白处按 空格键,搜索 Texture Coordinates 快速创建。

2. Unreal Engine 材质蓝图 UV 节点

  1. 节点名称:Texture Coordinate(纹理坐标),简写 TexCoord;
  2. 核心差异:UE 的 TexCoord 节点自带参数面板,可直接在节点上修改平铺、偏移,无需额外节点(Unity 需外接数学节点);
  3. 关键参数
    • Tiling(平铺):对应 UV 缩放,数值越大,贴图越小、重复次数越多;
    • Offset(偏移):对应 UV 平移,控制贴图整体移动;
    • Coordinate Index:多套 UV 选择(模型存在 2 套及以上 UV 时使用,常规材质默认 0);
  4. 调用方式:材质编辑器空白处右键,搜索 Texture Coordinate 创建。

3. 双引擎 UV 节点核心区别总结

表格

功能 Unity Shader Graph Unreal Engine 材质蓝图
基础缩放 / 平移 必须外接 Add / Multiply 数学节点 节点内置 Tiling / Offset 参数,一键调节
多 UV 支持 原生节点默认 UV0,多 UV 需切换节点 内置坐标索引,灵活切换多套 UV
旋转功能 无原生旋转,需手动拼接旋转公式 无原生旋转,同样需要向量运算实现
输出格式 float2 二维向量 float2 二维向量,通道规则完全一致

四、UV 四大基础运算实操(本节核心案例,双引擎通用公式)

所有案例均基于:原始 UV 节点 → 数学运算节点 → 纹理采样节点 的基础链路,适用于静态纹理调整、基础纹理动画。

(一)UV 平移(偏移)—— Add 加法节点

1. 原理

使用 Add(加法) 节点对原始 UV 整体叠加固定数值,实现贴图上下、左右移动,是纹理滚动动画的基础。 公式:最终UV = 原始UV + 偏移向量 (OffsetU, OffsetV)

2. 分方向效果
  • U 轴(水平):增加数值 → 贴图向右移动;减少数值 → 贴图向左移动;
  • V 轴(垂直):增加数值 → 贴图向上移动;减少数值 → 贴图向下移动。
3. 完整链路(Unity 为例)
  1. 创建 Texture Coordinates(原始 UV)→ 连接至 Add 节点 A 端口;
  2. 给 Add 节点 B 端口输入二维向量(X = 水平偏移,Y = 垂直偏移);
  3. Add 输出 → 连接 Sample Texture 2D(纹理采样)→ 最终输出基础颜色。
4. 实战场景 & 技巧
  • 静态偏移:修正贴图错位、对齐模型印花;
  • 动态动画:搭配 Time(时间节点) 实现流水、云层、滚动招牌等无限滚动效果;
  • 避坑:单次偏移数值建议控制在 -1 ~ 1,数值过大会导致纹理偏移过多、视觉混乱。

(二)UV 缩放(平铺)—— Multiply 乘法节点

1. 原理

使用 Multiply(乘法) 节点对原始 UV 整体缩放,控制贴图大小与重复次数,是墙面、地面、网格纹理的核心用法。 公式:最终UV = 原始UV × 缩放向量 (ScaleU, ScaleV)

2. 数值规则(核心)
  • 缩放值 = 1:UV 保持原始大小,贴图 1:1 显示,无重复;
  • 缩放值 > 1:UV 被放大,贴图缩小、重复次数变多(例:U=2,水平方向贴图重复 2 次);
  • 缩放值 < 1(大于 0):UV 被缩小,贴图放大、重复次数变少
  • 缩放值 = 0:UV 归零,贴图压缩为纯色(禁用);
  • 缩放值为负数:贴图翻转(U 负 = 水平翻转,V 负 = 垂直翻转)。
3. 完整链路(双引擎通用)

原始 UV → Multiply(设置缩放值)→ 纹理采样节点。

4. 实战场景 & 避坑
  • 常规平铺:地砖、木板、铁丝网、布料纹理(缩放值 2~8 区间最常用);
  • 翻转贴图:制作镜像材质、对称花纹;
  • 避坑:禁止缩放值为 0;缩放值过大(>10)会导致纹理细节丢失、画面发糊。

(三)UV 拉伸 / 形变 —— Subtract 减法 + Divide 除法节点

1. 减法(Subtract)

原理和加法完全相反,用于反向偏移 UV,多用于局部纹理修正、抠除多余纹理区域,极少单独做动画。 公式:最终UV = 原始UV - 偏移向量

2. 除法(Divide)

用于非等比拉伸 UV,单独拉伸水平 / 垂直方向,制作压扁、拉长的纹理效果。 公式:最终UV = 原始UV ÷ 拉伸向量

  • 除数越大,对应方向贴图越拉长;除数越小,贴图越压扁;
  • 高危避坑:除数绝对不能为 0,会直接导致材质报错、画面闪烁、黑屏。

(四)UV 旋转(进阶组合公式)

双引擎均无原生 UV 旋转节点,课程讲解标准 2D 向量旋转公式,基于三角函数 + 四则运算拼接,用于制作旋转花纹、漩涡、转盘等效果。

  1. 必备节点:UV 节点、Time(时间)、Sin/Cos(三角函数)、Add/Multiply 组合;
  2. 核心逻辑:将 UV 坐标转换为极坐标,通过三角函数改变角度,实现旋转;
  3. 应用场景:旋转 logo、魔法阵、粒子纹理、动态漩涡特效;
  4. 新手提示:旋转公式属于本节难点,建议先熟练平移 / 缩放,再练习旋转。


五、高阶案例:UV 纹理扭曲(课程重点演示案例)

1. 实现思路

在标准 UV 链路中,先用噪声节点(Noise) 生成随机灰度图,再将噪声纹理的数值叠加到原始 UV 上,利用随机数值扰动 UV 坐标,让贴图产生扭曲、水波、热浪、哈哈镜效果。

2. 完整节点链路(双引擎通用)

原始 UV → Add(叠加噪声纹理)→ Multiply(控制扭曲强度)→ 纹理采样 → 输出颜色

3. 参数调节规则

  1. 噪声缩放:控制扭曲纹理的密度,数值越大,扭曲细节越细碎;
  2. 扭曲强度(Multiply 数值):0 = 无扭曲,0.1~0.3 = 轻微水波,0.5 以上 = 强烈扭曲(热浪、变形特效);
  3. 动态扭曲:搭配 Time 节点驱动噪声,实现动态流动扭曲(火焰热浪、水面波动)。

4. 典型应用场景

  • 自然特效:水面波纹、空气热浪、火焰边缘扭曲;
  • 魔法特效:传送门、能量护盾、扭曲空间;
  • 画面风格:复古哈哈镜、畸变镜头效果。

六、UV 运算高频问题排查(排错手册)

结合课程实操问题,整理新手最常遇到的异常及解决方案:

表格

异常现象 问题原因 修复方案
贴图无限重复、铺满整个模型 UV 数值超出 0~1 区间 降低 Multiply 缩放值,或关闭引擎 “纹理重复” 选项
贴图完全黑屏 / 纯色块 Divide 除数为 0 / Subtract 产生负数 UV 检查除法节点,确保除数>0;用 Saturate/Clamp 限制 UV 在 0~1
贴图左右 / 上下颠倒 UV 缩放值为负数 将 Multiply 向量数值改为正数
扭曲效果杂乱、闪烁 噪声强度过高 + 动态速度过快 降低扭曲强度,调慢 Time 节点的动画速度
UE 中贴图错位,Unity 正常 多套 UV 调用错误 修改 TexCoord 节点的 Coordinate Index,切换至模型对应 UV 集
纹理边缘锯齿严重 UV 缩放过大,纹理采样拉伸 适当降低 UV 缩放值,开启纹理双线性过滤

七、Unity & UE 快速上手工作流(直接复用)

工作流 1:静态平铺纹理(地砖 / 墙面)

  1. Unity:UV 节点 → Multiply(U=4,V=4)→ 纹理采样 → 输出;
  2. UE:直接选中 TexCoord 节点,设置 Tiling X=4、Y=4,连接纹理即可;
  3. 适用:场景地面、墙体、金属网格等重复纹理。

工作流 2:动态滚动纹理(流水 / 云层)

  1. 通用链路:UV → Add → Time 节点(控制速度)→ Multiply(控制偏移幅度)→ 纹理;
  2. 参数建议:Time 数值 0.1~0.3(慢速滚动),适合远景云层、河流。

工作流 3:动态扭曲纹理(水面 / 热浪)

UV → Add(接入 Noise 噪声)→ Multiply(强度 0.2)→ Time(驱动噪声动画)→ 纹理采样。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐