这篇文章是 WebGL2 系列文章的延续。从基础概念开始,上篇是关于三维相机的文章。
整个网站都指出几乎所有关于 WebGL 的 100%的内容是由你决定的。除了一些预定义的名称像gl_Position
,几乎所有关于 WebGL 的东西是由程序员定义的。
有一些通用的或者半通用的命名约定。尤其与矩阵相关时。我不知道谁率先使用了这些名称。我想我是从NVidia 的标准注释和语义学到的。这更加正式,通过确定的命名,尝试让着色器在更多的情况下工作。有点过时,但基本部分仍然奏效。
这是我想到的列表
世界矩阵 world matrix (或者有时被成为模型矩阵 model matrix)
转换模型顶点到世界空间的矩阵
相机矩阵 camera matrix
代表相机在世界空间中位置的矩阵。另一种说法是相机的世界矩阵。
视图矩阵 view matrix
把世界空间中所有东西移到相机前。这是相机矩阵的逆。
投影矩阵 projection matrix
矩阵转换视锥体空间到裁剪空间或者一些正交空间到裁剪空间。 另一种说法是你的矩阵数学库透视函数perspective
和正交函数ortho
或者
orthographic
返回的矩阵。
本地矩阵 local matrix
当使用场景图时,本地矩阵是是某一节点和其他节点相乘之前的矩阵。
如果着色器需要矩阵的组合,它们通常从右向左列出,即使着色器中它们是乘在右边的。例如:
worldViewProjection = projection * view * world
另外两个对于矩阵常见的操作是求逆
viewMatrix = inverse(cameraMatrix)
和转置
worldInverseTranpose = transpose(inverse(world))
希望了解这些术语,在你看其他人的着色器代码时,如果你很幸运他们使用接近或类似的名字时,你可以理解实际上在做什么。
现在,让我们接着学习动画.