文章目录

  • 透视投影

透视投影


我们认定此时已经进行了 module 和 view 变换,剩下的只需要进行投影变换。此外,我们认为摄像机位于原点,面向 −z-z−z 方向,以 yyy 方向为上方向,n,fn,fn,f 为正数,采用齐次坐标。

已知投影透视的三条约束:

  1. 近平面保持不动;
  2. 远平面的 zzz 轴不动,只有 x,yx,yx,y 的缩放;
  3. 位于 x=0,y=0x=0,y=0x=0,y=0 的点保持不动。

设投影变换的矩阵为 MMM,由于 z<−nz<-nz<−n 的任意一点 (x′,y′,z′,1)(x',y',z',1)(x′,y′,z′,1),其与原点连线过近平面上的一点 (x,y,−n,1)(x,y,-n,1)(x,y,−n,1),经过变换之后两点的 x,yx,yx,y 坐标对齐(即相等),根据相似三角形原理
x′z′=−xn⇒x=−nx′z′\frac{x'}{z'}=-\frac xn\Rightarrow x=-\frac{nx'}{z'} z′x′​=−nx​⇒x=−z′nx′​

同理
y′z′=−yn⇒y=−ny′z′\frac{y'}{z'}=-\frac yn\Rightarrow y=-\frac{ny'}{z'} z′y′​=−ny​⇒y=−z′ny′​

更广泛地,我们有
M[x′,y′,z′,1]T=[nx′,ny′,?,−z′]T∼[x,y,?,1]TM[x',y',z',1]^T=[nx',ny',?,-z']^T\sim[x,y,?,1]^T M[x′,y′,z′,1]T=[nx′,ny′,?,−z′]T∼[x,y,?,1]T

由此可以写出部分的投影变换矩阵
M=[n0000n00????00−10]=[n0000n00ABCD00−10]M=\left[ \begin{matrix} n&0&0&0\\ 0&n&0&0\\ ?&?&?&?\\ 0&0&-1&0 \end{matrix} \right] =\left[ \begin{matrix} n&0&0&0\\ 0&n&0&0\\ A&B&C&D\\ 0&0&-1&0 \end{matrix} \right] M=⎣⎢⎢⎡​n0?0​0n?0​00?−1​00?0​⎦⎥⎥⎤​=⎣⎢⎢⎡​n0A0​0nB0​00C−1​00D0​⎦⎥⎥⎤​

根据第一条约束,对于近平面上的任意一点 (x,y,−n,1)(x,y,-n,1)(x,y,−n,1),有
M[x,y,−n,1]T=[nx,ny,−n2,n]T⇒Ax+By−Cn+D=−n2⇒{A=B=0−Cn+D=−n2\begin{aligned} M[x,y,-n,1]^T=[nx,ny,-n^2,n]^T\Rightarrow\\ Ax+By-Cn+D=-n^2\Rightarrow \left\{ \begin{aligned} &A=B=0\\ &-Cn+D=-n^2 \end{aligned} \right. \end{aligned} M[x,y,−n,1]T=[nx,ny,−n2,n]T⇒Ax+By−Cn+D=−n2⇒{​A=B=0−Cn+D=−n2​​

根据第三条约束,对于远平面 x=y=0x=y=0x=y=0 上的任意一点 (0,0,−f,1)(0,0,-f,1)(0,0,−f,1) 有
M[0,0,−f,1]T=[0,0,−f2,f]T⇒−Cf+D=−f2\begin{aligned} M[0,0,-f,1]^T=[0,0,-f^2,f]^T\Rightarrow -Cf+D=-f^2 \end{aligned} M[0,0,−f,1]T=[0,0,−f2,f]T⇒−Cf+D=−f2​

求解得到
M=[n0000n0000n+fnf00−10]M=\left[ \begin{matrix} n&0&0&0\\ 0&n&0&0\\ 0&0&n+f&nf\\ 0&0&-1&0 \end{matrix} \right] M=⎣⎢⎢⎡​n000​0n00​00n+f−1​00nf0​⎦⎥⎥⎤​

进行了投影变换后方台则变成了一个长方体,长方体有固定的长宽高,为例将这个变换得到的长方体变换成标准空间 [−1,1]3[-1,1]^3[−1,1]3 以便进行平行投影,我们还需要进行一次变换,我们通过定义摄像机的视角 fov\text{fov}fov 和近平面的长宽高 ratio\text{ratio}ratio,我们可以算出这个长方体的宽高长和中心位置,之后的变换是容易的。

【图形学】关于透视投影相关推荐

  1. 图形学中透视投影矩阵推导

    透视投影矩阵是图形学一道重要的坎,他是将世界空间转到屏幕空间,再将屏幕放进裁剪空间ndc映射 我们从侧视图看 我们的已知条件 1.aspect:屏幕宽高比 2.n:近截面z轴坐标 3.f :远截面z轴 ...

  2. osg-3D世界到屏幕

    标题 前面记录了3D世界如何绘制,今天讨论一下3D世界怎么呈现到屏幕? 1.(模型视图矩阵)model-view matirx 模型矩阵: 用于描述物体在3D世界中的位置,原理是:把模型上所有的顶点从 ...

  3. 计算机图形学透视投影知识点,计算机图形学

    计算机图形学期末复习 第一章 绪论 计算机图形学定义:计算机图形学是研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理.方法和技术 第二章 计算机设备及硬件系统 知识点 阴极射线管(CRT) ...

  4. 【3】现代计算机图形学(正交投影,透视投影,MVP变换)

    导读 本节主要总结MVP变换(Model-View-Projection),来说明三维空间中的物体是如何映射到二维屏幕上的. 知识点 View/Camera Transformation(视图/相机变 ...

  5. 计算机图形学【GAMES-101】1、矩阵变换原理Transform(旋转、位移、缩放、正交投影、透视投影)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  6. 图形学笔记(四)变换——三维变换(三维旋转与欧拉角)、MVP变换、视图变换、投影变换(正交投影与透视投影)

    图形学笔记(三)变换--缩放.镜像.切变 图形学笔记(五)光栅化--屏幕.像素.屏幕空间.视口变换.基础图元与三角形.采样.包围盒.锯齿或走样 文章目录 1 三维空间中的变换 1.1 三维空间中的齐次 ...

  7. 图形学 平行投影与透视投影

    平行投影分为正投影与斜投影:正投影是最常用的投影,它不需要知道投影源(投影中心),只需要在知道投影面的情况下就可以求出投影后的图.我们在求三视图的时候,用的就是正投影,但是这儿要注意,图形学中的求三视 ...

  8. 计算机图形学-正交投影与透视投影

    本专栏内容整理了GAMES101的计算机图形学课程的主要内容,作为我学习计算机图形学的一份复习备份或叫做笔记.内容中如有错误,或有其他建议,欢迎大家指出. 附上GAMES101计算机图形学课程:GAM ...

  9. 计算机图形学实验三立体线框模型透视投影

    一.实验目的 (1)掌握使用点表和面表构造立方体线框模型的方法. (2)掌握视点求坐标的计算方法. (3)掌握立方体线框模型二维透视投影图的绘制方法. (4)掌握立方体线框模型二维透视投影图的旋转方法 ...

最新文章

  1. 深入了解Intel保护模式
  2. Oracle 同义词的创建及其作用
  3. 时间戳类型的字符串 {Timestamp@15601} “2021-07-14 18:56:53.0“ 变成带T的Object类型 2021-07-14T10:56:53.000+0000 处理
  4. 华为联发科可以升级鸿蒙吗,华为鸿蒙系统降临!首批升级手机确定,联发科芯片被放弃?...
  5. python qt gui快速编程_《PYTHON QT GUI快速编程 PYQT编程指南》源码
  6. 上采样卷积转置的deconvolution方法实现双线性插值,代码实现,结果不一样
  7. Java随机数的创建
  8. cie色度图matlab,带你解读 CIE1931色度图
  9. C语言实现FTP客户端(已编译,亲试可用~)
  10. 基于Qt秒表设计(Qt绘图秒表示例)
  11. Elasticsearch之静态模板
  12. 矩阵对应多项式?多项式?→从特征多项式和哈密顿凯莱定理开始
  13. 招聘管理系统软件java源码_基于Spring Boot的java开源招聘源码-铭阳招聘管理系统...
  14. 【C进阶】qsort函数详解
  15. 单精度与双精度是什么意思,有什么区别?
  16. probably,possibly,may的用法区别是什么呀
  17. spring mvc 学习指南二
  18. (ICRA 2020) Instance Segmentation of LiDAR Point Clouds
  19. hive load data出错
  20. Robotic TMS(二):机器人辅助TMS治疗系统

热门文章

  1. dbdesigner连接到mysql以后mysql出问题了_dbdesigner连接mysql问题解决(转)
  2. html5七牛图片上传js,前端如何上传图片至七牛云
  3. TouchDesigner案例(三)萤火虫
  4. 【图片标注】推荐一款特别好用的图片分割标注工具EIseg
  5. React 路由 封装
  6. java字符流和字节流的区别
  7. MAC地址合法性检测
  8. python实现十大经典算法
  9. 蓝桥杯算法训练合集八 1.数的划分2.求先序排列3.平方计算4.三角形高5.单词复数
  10. 【ROS学习】(六)ROS多线程订阅消息