关于opengl:规范化值是什么意思?

What does it mean to normalize a value?

我目前正在研究OpenGL中的照明,该照明利用了GLSL中称为标准化的功能。根据OpenGL文档,它说它"计算两个向量的归??一化乘积"。但是,它仍然没有解释"规范化"的含义。我曾尝试在Google上查找标准化产品,但是似乎找不到任何相关信息。任何人都可以解释规范化的含义并提供一些规范化值的示例吗?


我认为混淆来自标准化"值"而不是"向量"的想法;如果您只是将一个数字视为一个值,则规范化没有任何意义。规范化仅在应用于矢量时才有用。

向量是数字序列;在3D图形中,通常是表示为v = <x,y,z>

的坐标。

每个向量都有一个大小或长度,可使用毕达哥拉斯定理找到:|v| = sqrt(x^2 + y^2 + z^2)这基本上是从原点<0,0,0>到向量表示的点的线的长度。

向量的长度为1就是正常的。就是这样!

归一化向量意味着将其更改为指向同一方向(从原点考虑该线),但其长度为一个。

我们使用法线向量的主要原因是代表方向;例如,如果要对无限远的光源建模,则无法为其提供精确的坐标。但是,您可以使用法线向量指示从特定点在哪里找到它。


这是一个数学术语,此链接以非常简单的术语解释了其含义:

Operations in 2D and 3D computer graphics are often performed using copies of vectors that have been normalized ie. converted to unit vectors... Normalizing a vector involves two steps:

  • calculate its length, then,
  • divide each of its (xy or xyz) components by its length...