一、课程总览与学习目标

1. 本节核心学习目标

  1. 吃透四大坐标空间:物体空间 (Object)、世界空间 (World)、视图空间 (View)、切线空间 (Tangent) 的定义、原点、坐标轴规则与视觉表现;
  2. 掌握 Unity Shader Graph 与 Unreal 材质蓝图中空间切换、向量空间转换的原生节点与参数;
  3. 理解不同空间下法线、视线、位置向量的形态差异,学会判断向量所属空间;
  4. 掌握向量空间统一原则:所有参与运算的向量、位置数据,必须置于同一坐标空间
  5. 完成两大实战案例:视图空间 MatCap 材质、切线空间法线贴图基础应用;
  6. 排查因空间不匹配引发的材质报错、效果异常,建立规范的空间使用思维。

2. 通用前置规则(双引擎通用铁律)

  1. 向量运算前提:法线、视线、光照、位置等数据必须统一到同一个坐标空间后,再进行点积、加减、乘法等运算;
  2. 单位向量要求:方向类向量(法线、视线、光照)建议开启归一化 (Normalize),保证向量长度为 1,避免强度偏差;
  3. 性能优先级:引擎内置空间切换参数 > 手动矩阵转换节点,项目中优先使用原生配置;
  4. 适用边界:静态道具多用世界空间,动画角色、曲面纹理多用切线空间,镜头相关特效多用视图空间。

二、四大坐标空间 完整详解(核心理论)

本节依次讲解游戏着色器最常用的四类坐标空间,从原点、参考系、运动特性、典型用途、优缺点五个维度拆解,同时结合模型、相机、场景的关系辅助理解。

(一)物体空间(Object Space / 模型空间)

1. 基础定义

模型自身轴心点 (Pivot) 为坐标原点的局部坐标系,每个模型拥有独立的物体空间,场景内多个模型的物体空间互相独立、互不干扰。

  • 坐标轴:跟随模型同步旋转、位移、缩放;模型转动,物体空间坐标轴同步转动。
  • 数据来源:模型建模阶段定义的顶点位置、模型空间法线、模型 UV 均属于该空间。
2. 核心特性
  1. 独立性:A 模型的物体空间和 B 模型无关联,仅描述模型自身的位置与方向;
  2. 跟随变换:模型在场景中移动、旋转、缩放,物体空间内的顶点、法线相对坐标保持不变
  3. 数值范围:仅作用于单模型,坐标范围由模型尺寸决定,无全局统一标准。
3. 典型适用场景
  • 模型内部纹理、固定轮廓效果(不受场景位置 / 相机影响);
  • 模型空间法线贴图(老式法线贴图格式,如今使用较少);
  • 基于模型自身朝向的遮罩、内部描边;
  • 顶点动画(布料、旗帜、模型形变)。
4. 优缺点
  • 优点:逻辑简单,不受场景、相机干扰,运算开销低;
  • 缺点:无法直接参与全局光照计算(多模型光照不统一),不适合动态角色、曲面细节。

(二)世界空间(World Space)【使用频率最高】

1. 基础定义

整个游戏场景的全局原点为基准的统一坐标系,场景内所有模型、相机、光源都共用一套世界空间,是全局运算的标准空间。

  • 坐标轴:固定不变,不会随模型、相机的移动 / 旋转而改变;
  • 地位:前一集讲解的法线、主光源方向、世界位置,默认均为世界空间。
2. 核心特性
  1. 全局统一:全场景数据参照同一原点,是多模型光照、全局阴影、场景方位遮罩的首选空间;
  2. 相对运动:模型移动 / 旋转时,其顶点、法线在世界空间中的坐标与方向会同步改变;相机移动不影响世界空间坐标轴;
  3. 引擎细分:Unity URP/HDRP、UE 存在绝对世界空间与常规世界空间细分,常规光照计算通用标准世界空间。
3. 典型适用场景
  • 全局光照、方向光(太阳光)、场景阴影计算;
  • 基于场景方位的效果(山体顶部积雪、墙面顶部积灰、世界空间菲涅尔);
  • 模型距离判断、场景空间遮罩、地形混合;
  • 绝大多数静态场景道具、建筑、植被材质。
4. 优缺点
  • 优点:全局统一,光照计算精准,跨模型效果一致性强;
  • 缺点:模型形变、骨骼动画时,世界空间法线易出现扭曲,不适合高精度曲面细节。

(三)视图空间(View Space / 相机空间)

1. 基础定义

当前渲染相机为坐标原点的坐标系,坐标轴完全跟随相机的位置、旋转、视角变化,也叫相机空间

  • 坐标轴规则:常规规则下,相机看向屏幕深处为 Z 轴正方向,屏幕左右为 X 轴,屏幕上下为 Y 轴;
  • 核心逻辑:所有数据都以 “相机视角” 作为参考。
2. 核心特性
  1. 强关联性:相机移动、旋转、缩放,视图空间所有向量、坐标同步变化;模型原地不动,仅转动相机,视图空间数据也会改变;
  2. 透视属性:天然适配屏幕透视逻辑,是镜头类特效的底层空间;
  3. 范围特性:坐标范围受相机视锥体限制,超出视锥体的物体将被裁剪。
3. 典型适用场景(本节课重点案例空间)
  • 镜头相关特效:MatCap 材质、屏幕空间描边、镜头畸变、景深、雾气;
  • 基于视角的菲涅尔、边缘光、视线遮罩;
  • 深度测试、物体前后层次判断、屏幕空间纹理映射;
  • UI、屏幕后处理特效。
4. 优缺点
  • 优点:完美匹配相机透视,镜头类效果制作简单自然;
  • 缺点:完全依赖相机,制作固定场景光照、方位效果会失效,相机转动效果同步变化。

(四)切线空间(Tangent Space)【法线贴图专用核心空间】

1. 基础定义

依附于模型每一个像素 / 顶点表面的局部微型坐标系,模型每个顶点都拥有独立的切线空间,由三组正交向量构成 TBN 坐标系:

  • T(Tangent 切线):沿模型 UV 水平 (U) 方向;
  • B(Bitangent 副切线 / 双法线):沿模型 UV 垂直 (V) 方向;
  • N(Normal 法线):垂直于模型表面,为切线空间 Z 轴正方向。 该空间随模型曲面、UV、骨骼动画同步形变,是曲面细节模拟的专属空间。
2. 核心特性
  1. 逐表面独立:模型曲面不同位置,切线空间朝向不同,完美贴合曲面弧度;
  2. 形变适配:支持模型骨骼动画、布料形变、弯曲变形,形变后细节纹理不会扭曲;
  3. 标准数值:常规切线空间法线贴图底色为蓝紫色 (0,0,1),代表表面原始法线无偏移;
  4. 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 将空间拆分至节点命名与内置参数中,分为两种形式:

  1. 命名区分:World Space Normal(世界空间法线)、View Space Direction(视图空间视线),直接通过节点名称选择空间;
  2. 通用坐标节点:Texture CoordinatePosition 节点可在细节面板切换空间;
  3. 补充:UE 切线空间相关节点需配合 Transform Vector(向量转换节点)完成空间变换。

(二)通用空间转换节点(跨空间强制转换)

当已有向量 / 位置数据为 A 空间,需要转为 B 空间参与运算时,使用以下转换节点,双引擎功能对等。

  1. Unity:Transform Vector(向量转换)

    • 功能:将输入向量从「源空间」转换为「目标空间」;
    • 核心参数:From Space(原始空间)、To Space(目标空间);
    • 附加选项:Normalize Output(归一化输出),方向向量建议勾选,保证精度。
  2. 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% 向量运算异常:

  1. 同运算 = 同空间 参与点积 (Dot)、加减、插值 (Lerp)、乘法的所有向量(法线、视线、光照、位置),必须预先转换到同一个坐标空间。 ✅ 正确示例:世界空间法线 + 世界空间视线 → 点积(标准菲涅尔) ❌ 错误示例:世界空间法线 + 视图空间视线 → 点积(结果错乱、明暗闪烁)

  2. 方向向量优先归一化 法线、视线、光照这类描述 “方向” 的向量,完成空间转换后,建议使用 Normalize 节点归一化(向量长度变为 1),防止因向量长度异常导致明暗强度不均。

  3. 位置向量禁止随意归一化 模型坐标、世界位置等位置类数据,不要归一化,否则会丢失坐标距离信息,引发位置计算错误。

  4. 动画模型优先切线 / 物体空间 带有骨骼动画、形变的角色、布料,避免直接使用世界空间法线,动画过程中会出现法线扭曲、细节拉伸。


五、两大实战案例(逐节点拆解,课程核心演示)

结合四大空间特性,本节课落地两个行业高频案例,覆盖视图空间切线空间两大难点,节点链路双引擎通用。

案例一:视图空间 MatCap 材质(视图空间经典应用)

1. 效果说明

MatCap(材质捕获)是一种基于相机视图空间的模拟材质效果,利用一张球形采样贴图,根据模型表面相对于相机的朝向采样贴图颜色,快速实现金属、陶瓷、车漆、卡通质感,不受场景光照影响,手游、卡通渲染中使用极广。

2. 原理逻辑
  1. 将模型世界空间法线转换为视图空间法线(核心:统一至视图空间);
  2. 用视图空间法线的 XY 分量作为 UV 坐标,采样 MatCap 球形贴图;
  3. 采样结果叠加基础颜色、自发光,形成最终材质;
  4. 特性:转动相机,模型材质反光区域同步变化;转动模型(相机不动),反光区域固定。
3. 完整节点链路(双引擎分步流程)
  1. 基础输入:创建 Normal Vector(世界空间法线)
  2. 空间转换:接入 Transform Vector,设置 From = WorldTo = View,转为视图空间法线;
  3. 数据提取:拆分视图空间三维向量,仅取出 X、Y 通道(舍弃 Z 通道),作为自定义 UV;
  4. 纹理采样:XY 通道 → Sample Texture 2D 采样 MatCap 贴图;
  5. 效果合成:采样结果 叠加 / 相乘 基础颜色、粗糙度,输出至基础颜色通道。
4. 参数调节与优化
  1. 贴图选择:MatCap 贴图为球形渐变图,不同贴图对应金属、磨砂、宝石等不同质感;
  2. 翻转修正:若反光方向相反,对 X/Y 通道添加 Negate 取反;
  3. 强度控制:使用 Multiply 节点调节 MatCap 叠加强度,避免画面过曝;
  4. 性能优势:无实时光照计算,性能开销极低,适合大批量道具、卡通角色。
5. 常见问题排查
  • 贴图拉伸、变形:未正确转换为视图空间,重新检查 Transform Vector 参数;
  • 全模型单色:错误使用 Z 通道作为 UV,仅保留 XY 通道即可;
  • 转动相机效果异常:法线未归一化,开启 Normalize Output。

案例二:切线空间法线贴图(行业标准用法)

1. 效果说明

使用切线空间法线贴图,在低面数模型上模拟高模的凹凸、划痕、纹理细节,是 3D 美术、TA 的基础技能,角色、武器、装备、场景道具全覆盖。

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

5. 高频报错与修复

表格

异常现象 根因 修复方案
模型全黑、无光照 切线空间法线未转为世界空间,空间不匹配 补充 Transform Vector 节点,切线转世界空间
凹凸方向反转(凹陷变凸起) 切线 / 副切线方向颠倒 对切线向量添加 Negate 取反
动画时细节扭曲、撕裂 使用了世界空间法线贴图 替换为切线空间法线贴图,使用 TBN 转换流程
细节微弱、几乎看不见 法线贴图强度过低 增大乘法节点数值,或调整贴图导入强度

五、四大空间横向对比与选型指南

结合使用场景、性能、适配性,整理快速选型表,制作材质时直接对照选择空间:

表格

坐标空间 核心参照 最佳使用场景 不推荐场景 性能开销
物体空间 (Object) 模型自身轴心 模型局部动画、内部纹理、顶点形变 全局光照、多模型统一效果
世界空间 (World) 场景全局原点 全局光照、场景方位遮罩、静态道具 骨骼动画、曲面高精度细节
视图空间 (View) 相机 MatCap、镜头特效、屏幕空间效果 固定场景方位、不受相机影响的效果
切线空间 (Tangent) 模型表面 UV / 曲面 法线贴图、动画角色、曲面细节、UV 动画 全局方位判断、大型场景遮罩 中(需矩阵转换)

六、双引擎操作速查 & 节点使用技巧

1. Unity Shader Graph 快捷操作

  1. 快速切换空间:选中位置 / 法线 / 视线节点 → 右侧面板 Space 下拉菜单,一键切换;
  2. 向量转换固定搭配:Transform Vector + 勾选 Normalize Output(方向向量标配);
  3. 法线贴图流程:贴图采样 → Transform (切线→世界) → 光照运算。

2. Unreal 材质蓝图快捷操作

  1. 快速选取空间节点:右键搜索关键词 World Space / View Space 直接调用对应向量;
  2. TBN 矩阵:引擎自动集成,无需手动创建,专注空间转换即可;
  3. 法线贴图:导入贴图后设置为 Normal Map,引擎自动解码。

3. 通用避坑技巧

  1. 新手优先顺序:先精通世界空间(90% 常规材质),再学视图空间(镜头特效),最后攻克切线空间(法线贴图);
  2. 测试技巧:制作效果异常时,优先检查「向量空间是否统一」,这是第一排查点;
  3. 项目适配:手游低配项目尽量减少多层空间转换,优先使用原生空间参数,降低 GPU 开销;
  4. 管线适配:Unity URP/HDRP 世界空间定义略有差异,跨管线项目统一使用Absolute World(绝对世界空间)。

七、课后练习与知识延伸

1. 分阶实操练习(循序渐进巩固)

  1. 入门练习:分别将法线节点切换为四大空间,移动模型、转动相机,观察向量视觉变化,理解空间运动规律;
  2. 基础练习:复刻 MatCap 材质,更换不同 MatCap 贴图,体验不同质感效果,练习视图空间转换;
  3. 进阶练习:完成切线空间法线贴图标准流程,调节凹凸强度,测试静态模型与动画模型的表现差异;
  4. 综合练习:结合第 9 集菲涅尔效果,将菲涅尔向量统一至视图空间,制作镜头相关边缘光。

2. 知识点延伸(衔接本系列最后一集)

  1. 本节课的空间转换、法线处理,是下一集 Min/Max/Clamp/Saturate 范围节点的应用基础;
  2. 切线空间是法线贴图混合、细节法线的前置知识,也是写实材质(皮肤、金属、布料)的核心;
  3. 视图空间可延伸至屏幕空间雾、描边、透视畸变等后处理特效。

3. 长期学习建议

  1. 建立 “空间思维”:拿到任意向量 / 位置节点,第一时间判断其所属空间;
  2. 分类整理案例:将世界空间光照、视图空间 MatCap、切线空间法线贴图分为三大模板,项目中直接复用;
  3. 美术配合:和建模师确认法线贴图格式(切线空间 / 世界空间),从源头避免空间不匹配问题。
Logo

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

更多推荐