[翻译]投影变换 Projection Transform (Direct3D 9)

简介: 你可以认为投影变换就是控制摄像机内部的一种方式。他可以类推为为摄像机选择一个漏字板。它是三种变换中最难懂的。本文只讨论以下的一些内容。 典型的投影变换就是缩放和透视投影。投影就变换把视椎转化为一个立方体。

你可以认为投影变换就是控制摄像机内部的一种方式。他可以类推为为摄像机选择一个漏字板。它是三种变换中最难懂的。本文只讨论以下的一些内容。

典型的投影变换就是缩放和透视投影。投影就变换把视椎转化为一个立方体。近大远小。这就是把透视应用于场景。

在视椎体中,摄像机与变换空间原点的距离被定义为D,所以投景矩阵看起来像这样:

 

 

 

 

 

观察矩阵把摄像机通过把z轴-D 平移到原点。平移矩阵如下 
他们两个矩阵相乘得到以下矩阵
透视转换把视椎体转化为新的一个坐标空间。注意视堆平截变为一个立方体,原点炎右上角移动到场景的中间,如图所示
在透视变换中,x和y方向的范围是-1到1。z方向的范围是0(在平面前面),1(在平面后面)
这人矩阵平移和缩放模型是根据摄像机与截面的距离,但是目前 没有考虑到视角大小 ,并且它为远程物体产生的z值可能几乎相同,这使尝试比较变的困难。以下矩阵解决了问题,并根据 视区的纵横比调整顶点,这使它成为透视投影的一个很好的选择。
 
 
 
在这个矩阵中, Z n是近裁剪平面的z值。变量 whQ有以下含义。注意 fov wfov h表示视区在水平和垂直方向上的视角,以弧度为单位
 
 

对应用程序而言,使用视角的角度定义x和y的比例系数可能不如使用视区在水平和垂直方向上的大小(在摄像机空间中)方便。可以用数学推导,得出下面两个使用视区大小计算wh的公式,它们与前面的公式是等价的。

在这两个公式中,Zn表示近裁剪平面的位置,VwVh变量表示视区在摄像机空间的宽和高。

对于C++应用程序而言,这两个大小直接对应于D3DVIEWPORT9结构的WidthHeight成员。(译注:虽然直接对应,但是不等价的,因为VwVh位于摄像机空间,而WidthHeight位于屏幕空间)

无论决定使用什么公式,非常重要的一点是要尽可能将Zn设得大,因为接近摄像机的z值变化不大。这使得用16位z缓存的深度比较变得有点复杂。

同世界变换和观察变换一样,应用程序调用IDirect3DDevice9::SetTransform方法设置投影矩阵。

 
 
相关文章
|
机器学习/深度学习 计算机视觉
AMASS: Archive of Motion Capture as Surface Shapes论文精读
2005年,斯坦福大学的研究者们提出了SCAPE模型,2014年基于SCAPE模型马普所的研究者们提出了MoSh模型旨在更精细地利用光学动捕数据生成人体三维模型,2015年马普所的研究者们提出了新的SMPL人体三维模型,此后SMPL模型成为了更为主流的人体三维模型。2019年,为了整合现有光学动捕数据集光学标志点数量和位置不统一的情况,马普所提出了MoSh++方法,整合现有15个数据集,生成大规模人体动作捕捉数据集AMASS。
590 0
|
机器学习/深度学习 编解码 机器人
Paper:《First Order Motion Model for Image Animation》翻译与解读
Paper:《First Order Motion Model for Image Animation》翻译与解读
Paper:《First Order Motion Model for Image Animation》翻译与解读
|
编解码 机器人 测试技术
Paper:《First Order Motion Model for Image Animation》翻译与解读(二)
Paper:《First Order Motion Model for Image Animation》翻译与解读
|
机器学习/深度学习 数据可视化 机器人
Paper:《First Order Motion Model for Image Animation》翻译与解读(一)
Paper:《First Order Motion Model for Image Animation》翻译与解读