图形学-(视图变换,投影变换)

这篇具有很好参考价值的文章主要介绍了图形学-(视图变换,投影变换)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.视图变换

在 3 维物体变到二维平面的过程中,我们需要规定好相机的位置。对于相机所做的变换就是视图变换
(Viewing/Camera transformation)。

我们需要对相机位置进行定义,对于一个相机我们要规定下面三个属性:

  1. 相机位置(视点)(Position)
  2. 相机拍摄方向(视线)(Look-at/Gaze direction)
  3. 相机向上方向(Up direction,假设垂直于 look-at direction)

根据相对运动我们可以知道,只要相机和被拍摄物体相对位置不变,那么拍摄出来的照片应当是一样
的。我们可以通过对被拍摄物体做相同的变换来把相机变换到标准位置。相机的标准位置为

  1. 相机位置在原点 (0, 0);
  2. 相机拍摄方向是-z 轴方向;
  3. 相机的向上方向是 y 轴方向。

将任意位置的相机移动到标准位置需要以下操作:

  1. 将摄像机中心点移动到原点;
  2. 把视线旋转到-z轴方向;
  3. 把上方向旋转到y轴方向;

平移变换的变换矩阵可以写作:
图形学-(视图变换,投影变换)
旋转矩阵的写法比较麻烦。从 ̂𝑔 旋转到-z 轴方向,𝑡̂旋转到 y 轴方向以及 ̂𝑔 × 𝑡̂旋转到 x 轴方向比较难
写,但是旋转变换的逆变换非常的简单
图形学-(视图变换,投影变换)
我们用 x 轴方向单位向量 (1, 0, 0, 0),y 轴单位向量 (0, 1, 0, 0),z 轴单位向量 (0, 0, 1, 0) 代入后结果是正确的。我们知道旋转矩阵的逆矩阵是正交矩阵,因此旋转变换矩阵的逆是旋转变换矩阵的转置矩阵。也是说

图形学-(视图变换,投影变换)
图形学-(视图变换,投影变换)
以上就是我们得到的视图变换矩阵。

2.投影变换

投影变换(Projection transformation)是把 3 维模型投影到 2 维平面的变换。投影变换分为正交投影(Orthographic projection)以及透视投影(Perspective projection)。正交投影中,投影后原本平行的线保持平行关系但是透视投影中平行的线在投影后不一定能保持平行关系,会相交到某一点上(这也就是近大远小现象)
图形学-(视图变换,投影变换)

2.1 正交投影

正交投影将相机放在原点上,拍摄方向是-z 轴方向,向上方向是 y 轴方向。只需要去掉 z 轴后,xy 平面
上的图像就是投影结果。为了能够正交投影,我们会把所有模型移动到 [−1, 1]3 的区间范围内。
在空间中描述一个立方体(立方体中包含了所有需要绘制的模型),将立方体变换到 [−1, 1]3 的区间范
围内
图形学-(视图变换,投影变换)
定义空间中的立方体的左右在 x 轴的坐标,上下在 y 轴的坐标,远近在 z 轴的坐标。这个立方体就可以
被描述 [𝑙, 𝑟 ] × [𝑏, 𝑡] × [𝑓 , 𝑛]。对于 z 轴来说,越远 z 值更小,越近 z 值更大。远是小于近的,保证了右手坐标系下从-z 方向看过去 z 值的规律。

将这样的立方体映射到正则/标准/规范(canonical)立方体 [−1, 1]3
变换方法是先将中心平移到原点,之后对每个边进行缩放到大小为 2。

变换矩阵为:
图形学-(视图变换,投影变换)

2.2 透视投影

透视投影(Perspective projection)是最为广泛的投影方式。透视投影满足近大远小的性质。接下来我们定义视锥。视锥就是一个透视相机渲染时能看到区域的形状,相机放在平面的中心,一个视锥包含 4 个元素:

图形学-(视图变换,投影变换)

  1. 近平面:渲染的区域里相机最近的平面;
  2. 远平面:渲染的区域里相机最远的平面;
  3. 视野(Field of view,FOV):平面顶部和底部中心到相机连线的夹角;
  4. 宽高比:平面宽度和高度之比。

从一个点射出的四棱锥定义了远和近两个平面。我们可以把远平面缩小成和近平面一样大的长方形,
这样视锥就会变成一个立方体。再做一次正交投影就可以得到最终的投影结果了。
图形学-(视图变换,投影变换)
我们需要对这些点进行变换,变换满足三个条件:

  1. 任何一个在近平面上的点不会发生变化;
  2. .远平面处的点 z 值不发生变化;

图形学-(视图变换,投影变换)
从 YZ 平面看过去,对于远平面上的点 (𝑥, 𝑦, 𝑧) 在投影变换后,根据相似三角形的性质,点的位置变为
( 𝑛𝑧𝑥,𝑛𝑧𝑦, 𝑧)。对于任意一个点点 (𝑥, 𝑦, 𝑧) 来说,变化过程为:
图形学-(视图变换,投影变换)
中间点的 z 值变化目前是不确定的。但是对于以上的变化结果我们可以得到变换矩阵的部分结果:

图形学-(视图变换,投影变换)
接下来求出未知量。对于近平面的上的点,应当满足变换:
图形学-(视图变换,投影变换)
因此可以得到方程:
图形学-(视图变换,投影变换)
𝑛2 显然和 x,y 的值没有什么关系,因此 x,y 的系数为 0。但是方程不能解出,还需要一个方程。
对于远平面,我们选择中心点,变换应当满足:
图形学-(视图变换,投影变换)
可以得到方程:
图形学-(视图变换,投影变换)
方程展开后可以得到:
图形学-(视图变换,投影变换)

解得:
图形学-(视图变换,投影变换)
因此我们就解出了变换矩阵:
图形学-(视图变换,投影变换)
图形学-(视图变换,投影变换)
图形学-(视图变换,投影变换)文章来源地址https://www.toymoban.com/news/detail-506973.html

到了这里,关于图形学-(视图变换,投影变换)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Games101笔记-模型、视图、投影

    在旋转点,旋转矩阵的逆等于矩阵的转置 左边3*3是线性变换,右边一列是仿射变换(平移) 先线性再平移 x叉乘y得到z,y叉乘z得到x, xyz给任何两个可以得到另一个 (循环对称) z叉乘x得到y,所以y是反的 任意绕3d轴旋转可以分解为绕x,y,z轴旋转。三个角为欧拉角 罗德里格斯旋

    2024年03月19日
    浏览(39)
  • 计算机图形学-正交投影与透视投影

    本专栏内容整理了GAMES101的计算机图形学课程的主要内容,作为我学习计算机图形学的一份复习备份或叫做笔记。内容中如有错误,或有其他建议,欢迎大家指出。 附上GAMES101计算机图形学课程: GAMES101: 现代计算机图形学入门正在上传…重新上传取消https://sites.cs.ucsb.edu/~li

    2023年04月08日
    浏览(25)
  • Arcgis 定义投影、投影变换、导出栅格为tif、矢量转tif

    目录 一、Arcgis 定义投影 1、定义投影 2、设置平移 二、投影变换 1、栅格数据的投影变换 2、矢量数据的投影变换

    2024年04月25日
    浏览(28)
  • (一)ArcGIS空间数据的转换与处理——投影变换

    原始数据往往由于在数据结构、数据组织、数据表达等方面与用户需求不一致而要进行转换与处理。本节主要介绍 ArGIS 中数据的投影变换内容。 由于数据源的多样性,当数据的空间参考系统 (坐标系统、投影方式) 与需求不一致时,就需要对数据进行投影变换。同样,在完成

    2024年02月04日
    浏览(37)
  • 正交投影的矩阵(基变换与过渡矩阵的例子)

    在 n n n 维欧几里得空间 V V V 中,有子空间 W W W . 如果用自然基 ( e i ) 1 ≤ i ≤ n (mathbf{e}_i)_{1leq i leq n} ( e i ​ ) 1 ≤ i ≤ n ​ ,设 W = s p a n ( w 1 , … , w d )    ( 0 d n ) W=mathrm{span}(w_1, ldots, w_d); (0 d n) W = span ( w 1 ​ , … , w d ​ ) ( 0 d n ) . 将这个基作Schmidt正交化(并单位化

    2024年04月13日
    浏览(29)
  • 【Overload游戏引擎细节分析】视图投影矩阵计算与摄像机

    本文只罗列公式,不做具体的推导。 OpenGL本身没有摄像机(Camera)的概念,但我们为了产品上的需求与编程上的方便,一般会抽象一个摄像机组件。摄像机类似于人眼,可以建立一个本地坐标系。相机的位置是坐标原点,摄像机的朝向Forward是摄像机看的方向,再给定向上的Up轴

    2024年02月07日
    浏览(35)
  • 《数字图像处理-OpenCV/Python》连载(44)图像的投影变换

    本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 几何变换分为等距变换、相似变换、仿射变换和投影变换,是指对图像的位置、大小、形状和投影进行变换,将图像从原始平面投影到新的视平面。OpenCV图像的几

    2024年02月04日
    浏览(50)
  • 用纯C语言实现3D空间中的点坐标转化为屏幕二维点坐标,包含主视图、侧视图、俯视图、正等轴投影

    要实现3D空间中的点坐标转换为屏幕二维点坐标,需要进行透视变换和投影变换。以下是一些基本的思路和示例代码,可以用于实现主视图、侧视图、俯视图、正等轴投影。 1. 主视图投影 主视图投影是指以一个点作为视点,从一个方向观察物体,投影到一个平面上。通常情况

    2024年02月04日
    浏览(39)
  • 三维变换矩阵实战——三维点云的旋转、缩放、镜像、错切、平移、正交投影

    旋转矩阵:右边矩阵是点云的原始坐标,左边的是旋转矩阵     可视化:绕x轴旋转90度 代码: 旋转矩阵:    可视化:绕y轴旋转180度 代码: 旋转矩阵:    可视化:绕z轴旋转90度 代码: 旋转矩阵:  线绕哪个轴转,xyz矩阵就和哪和轴的旋转矩阵先计算      可视化:先

    2024年02月04日
    浏览(69)
  • 【计算机图形学】图形变换(平移变换、比例变换、旋转变换、对称变换、错切变换、复合变换)

    一 实验目的 编写图形各种变换的算法 二 实验内容 1 :自行设计基本图案,完成1-5种简单变换 实验结果如下图所示: 图形初始化: 第一次点击左键,实现平移变换:     第二次点击左键,实现比例变换(同时伴有平移变换):   第三次点击左键,实现对称变换(以平行

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包