BenCloward Unreal & Unity 着色器图表教程 第 7 集 课程笔记【视图,世界,物体和切线空间】
一、课程总览与学习目标
1. 本节核心学习目标
- 吃透四大坐标空间:物体空间 (Object)、世界空间 (World)、视图空间 (View)、切线空间 (Tangent) 的定义、原点、坐标轴规则与视觉表现;
- 掌握 Unity Shader Graph 与 Unreal 材质蓝图中空间切换、向量空间转换的原生节点与参数;
- 理解不同空间下法线、视线、位置向量的形态差异,学会判断向量所属空间;
- 掌握向量空间统一原则:所有参与运算的向量、位置数据,必须置于同一坐标空间;
- 完成两大实战案例:视图空间 MatCap 材质、切线空间法线贴图基础应用;
- 排查因空间不匹配引发的材质报错、效果异常,建立规范的空间使用思维。
2. 通用前置规则(双引擎通用铁律)
- 向量运算前提:法线、视线、光照、位置等数据必须统一到同一个坐标空间后,再进行点积、加减、乘法等运算;
- 单位向量要求:方向类向量(法线、视线、光照)建议开启归一化 (Normalize),保证向量长度为 1,避免强度偏差;
- 性能优先级:引擎内置空间切换参数 > 手动矩阵转换节点,项目中优先使用原生配置;
- 适用边界:静态道具多用世界空间,动画角色、曲面纹理多用切线空间,镜头相关特效多用视图空间。
二、四大坐标空间 完整详解(核心理论)
本节依次讲解游戏着色器最常用的四类坐标空间,从原点、参考系、运动特性、典型用途、优缺点五个维度拆解,同时结合模型、相机、场景的关系辅助理解。
(一)物体空间(Object Space / 模型空间)
1. 基础定义
以模型自身轴心点 (Pivot) 为坐标原点的局部坐标系,每个模型拥有独立的物体空间,场景内多个模型的物体空间互相独立、互不干扰。
- 坐标轴:跟随模型同步旋转、位移、缩放;模型转动,物体空间坐标轴同步转动。
- 数据来源:模型建模阶段定义的顶点位置、模型空间法线、模型 UV 均属于该空间。
2. 核心特性
- 独立性:A 模型的物体空间和 B 模型无关联,仅描述模型自身的位置与方向;
- 跟随变换:模型在场景中移动、旋转、缩放,物体空间内的顶点、法线相对坐标保持不变;
- 数值范围:仅作用于单模型,坐标范围由模型尺寸决定,无全局统一标准。
3. 典型适用场景
- 模型内部纹理、固定轮廓效果(不受场景位置 / 相机影响);
- 模型空间法线贴图(老式法线贴图格式,如今使用较少);
- 基于模型自身朝向的遮罩、内部描边;
- 顶点动画(布料、旗帜、模型形变)。
4. 优缺点
- 优点:逻辑简单,不受场景、相机干扰,运算开销低;
- 缺点:无法直接参与全局光照计算(多模型光照不统一),不适合动态角色、曲面细节。
(二)世界空间(World Space)【使用频率最高】
1. 基础定义
以整个游戏场景的全局原点为基准的统一坐标系,场景内所有模型、相机、光源都共用一套世界空间,是全局运算的标准空间。
- 坐标轴:固定不变,不会随模型、相机的移动 / 旋转而改变;
- 地位:前一集讲解的法线、主光源方向、世界位置,默认均为世界空间。
2. 核心特性
- 全局统一:全场景数据参照同一原点,是多模型光照、全局阴影、场景方位遮罩的首选空间;
- 相对运动:模型移动 / 旋转时,其顶点、法线在世界空间中的坐标与方向会同步改变;相机移动不影响世界空间坐标轴;
- 引擎细分:Unity URP/HDRP、UE 存在绝对世界空间与常规世界空间细分,常规光照计算通用标准世界空间。
3. 典型适用场景
- 全局光照、方向光(太阳光)、场景阴影计算;
- 基于场景方位的效果(山体顶部积雪、墙面顶部积灰、世界空间菲涅尔);
- 模型距离判断、场景空间遮罩、地形混合;
- 绝大多数静态场景道具、建筑、植被材质。
4. 优缺点
- 优点:全局统一,光照计算精准,跨模型效果一致性强;
- 缺点:模型形变、骨骼动画时,世界空间法线易出现扭曲,不适合高精度曲面细节。

(三)视图空间(View Space / 相机空间)
1. 基础定义
以当前渲染相机为坐标原点的坐标系,坐标轴完全跟随相机的位置、旋转、视角变化,也叫相机空间。
- 坐标轴规则:常规规则下,相机看向屏幕深处为 Z 轴正方向,屏幕左右为 X 轴,屏幕上下为 Y 轴;
- 核心逻辑:所有数据都以 “相机视角” 作为参考。
2. 核心特性
- 强关联性:相机移动、旋转、缩放,视图空间所有向量、坐标同步变化;模型原地不动,仅转动相机,视图空间数据也会改变;
- 透视属性:天然适配屏幕透视逻辑,是镜头类特效的底层空间;
- 范围特性:坐标范围受相机视锥体限制,超出视锥体的物体将被裁剪。
3. 典型适用场景(本节课重点案例空间)
- 镜头相关特效:MatCap 材质、屏幕空间描边、镜头畸变、景深、雾气;
- 基于视角的菲涅尔、边缘光、视线遮罩;
- 深度测试、物体前后层次判断、屏幕空间纹理映射;
- UI、屏幕后处理特效。
4. 优缺点
- 优点:完美匹配相机透视,镜头类效果制作简单自然;
- 缺点:完全依赖相机,制作固定场景光照、方位效果会失效,相机转动效果同步变化。
(四)切线空间(Tangent Space)【法线贴图专用核心空间】
1. 基础定义
依附于模型每一个像素 / 顶点表面的局部微型坐标系,模型每个顶点都拥有独立的切线空间,由三组正交向量构成 TBN 坐标系:
- T(Tangent 切线):沿模型 UV 水平 (U) 方向;
- B(Bitangent 副切线 / 双法线):沿模型 UV 垂直 (V) 方向;
- N(Normal 法线):垂直于模型表面,为切线空间 Z 轴正方向。 该空间随模型曲面、UV、骨骼动画同步形变,是曲面细节模拟的专属空间。
2. 核心特性
- 逐表面独立:模型曲面不同位置,切线空间朝向不同,完美贴合曲面弧度;
- 形变适配:支持模型骨骼动画、布料形变、弯曲变形,形变后细节纹理不会扭曲;
- 标准数值:常规切线空间法线贴图底色为蓝紫色 (0,0,1),代表表面原始法线无偏移;
- UV 绑定:和模型 UV 强绑定,同一张法线贴图可复用到不同模型、不同 UV 布局上。
3. 典型适用场景(行业主流用法)
- 切线空间法线贴图(游戏 99% 的凹凸、划痕、磨损、毛孔细节均使用此格式);
- 角色皮肤、布料、橡胶、金属拉丝等曲面高精度细节;
- UV 动画纹理、曲面流动贴图、波纹扰动;
- 动态形变模型(人形角色、动物、柔性道具)。
4. 优缺点
- 优点:适配动画与曲面,贴图复用性强,纹理压缩友好,细节表现最佳;
- 缺点:逻辑最复杂,必须借助TBN 矩阵完成空间转换,向量运算步骤更多。
三、双引擎空间切换节点全解
Unity Shader Graph 与 Unreal 材质蓝图均支持向量 / 位置数据的空间选择与跨空间转换,节点命名、参数略有差异,核心逻辑完全一致,下面分模块汇总常用节点、调用方式与参数配置。
(一)基础属性节点(自带空间选择)
这类节点(位置、法线、视线、切线)原生支持直接切换输出空间,无需额外转换节点,是日常使用主力。
1. Unity Shader Graph
所有几何类节点统一在 Input → Geometry 分类下,节点参数栏存在 Space(空间) 下拉选项,可直接选择输出空间:
表格
| 节点名称 | 可选空间 | 默认输出空间 | 用途 |
|---|---|---|---|
| Position(位置) | Object / World / View / Tangent | World(世界空间) | 获取像素 / 顶点坐标 |
| Normal Vector(法线) | Object / World / View / Tangent | World(世界空间) | 获取表面法线向量 |
| View Direction(视线) | Object / World / View / Tangent | World(世界空间) | 获取相机视线向量 |
| Tangent Vector(切线) | Object / World / View / Tangent | World(世界空间) | 获取切线向量,构建 TBN 矩阵 |
操作方式:选中节点,右侧检查器面板找到 Space,下拉切换对应空间即可。
2. Unreal Engine 材质蓝图
UE 将空间拆分至节点命名与内置参数中,分为两种形式:
- 命名区分:
World Space Normal(世界空间法线)、View Space Direction(视图空间视线),直接通过节点名称选择空间; - 通用坐标节点:
Texture Coordinate、Position节点可在细节面板切换空间; - 补充:UE 切线空间相关节点需配合
Transform Vector(向量转换节点)完成空间变换。
(二)通用空间转换节点(跨空间强制转换)
当已有向量 / 位置数据为 A 空间,需要转为 B 空间参与运算时,使用以下转换节点,双引擎功能对等。
-
Unity:Transform Vector(向量转换)
- 功能:将输入向量从「源空间」转换为「目标空间」;
- 核心参数:
From Space(原始空间)、To Space(目标空间); - 附加选项:
Normalize Output(归一化输出),方向向量建议勾选,保证精度。
-
Unreal:Transform Vector(向量转换)
- 功能、参数、用法与 Unity 完全一致,是切线空间、视图空间案例的核心节点;
- 额外支持:区分「方向向量」和「位置向量」转换,避免位置数据运算错误。
(三)四大空间节点核心差异汇总表
表格
| 功能需求 | Unity Shader Graph | Unreal 材质蓝图 | 通用建议 |
|---|---|---|---|
| 获取世界空间法线 | Normal Vector(Space=World) | World Space Normal | 全局光照、场景方位遮罩首选 |
| 获取视图空间视线 | View Direction(Space=View) | View Space View Direction | MatCap、镜头特效专用 |
| 获取物体空间位置 | Position(Space=Object) | Object Space Position | 模型局部动画、内部效果 |
| 切线空间转换 | Transform Vector + Tangent Vector | Transform Vector + TBN 组合 | 法线贴图必用组合 |
四、核心原则:向量运算的空间统一规则
本节课反复强调的黄金规则,解决 90% 向量运算异常:
-
同运算 = 同空间 参与点积 (Dot)、加减、插值 (Lerp)、乘法的所有向量(法线、视线、光照、位置),必须预先转换到同一个坐标空间。 ✅ 正确示例:世界空间法线 + 世界空间视线 → 点积(标准菲涅尔) ❌ 错误示例:世界空间法线 + 视图空间视线 → 点积(结果错乱、明暗闪烁)
-
方向向量优先归一化 法线、视线、光照这类描述 “方向” 的向量,完成空间转换后,建议使用
Normalize节点归一化(向量长度变为 1),防止因向量长度异常导致明暗强度不均。 -
位置向量禁止随意归一化 模型坐标、世界位置等位置类数据,不要归一化,否则会丢失坐标距离信息,引发位置计算错误。
-
动画模型优先切线 / 物体空间 带有骨骼动画、形变的角色、布料,避免直接使用世界空间法线,动画过程中会出现法线扭曲、细节拉伸。
五、两大实战案例(逐节点拆解,课程核心演示)
结合四大空间特性,本节课落地两个行业高频案例,覆盖视图空间与切线空间两大难点,节点链路双引擎通用。
案例一:视图空间 MatCap 材质(视图空间经典应用)
1. 效果说明
MatCap(材质捕获)是一种基于相机视图空间的模拟材质效果,利用一张球形采样贴图,根据模型表面相对于相机的朝向采样贴图颜色,快速实现金属、陶瓷、车漆、卡通质感,不受场景光照影响,手游、卡通渲染中使用极广。
2. 原理逻辑
- 将模型世界空间法线转换为视图空间法线(核心:统一至视图空间);
- 用视图空间法线的 XY 分量作为 UV 坐标,采样 MatCap 球形贴图;
- 采样结果叠加基础颜色、自发光,形成最终材质;
- 特性:转动相机,模型材质反光区域同步变化;转动模型(相机不动),反光区域固定。
3. 完整节点链路(双引擎分步流程)
- 基础输入:创建 Normal Vector(世界空间法线);
- 空间转换:接入
Transform Vector,设置From = World、To = View,转为视图空间法线; - 数据提取:拆分视图空间三维向量,仅取出 X、Y 通道(舍弃 Z 通道),作为自定义 UV;
- 纹理采样:XY 通道 →
Sample Texture 2D采样 MatCap 贴图; - 效果合成:采样结果 叠加 / 相乘 基础颜色、粗糙度,输出至基础颜色通道。
4. 参数调节与优化
- 贴图选择:MatCap 贴图为球形渐变图,不同贴图对应金属、磨砂、宝石等不同质感;
- 翻转修正:若反光方向相反,对 X/Y 通道添加
Negate取反; - 强度控制:使用
Multiply节点调节 MatCap 叠加强度,避免画面过曝; - 性能优势:无实时光照计算,性能开销极低,适合大批量道具、卡通角色。
5. 常见问题排查
- 贴图拉伸、变形:未正确转换为视图空间,重新检查 Transform Vector 参数;
- 全模型单色:错误使用 Z 通道作为 UV,仅保留 XY 通道即可;
- 转动相机效果异常:法线未归一化,开启 Normalize Output。






案例二:切线空间法线贴图(行业标准用法)
1. 效果说明
使用切线空间法线贴图,在低面数模型上模拟高模的凹凸、划痕、纹理细节,是 3D 美术、TA 的基础技能,角色、武器、装备、场景道具全覆盖。
2. 原理逻辑
- 模型原始法线为切线空间基准法线(默认朝向:0,0,1 蓝紫色);
- 采样切线空间法线贴图,得到偏移后的切线空间法线;
- 通过 TBN 矩阵(切线、副切线、原始法线),将切线空间法线转换为世界空间法线;
- 用转换后的世界空间法线参与光照计算,实现凹凸光影效果。
3. 完整节点链路(标准工业流程)
- 基础输入:
- 采样法线贴图:
Sample Texture 2D读取切线空间法线贴图; - 模型基础向量:
Normal Vector(原始法线)、Tangent Vector(切线);
- 采样法线贴图:
- 构建 TBN 矩阵:引擎内置逻辑自动组合切线 (T)、副切线 (B)、法线 (N),无需手动计算;
- 空间转换:
Transform Vector将切线空间法线 → 世界空间法线(最关键一步); - 光照运算:转换后的世界空间法线 + 主光源方向 → Dot 点积,计算漫反射光照;
- 最终输出:光照结果连接基础颜色通道,呈现凹凸细节。
4. 关键知识点与参数
- 法线贴图格式确认:必须使用切线空间法线贴图(蓝紫色底色),世界空间法线贴图不可套用此流程;
- 凹凸强度:通过乘法节点缩放法线贴图采样值,控制凹凸深浅;数值越大,凹凸越强烈;
- 动画适配:切线空间天然支持骨骼动画,角色跑动、动作变形时,凹凸细节不会撕裂、拉伸;
- 双引擎差异:UE 法线贴图默认自带解压缩节点,Unity 需注意法线贴图导入设置(勾选 Normal Map)。

5. 高频报错与修复
表格
| 异常现象 | 根因 | 修复方案 |
|---|---|---|
| 模型全黑、无光照 | 切线空间法线未转为世界空间,空间不匹配 | 补充 Transform Vector 节点,切线转世界空间 |
| 凹凸方向反转(凹陷变凸起) | 切线 / 副切线方向颠倒 | 对切线向量添加 Negate 取反 |
| 动画时细节扭曲、撕裂 | 使用了世界空间法线贴图 | 替换为切线空间法线贴图,使用 TBN 转换流程 |
| 细节微弱、几乎看不见 | 法线贴图强度过低 | 增大乘法节点数值,或调整贴图导入强度 |
五、四大空间横向对比与选型指南
结合使用场景、性能、适配性,整理快速选型表,制作材质时直接对照选择空间:
表格
| 坐标空间 | 核心参照 | 最佳使用场景 | 不推荐场景 | 性能开销 |
|---|---|---|---|---|
| 物体空间 (Object) | 模型自身轴心 | 模型局部动画、内部纹理、顶点形变 | 全局光照、多模型统一效果 | 低 |
| 世界空间 (World) | 场景全局原点 | 全局光照、场景方位遮罩、静态道具 | 骨骼动画、曲面高精度细节 | 低 |
| 视图空间 (View) | 相机 | MatCap、镜头特效、屏幕空间效果 | 固定场景方位、不受相机影响的效果 | 中 |
| 切线空间 (Tangent) | 模型表面 UV / 曲面 | 法线贴图、动画角色、曲面细节、UV 动画 | 全局方位判断、大型场景遮罩 | 中(需矩阵转换) |
六、双引擎操作速查 & 节点使用技巧
1. Unity Shader Graph 快捷操作
- 快速切换空间:选中位置 / 法线 / 视线节点 → 右侧面板
Space下拉菜单,一键切换; - 向量转换固定搭配:
Transform Vector+ 勾选Normalize Output(方向向量标配); - 法线贴图流程:贴图采样 → Transform (切线→世界) → 光照运算。
2. Unreal 材质蓝图快捷操作
- 快速选取空间节点:右键搜索关键词
World Space/View Space直接调用对应向量; - TBN 矩阵:引擎自动集成,无需手动创建,专注空间转换即可;
- 法线贴图:导入贴图后设置为
Normal Map,引擎自动解码。
3. 通用避坑技巧
- 新手优先顺序:先精通世界空间(90% 常规材质),再学视图空间(镜头特效),最后攻克切线空间(法线贴图);
- 测试技巧:制作效果异常时,优先检查「向量空间是否统一」,这是第一排查点;
- 项目适配:手游低配项目尽量减少多层空间转换,优先使用原生空间参数,降低 GPU 开销;
- 管线适配:Unity URP/HDRP 世界空间定义略有差异,跨管线项目统一使用
Absolute World(绝对世界空间)。
七、课后练习与知识延伸
1. 分阶实操练习(循序渐进巩固)
- 入门练习:分别将法线节点切换为四大空间,移动模型、转动相机,观察向量视觉变化,理解空间运动规律;
- 基础练习:复刻 MatCap 材质,更换不同 MatCap 贴图,体验不同质感效果,练习视图空间转换;
- 进阶练习:完成切线空间法线贴图标准流程,调节凹凸强度,测试静态模型与动画模型的表现差异;
- 综合练习:结合第 9 集菲涅尔效果,将菲涅尔向量统一至视图空间,制作镜头相关边缘光。
2. 知识点延伸(衔接本系列最后一集)
- 本节课的空间转换、法线处理,是下一集
Min/Max/Clamp/Saturate范围节点的应用基础; - 切线空间是法线贴图混合、细节法线的前置知识,也是写实材质(皮肤、金属、布料)的核心;
- 视图空间可延伸至屏幕空间雾、描边、透视畸变等后处理特效。
3. 长期学习建议
- 建立 “空间思维”:拿到任意向量 / 位置节点,第一时间判断其所属空间;
- 分类整理案例:将世界空间光照、视图空间 MatCap、切线空间法线贴图分为三大模板,项目中直接复用;
- 美术配合:和建模师确认法线贴图格式(切线空间 / 世界空间),从源头避免空间不匹配问题。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)