Version: 6000.3
语言: 中文
法线贴图简介(凹凸贴图)
导入法线贴图

曲面法线简介

为了真正解释法线贴图的工作原理,我们将首先描述什么是“法线”,以及如何在实时光照中使用法线贴图。也许最基本的例子是一个模型,其中每个表面多边形仅根据相对于光的表面角度进行照明。表面角度可以表示为一条从表面垂直方向突出的线,该方向(即向量)相对于表面称为“表面法线”,或简称为法线

两个 12 面圆柱体,左侧为平面阴影,右侧为平滑阴影
两个 12 面圆柱体,左侧为平面阴影,右侧为平滑阴影

在上图中,左圆柱体具有基本的平面着色,每个多边形根据其与光源的相对角度进行着色。由于表面是平坦的,因此每个多边形上的光照在多边形区域内都是恒定的。这是相同的两个圆柱体,带有它们的线框meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
可见:

两个 12 面圆柱体,左侧为平面阴影,右侧为平滑阴影
两个 12 面圆柱体,左侧为平面阴影,右侧为平滑阴影

右侧模型的多边形数量与左侧模型相同,但阴影看起来很平滑 - 多边形上的照明呈现出曲面的外观。这是为什么呢?原因是用于反射光的每个点的表面法线会随着多边形的宽度而逐渐变化,因此对于表面上的任何给定点,光线都会反射,就好像该表面是弯曲的,而不是真正的平面恒定多边形。

以 2D 图的形式查看,平面着色圆柱体外侧的三个表面面面将如下所示:

三个面上的平面着色,以 2D 逻辑示意图查看
三个面上的平面着色,以 2D 逻辑示意图查看

表面法线由橙色箭头表示。这些值用于计算光线如何从表面反射,因此你可以看到光线在每个多边形的长度上响应相同,因为表面法线指向同一方向。这给出了“平面阴影”,也是左圆柱体的多边形看起来具有硬边的原因。

但是,对于平滑着色圆柱体,表面法线在平面多边形上有所不同,如下所示:

三个面上的平滑着色,以 2D 逻辑示意图查看
三个面上的平滑着色,以 2D 逻辑示意图查看

法线方向在平面多边形表面上逐渐变化,因此表面上的阴影给人一种平滑曲线的印象(如绿线所示)。这不会影响网格的实际多边形性质,只会影响平面上如何计算光照。这个明显的曲面并不真正存在,以扫视角度观察面将揭示平面多边形的真实性质,但是从大多数视角来看,圆柱体似乎具有光滑的曲面。

使用这种基本的平滑着色,确定法线方向的数据实际上仅存储每个顶点,因此整个表面的变化值从一个顶点插值到下一个顶点。在上图中,红色箭头表示每个折点处存储的法线方向,橙色箭头表示面区域中插值法线方向的示例。

法线贴图简介(凹凸贴图)
导入法线贴图