观测变换(视图变换、投影变换)

概念

观测变换,Viewing transformation

分类

视图变换 View/Camera transformation

我们可以用照相机的原理来阐释3D图形的绘制过程,在摄影时,大致可分为如下几个步骤:

  • 摆放好待拍摄的物品,或者人物。(模型变换)

这个时候物品或者人物就是在世界坐标系里,就是在一个公认的坐标系中,目的是保证待拍摄的物体和照相机在同一个坐标系。

  • 调整好拍摄角度。(视图变换)

这时候的坐标就是camera coordinate system(VC),这个过程是调整Camera到合适的位置以便拍摄,在3D程序中,也就是设置View Matrix了。

  • 调整焦距。(投影变换)
  • 拍摄。

视图变换就是在世界坐标系中摆放Camera的过程,摆放步骤:

  • 首先,确定相机摆放的位置
  • 相机往哪个方向看(前后旋转360度)
  • 确定一个向上的方向(相机顶部的朝向,因为相机可以向左,右旋转会影响最终结果)
    在这里插入图片描述

在拍摄中,如果相机和拍摄物体的相对位置不变,则同时移动相机和拍摄物体,照出来的照片结果是一样的。
由此可以得出一个结论,如果相机和拍摄物体的相对位置不变,那么无论是移动物体或是移动相机,都可以得到相同的结果。

因此,可以固定相机的位置,所有移动都是物体在移动,同时规定
相机位置永远处于原点处,相机永远往-Z方向看,y轴为向上方向
在这里插入图片描述

为什么进行视图转换?

在世界坐标系中,camera的位置不一定在原点上,并且观察方向不一定指向Z轴负方向,对于投影变换及其他的一些操作来说,如果不满足这两个条件,后续的的操作就会变得非常低效,所以为了提高效率,我们需要进行view transform。
使得相机的位置位于世界坐标系的原点处,相机永远往-Z方向看,y轴为向上方向。

视图变换过程

  • 移动camera,使其位于world space的坐标原点
  • 旋转camera,使其朝向z轴正方向,也就是视线由原点指向z轴正方向。

这两个过程,前一个实际上是平移,后一个实际上是旋转。你可以想象成Camera也有三个坐标轴x,y,z,视图变换的过程就是将Camera的坐标轴与世界坐标系的坐标轴对齐的过程
注意:view transform 中,所有位于 world space 中的 models 都随着 camera 一起变换,所以视野并未发生变化。
在这里插入图片描述
整个视图变换所需的视图变换矩阵 Mview 如下:
在这里插入图片描述

投影变换Projection transformation

视图变换是为了投影变换做准备
投影变换是将三维空间中的顶点坐标映射至二维空间坐标。它
分为正交投影和透视投影,两者的本质区别在于是否有“近大远小”这一性质。正交投影不会带来“近大远小”的现象,透视投影会。
在这里插入图片描述

正交投影 Orthographic projection

在这里插入图片描述
在图形学中的一般做法为:
将空间中任意给定的一个长方体平移缩放成一个正则,规范的立方体
在这里插入图片描述
其变换矩阵为:
在这里插入图片描述

透视投影 Perspective projection

应用最广泛的一种投影。透视投影就是最类似人眼所看东西的方式,遵循近大远小,如果说正交投影都是水平光线,那么透视投影则显然不是了。
先回顾一下齐次坐标的性质
在这里插入图片描述
透视转换的做法:
透视投影与正交投影的区别在于远平面要比近平面大一些。

  • 首先将远平面压缩至与近平面相同大小(将一个棱台变成一个长方体)
  • 通过正交投影将远平面投影到近平面

在压缩的过程中,有以下规定:

  • 远平面压缩前后z值不变
  • 远平面的中点位置不会发生变化
  • 近平面中的任意点在压缩前后都不会变
    在这里插入图片描述
    第二步正交投影矩阵已经求出,所以重点在于第一步,如何压缩?
    如下图所示,若远平面上的点(x,y,z)投影到近平面中坐标为(x’,y’,z’)。则点(x,y,z)经过压缩后,y值与y’是一致的(同理x与x’一致,z与z’一致)。
    在这里插入图片描述
    假设点(x,y,z)压缩后,坐标变成(x1,y1,z1)。则x1 = (n/z)*x;y1 = (n/z)*y,z不确定。用矩阵表示,即
    我们希望找到一个变换矩阵,能够完成如下变换
    在这里插入图片描述

    在这里插入图片描述
    (如果形象化的描述一下的话,就是利用这个变换矩阵将整个空间压缩了一下,使其对应了真正透视投影的坐标,最后不要忘了要利用正交转换到 [-1,1]^3 的空间之内)
    首先,这个矩阵的前两行和最后一行是能很快确定出来的,
    在这里插入图片描述
    第三行需要借助透视投影中的两个规定:
  • 远平面压缩前后z值不变
  • 近平面中的任意点在压缩前后都不会变
    在这里插入图片描述 在这里插入图片描述
    解方程可得:
    在这里插入图片描述
    最终的变换矩阵为:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值