假设我们已经用世界坐标系变换把模型放在了场景的某处(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. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性