假设我们已经用世界坐标系变换把模型放在了场景的某处(x,y,z):

 

 然后我们要在 camera(x,y,z)这个点去看这个物体,并且设置好相机的朝向(Dir,Up,Right)、那么以相机为原点也会形成一个坐标系:

 

那么就要问:这个(x,y,z)点如果在红色的坐标系里,三个坐标分量应该是多少?

当然点只有一个,但用两个坐标系去度量、肯定会得到不同的结果(除非两个坐标系原点重合,并且三个基底也正确重合!)

用黑色坐标系的三个数算出红色坐标系里的三个数的过程、就是观察变换、使用的矩阵称为 V 矩阵

 

那么为什么闲的蛋疼要构造一个相机呢?因为我们想去在场景里移动,观察(如果只是展示一个不会动的画面,那编写3d应用和展示一张2d图片就没有任何区别)

而 opengl 只知道它的NDC、根本不关心世界是怎么样、也没有相机这个概念(opengl就是渲染而已!)

相机是我们的一种抽象和模拟、因为我们通过一个windows窗口要去看这个世界里的模型、那么就把这个窗口假设为相机、并且指向窗口里面、

当按下键盘或者鼠标时、相机的几个参数可以发生改变、这样观察矩阵也随之改变、就能显示出同一个 3d 场景在不同视角观察下的不同图像了。

 

原文地址:http://www.cnblogs.com/gs590/p/16859760.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性