BenCloward Unreal & Unity 着色器图表教程 第 5 集 课程笔记【纹理坐标】
一、课程前置说明 & 核心学习目标
通用基础规则(双引擎通用)
- 颜色、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 节点
- 节点名称:Texture Coordinates(纹理坐标),简称 UV 节点;
- 默认输出:二维向量
float2 (U, V),直接输出模型原始 UV; - 端口说明
- Out:主输出端口,输出原始 UV 向量,可直接接入纹理采样节点(Sample Texture 2D);
- 无额外输入端口,原生节点仅读取模型 UV,修改需搭配数学节点;
- 调用方式:空白处按
空格键,搜索Texture Coordinates快速创建。
2. Unreal Engine 材质蓝图 UV 节点
- 节点名称:Texture Coordinate(纹理坐标),简写 TexCoord;
- 核心差异:UE 的 TexCoord 节点自带参数面板,可直接在节点上修改平铺、偏移,无需额外节点(Unity 需外接数学节点);
- 关键参数
- Tiling(平铺):对应 UV 缩放,数值越大,贴图越小、重复次数越多;
- Offset(偏移):对应 UV 平移,控制贴图整体移动;
- Coordinate Index:多套 UV 选择(模型存在 2 套及以上 UV 时使用,常规材质默认 0);
- 调用方式:材质编辑器空白处右键,搜索
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 为例)
- 创建
Texture Coordinates(原始 UV)→ 连接至Add节点 A 端口; - 给 Add 节点 B 端口输入二维向量(X = 水平偏移,Y = 垂直偏移);
- 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 向量旋转公式,基于三角函数 + 四则运算拼接,用于制作旋转花纹、漩涡、转盘等效果。
- 必备节点:UV 节点、Time(时间)、Sin/Cos(三角函数)、Add/Multiply 组合;
- 核心逻辑:将 UV 坐标转换为极坐标,通过三角函数改变角度,实现旋转;
- 应用场景:旋转 logo、魔法阵、粒子纹理、动态漩涡特效;
- 新手提示:旋转公式属于本节难点,建议先熟练平移 / 缩放,再练习旋转。





五、高阶案例:UV 纹理扭曲(课程重点演示案例)
1. 实现思路
在标准 UV 链路中,先用噪声节点(Noise) 生成随机灰度图,再将噪声纹理的数值叠加到原始 UV 上,利用随机数值扰动 UV 坐标,让贴图产生扭曲、水波、热浪、哈哈镜效果。
2. 完整节点链路(双引擎通用)
原始 UV → Add(叠加噪声纹理)→ Multiply(控制扭曲强度)→ 纹理采样 → 输出颜色
3. 参数调节规则
- 噪声缩放:控制扭曲纹理的密度,数值越大,扭曲细节越细碎;
- 扭曲强度(Multiply 数值):0 = 无扭曲,0.1~0.3 = 轻微水波,0.5 以上 = 强烈扭曲(热浪、变形特效);
- 动态扭曲:搭配 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:静态平铺纹理(地砖 / 墙面)
- Unity:UV 节点 → Multiply(U=4,V=4)→ 纹理采样 → 输出;
- UE:直接选中 TexCoord 节点,设置 Tiling X=4、Y=4,连接纹理即可;
- 适用:场景地面、墙体、金属网格等重复纹理。
工作流 2:动态滚动纹理(流水 / 云层)
- 通用链路:UV → Add → Time 节点(控制速度)→ Multiply(控制偏移幅度)→ 纹理;
- 参数建议:Time 数值 0.1~0.3(慢速滚动),适合远景云层、河流。
工作流 3:动态扭曲纹理(水面 / 热浪)
UV → Add(接入 Noise 噪声)→ Multiply(强度 0.2)→ Time(驱动噪声动画)→ 纹理采样。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)