假设我们已经用世界坐标系变换把模型放在了场景的某处(x,y,z):
然后我们要在 camera(x,y,z)这个点去看这个物体,并且设置好相机的朝向(Dir,Up,Right)、那么以相机为原点也会形成一个坐标系:
那么就要问:这个(x,y,z)点如果在红色的坐标系里,三个坐标分量应该是多少?
当然点只有一个,但用两个坐标系去度量、肯定会得到不同的结果(除非两个坐标系原点重合,并且三个基底也正确重合!)
用黑色坐标系的三个数算出红色坐标系里的三个数的过程、就是观察变换、使用的矩阵称为 V 矩阵
那么为什么闲的蛋疼要构造一个相机呢?因为我们想去在场景里移动,观察(如果只是展示一个不会动的画面,那编写3d应用和展示一张2d图片就没有任何区别)
而 opengl 只知道它的NDC、根本不关心世界是怎么样、也没有相机这个概念(opengl就是渲染而已!)
相机是我们的一种抽象和模拟、因为我们通过一个windows窗口要去看这个世界里的模型、那么就把这个窗口假设为相机、并且指向窗口里面、
当按下键盘或者鼠标时、相机的几个参数可以发生改变、这样观察矩阵也随之改变、就能显示出同一个 3d 场景在不同视角观察下的不同图像了。
标签:场景,变换,矩阵,相机,理解,观察,坐标系 From: https://www.cnblogs.com/gs590/p/16859760.html