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

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

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

附上GAMES101计算机图形学课程:GAMES101: 现代计算机图形学入门正在上传…重新上传取消https://sites.cs.ucsb.edu/~lingqi/teaching/games101.htmlhttps://sites.cs.ucsb.edu/~lingqi/teaching/games101.html

GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibiliGAMES101-现代计算机图形学入门-闫令琪共计23条视频,包括:Lecture 01 Overview of Computer Graphics、Lecture 02 Review of Linear Algebra、Lecture 03 Transformation等,UP主更多精彩视频,请关注UP账号。正在上传…重新上传取消https://www.bilibili.com/video/BV1X7411F744https://www.bilibili.com/video/BV1X7411F744

开始讲解前让我们先回忆下我们平时拍照的一个过程:
首先找一个地方,把所有人都集中在这个地方中。这个过程就是模型变换(改变人的位置)
然后找一个好的位置,和一个好的角度,把相机放好。这个过程就是视图变换(改变相机)
最后按下快门把相机中看到的场景投影到相片上。这就是投影变换

在图形学中,要得到一个画面跟我们平时拍照的过程是类似的。主要就是通过三个变换过程来得到要显示的画面。

视物变换

怎么做视图变换,即我们刚刚说的该如何摆放相机,
即确定:相机放置的位置(position),
和相机应该看向哪里(lookAt)。
此外,还需要定一个相机的向上方向(up),可以理解为相机是竖着拿还是横着拿。

通常,我们把相机永远放在原点上(0,0,0,)。相机沿着-z方向上看。向上方向是y。
position:(0,0,0,1);
lookAt:(0,0,-1,0);
up:(0,1,0,0)

写成矩阵形式:先平移后旋转 ==》
计算机图形学-正交投影与透视投影
平移:
计算机图形学-正交投影与透视投影
旋转:当我们要写一个由任意方向向量旋转到x轴上的矩阵会比较困难。但是我们可以利用旋转矩阵是个正交矩阵的特性。先写出由x轴旋转到原方向向量的矩阵,即是方向向量转到x轴的旋转矩阵的逆矩阵。再为原向量应用这个再去求矩阵转置即可把向量旋转到x轴上。
计算机图形学-正交投影与透视投影
应用矩阵:
计算机图形学-正交投影与透视投影
到x(1,0,0,0)T 可得到 ,把y,和-z带入可以得到t和g向量。所以这个矩阵就是相机的旋转矩阵的逆矩阵。对其转置就能得到相机的旋转矩阵:

再将相机放置好后,其他的物体与相机的相对位置发生了变化,所以我们还需要对场景中的物体做跟相机一样的变换使其相对位置和相对角度都不变。(比如我现在渲染的是一副从上向下看的图,再移动相机后,相机接收到的画面就会变成正视图,所以还需要将被观察的物体做相同的平移和旋转。之后相机接收到的画面就还是和之前的俯视图一样。注意旋转都是围绕原点旋转。)
 

投影

视图和模型变换结束后,接下来就是吧三维的场景变成观测到的二维的图像。这就是投影。
投影分为正交投影和透视投影。其中透视投影跟我们平时人眼观测到的成像差不多。正交投影就比较难以理解,其实就是不发生近大远小的变化,成像后会人类会觉得远处的东西更大。几何上来说就是,正交投影中平行的线成像后依旧平行。
计算机图形学-正交投影与透视投影
计算机图形学-正交投影与透视投影                       计算机图形学-正交投影与透视投影

正交投影(Orthographic Projection)

 在三维空间中规定可观测区域,这个区域是个立方体。需要设置它的宽度(right-left),
高度(top-bottom)和深度(near-far(看向-z所以n比f大))六个数据。在将这个立方体移动、缩小或放大到挤满X(-1~1),Y(-1~1),Z(-1~1)的立方体区域内(这里是约定俗成的做法,是为了后续一些计算)。
计算机图形学-正交投影与透视投影

 所以正交投影的变换矩阵
计算机图形学-正交投影与透视投影

透视投影(Perspective Projection)

在透视投影中会发生近大远小的情况,由近到远的平行线,看起来会在非常非常远的地方相交,该怎么处理出这种成像效果呢?这就是透视投影变换需要做的事。

首先我们观察下图中的几何体:
计算机图形学-正交投影与透视投影
这是类似自然人的视野范围,或者叫做视锥体,它有一个比较小的近平面和一个比较大的远平面,这两个平面是近似等比关系。他们的中心点的x,y坐标都是0(观察点在原点)。
计算机图形学-正交投影与透视投影
我们发现,当我们将远缩小成跟近平面一样的大小后,锥体会变成一个长方体,接下去我们只要做正交投影即可完成一个透视投影了。

锥体变换成长方体(FrustumToCuboid)Mpersp->ortho
首先我们观察在变换的过程中有以下几个特点:
1.变换后近平面的任何点都不变
2.变换后远平面的z不变(但是并不是说在近平面和远平面之间的平面z的值不会变)
3.变换后远平面的中心点不会变

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

然后由上图我们可以根据相似三角形知道,在任意z点的平面上,缩小后的平面的x和y会变成n/z倍,只剩变化后的z值我们还未可知。
由此我们可以写出矩阵运算过程如下图:
计算机图形学-正交投影与透视投影
计算机图形学-正交投影与透视投影

要求的变换矩阵只剩第三行的元素我们还不清楚了。接下来根据之前列出来的三点变换特点,我们可以对第三行的元素进行推算。
首先根据第一点,我们将近平面的点(x,y,n,1)T 带入变换矩阵运算可以知道第三行的运算如下:
计算机图形学-正交投影与透视投影

 ?x +?y +?n +? = n² ;所以可以确定n²跟x和y没有关系,也就确定了第三行前两个元素是0;我们把后两个元素标记为A,B。
计算机图形学-正交投影与透视投影

于是我们可以根据第一点列出:An + B = n²  (在近平面上的点不会变)
       根据第二点和第三点列出:An + B = f² (在远平面上的z不会变,远平面中心点(0,0,f,1)不变)
        这里采用特殊点带入的方式即可列出方程;
解方程:
计算机图形学-正交投影与透视投影

于是我们得到最终的锥体变换成长方体的变换矩阵:Mpersp->ortho
计算机图形学-正交投影与透视投影


最后透视投影的变换矩阵:Mpersp =  Mpersp->ortho

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

最后的最后,思考一个问题:在近平面和远平面之间的平面经过Mpersp->ortho变换后z的值会如何变化?变大?变小?不变?

思路:找到图中铁路的中心点,可以看到在图片的上方木枕越来越多,铁路的中心点则肯定在上部分,也就是越来越远的地方,所以可以看出,中间的z会变小(看向的是-z)。或者说会离观察点越来越远。或者使用-1和-3的中间点-2应用Mpersp->ortho矩阵运算也会得到z变小的结果(带入其他特殊点运算也可,0~-1会不一样)。

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

下一节:计算机图形学-光栅化(三角形的离散化)_苏剑涛@XM的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-401597.html

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

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

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

相关文章

  • 第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵

    第一章 OpenGL ES 基础-屏幕、纹理、顶点坐标 第二章 OpenGL ES 基础-GLSL语法简单总结 第三章 OpenGL ES 基础-GLSL渲染纹理 第四章 OpenGL ES 基础-位移、缩放、旋转原理 第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵 模型都是3D的,但屏幕是2D的。如何将3D空间投影到2D平面,还能保

    2024年03月09日
    浏览(44)
  • 深度学习·理论篇(2023版)·第002篇深度学习和计算机视觉中的基础数学知识01:线性变换的定义+基于角度的线性变换案例(坐标变换)+点积和投影+矩阵乘法的几何意义+图形化精讲

    💕 恭喜本博客浏览量达到两百万,CSDN内容合伙人,CSDN人工智能领域实力新星~ 🧡 本文章为2021版本迭代更新版本,在结合有效知识的基础上对文章进行合理的增加,使得整个文章时刻顺应时代需要 🧡 本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理

    2023年04月08日
    浏览(50)
  • 【计算机图形学】二维图形裁剪算法

    Cohen-Sutherland算法 Cohen-Sutherland是最早最流行的算法。 核心思想:通过 编码测试 来减少计算交点的次数。(编码算法) 1. 区域码: 线段端点以区域赋值以四位二进制码。 编码顺序:四位从右到左分别为:左边界、右边界、下边界、上边界。 编码值:落在相应位置为1,否则

    2024年02月02日
    浏览(58)
  • 初识计算机图形学

    笔记来源:【老奇】阴差阳错 撼动世界的游戏引擎 详见本人博客: 1.Transformation 2.梳理从MVP变换到光栅化的过程 MVP变换将空间中3D物体投影到2D屏幕 详见本人博客: 1.Rasterization(光栅化) 2.梳理从MVP变换到光栅化的过程 场景是一个个由三角面组成的模型 将模型投射到像素就

    2024年01月21日
    浏览(50)
  • 计算机图形学——大作业

    绘制一个简单的三维场景,可以是室内:卧室,办公室,教室,也可以是室外:运动场,公园等,加上光照效果,简单的纹理映射,透视投影;不能过于简单;可以加动画、鼠标和键盘交互。     上交材料: project和word文档(具体内容展示,思路和心得) 首先初始化窗口,

    2024年02月11日
    浏览(48)
  • 计算机图形与图像技术

    可以使用Python、Java等语言。 下图中,图中各事物比例失调 如何使用代码去掉某个人(不允许使用抠图工具)?         像素(Pixel)是“图像元素”的缩写, 指的是图像的最小单位 。 它是构成数码图像或屏幕显示图像的基本单元,代表了图像中的一个小点或一个小方块

    2024年02月07日
    浏览(55)
  • 图形学、02 推导证明 | 任意一点经过透视投影后 z 坐标相对于之前有什么变化

    齐次坐标知识点: (begin{bmatrix} x \\\\ y \\\\ z \\\\ 1 \\\\end{bmatrix} Rightarrowbegin{bmatrix} nx \\\\ ny \\\\ nz \\\\ n \\\\end{bmatrix}) 两个都表示同一个点 透视投影:先将远截面按一定规则缩放到跟近截面一样大,然后再正交投影 缩放规则: 远截面 缩放后 (z) 不变,缩放过后大小同近截面相同。 截

    2024年02月08日
    浏览(38)
  • 计算机图形学 期末复习笔记

    目录 第一章-导论 1. 计算机图形学的定义 2. 计算机图形学的应用领域 2.1 计算机图形学与其他学科的关系 3. 图形显示器的发展及其工作原理 3.1 阴极射线管(CRT) 3.2 随机扫描显示器 3.3 直视存储管显示器 3.4 光栅扫描显示器 4. 图形软件标准的形成 5. 三维图形渲染管线 第二章

    2024年02月12日
    浏览(43)
  • 计算机图形学(三) -- 3D 变换

    同样引入齐次坐标: 3D 点 = ( x , y , z , 1 ) T (x, y, z, 1)^T ( x , y , z , 1 ) T 3D 向量 = ( x , y , z , 0 ) T (x, y, z, 0)^T ( x , y , z , 0 ) T 通常, ( x , y , z , w ) (x, y, z, w) ( x , y , z , w ) (w != 0) 表示一个坐标为 ( x / w , y / w , z / w ) (x/w, y/w, z/w) ( x / w , y / w , z / w ) 的 3D 点 用一个 4x4 的矩阵来表示

    2024年02月08日
    浏览(39)
  • 【计算机图形学01】坐标变换

             将坐标变换为标准化设备坐标,接着再转化为屏幕坐标的过程通常是分步进行的,也就是类似于流水线那样子。在流水线中,物体的顶点在最终转化为屏幕坐标之前还会被变换到多个坐标系统(Coordinate System)。将物体的坐标变换到几个 过渡 坐标系(Intermediate Coor

    2024年02月10日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包