当前位置: 首页 > news >正文

宁波品牌网站制作哪家好家居网站建设定位分析论文

宁波品牌网站制作哪家好,家居网站建设定位分析论文,wordpress svg logo,短视频获客一、问题提出 在GAMES101-Lecture4 Transformation Matrices 一节中,闫老师介绍了正交投影和透视投影。 在讲透视投影变换矩阵 M p e r s p → o r t h o M_{persp→ortho} Mpersp→ortho​时,同学们对矩阵中的z分量是变化的还是不变的有很多争论。即下…

一、问题提出

在GAMES101-Lecture4 Transformation Matrices 一节中,闫老师介绍了正交投影透视投影

在讲透视投影变换矩阵 M p e r s p → o r t h o M_{persp→ortho} Mpersportho时,同学们对矩阵中的z分量是变化的还是不变的有很多争论。即下图中z分量经过投影变换后的z'底是保持不变依旧等于z,还是"unknown"大家有不同的看法。基于查阅的资料,我将在本文中谈一下自己对于这个问题的理解,并对投影变换矩阵的计算公式进行解释。
透视投影

二、投影变换

1. 正交投影 Orthographic Projection

(1). 正交投影目标:

将指定立方体内部的点映射(变换)到正则立方体(canonical cube) 内。正则立方体是一个中心点在原点,(x,y,z)三个分量都在[-1,1]范围内的正方体。
如将下图所示,左侧立方体内部的点,先经过平移(Translate),再经过放缩(Scale)变换后,即可投影到正则立方体内。
正交投影

(2). 正交投影矩阵 M o r t h o M_{ortho} Mortho

正交投影矩阵可以由平移矩阵放缩矩阵相乘得到:

在这里插入图片描述

2. 透视投影

(1). 透视投影目标:

视体内部的点映射(变换)到**正则立方体(canonical cube)**内。视体 通常是一个 方平截头体,可由fov, aspect_ratio, zNearzFar这几个参数确定。
如下图所示:
视体

(2). 透视投影步骤:

前面已经简单介绍过正交投影了,正交投影相对简单,只要进行平移+放缩两次变换即可得到。透视投影 相对复杂,
透视投影包含两步:

  1. 视体变换为立方体, First “squish” the frustum into a cuboid (n -> n, f -> f) ( M p e r s p → o r t h o M{persp→ortho} Mpersportho) ;
  2. 进行正交投影,将立方体变换到正则立方体,Do orthographic projection ( M o r t h o M_{ortho} Mortho);

为什么不直接使用平移+放缩+非仿射变换 求得透视投影矩阵,而是需要先将透视投影转为立方体,再进行一次正交投影这两步(这两步称之为透视规范化)?
这是因为:

  • 规范化使得只需要一个流水线体系就可以进行透视投影正交投影
  • 尽可能位于四维齐次空间中,以便保持隐藏面消除和明暗处理所需要的三维信息。透视投影的第一步将视体转到立方体依旧保持各点的z分量信息,便于之后进行深度处理等操作;
  • 简化了裁剪的操作。第一步转为立方体后,由于立方体的边都与世界坐标系的x,y,z轴平行,因此可以方便地裁剪掉立方体外的点;
(3). 透视投影矩阵:

在计算透视投影矩阵之前需要明确一点:目标投影矩阵M必须是一个固定的矩阵,针对视体内的任何一点,都使用相同的一个矩阵,条件(1)
我们称第一步中从视体变换到立方体的矩阵 M p e r s p → o r t h o M{persp→ortho} Mpersportho透视规范化矩阵
对于空间内的点(x,y,z)(这里的x,y,z是变量,因为空间需要进行投影变换的点不只一个),其变换后的点为(x',y',z')
其中:
x ′ = n z x , y ′ = n z y , z ′ = ? x'=\frac{n}{z}x, y'=\frac{n}{z}y, z'=? x=znx,y=zny,z=?

a. 假设令z'不变:

即:
x ′ = n z x , y ′ = n z y , z ′ = z x'=\frac{n}{z}x, y'=\frac{n}{z}y, z'=z x=znx,y=zny,z=z
我们可以逆向算出对应的透视规范化矩阵 M p e r s p → o r t h o M{persp→ortho} Mpersportho
M p e r s p → o r t h o = ( n / z 0 0 0 0 n / z 0 0 0 0 1 0 0 0 0 1 ) M{persp→ortho} = \begin{pmatrix} n/z & 0 & 0 & 0 \\ 0 & n/z & 0 & 0 \\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix} Mpersportho= n/z0000n/z0000100001
矩阵中n=zNear是一个常数,然而矩阵中的z是一个变量(即n/z中的z),对于视体中的每一个不同的点,都需要一个特定的z值,这并不满足条件(1),不是我们想要的,我们想要一个固定的、不随目标点变化的矩阵。

b. 假设令z'改变:

根据a.中的分析可以得出,假如令z'=z,那么对于视体中的每个点都需要一个透视规范化矩阵M,不能满足条件(1)
因此我们需要令透视正则变换后的各点z'值发生变化,以消除透视规范化矩阵M中的变量z
一个简单的方式是,我们先假设此时不知道z'等于什么,并令x',y'和齐次坐标中的w'都乘以z。那么 透视规范化矩阵 M p e r s p → o r t h o M{persp→ortho} Mpersportho 可以写为:
M p e r s p → o r t h o = ( n 0 0 0 0 n 0 0 ? ? A B 0 0 1 0 ) M{persp→ortho} = \begin{pmatrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ ? & ? & A & B\\ 0 & 0 & 1 & 0 \end{pmatrix} Mpersportho= n0?00n?000A100B0

另外由于在投影变换后还需要进行阴影遮挡判断、隐藏面消除和明暗处理等操作,因此我们需要保证原始空间中z值小的点,在投影正则化变换后的z'值依旧小,原始空间中z值大的点,在投影正则化变换后的z'值依旧大,条件(2)
条件(2)也说明,z'只能跟原始点齐次坐标中的zw相关,跟x,y无关,因此可以得到那么透视规范化矩阵 M p e r s p → o r t h o M{persp→ortho} Mpersportho 可以写为:
M p e r s p → o r t h o = ( n 0 0 0 0 n 0 0 0 0 A B 0 0 1 0 ) M{persp→ortho} = \begin{pmatrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & A & B\\ 0 & 0 & 1 & 0 \end{pmatrix} Mpersportho= n0000n0000A100B0
除此以外,我们还需要令原来在z=zNear平面上的点,经过变换后依旧在z=zNear平面上,原来在z=zFar平面上的点依旧在z=zFar平面上。这是因为,我们需要保证 边界上的点变换后依旧在边界上条件(3)
假如不能保证满足条件(3),那么在经过投影正则化变化后,有可能原来在zFar外面的点,在变换后到了立方体内了!原本 视体 外需要被裁剪掉的点,变换到了立方体内,这可能导致裁剪错误。
因此根据条件(3),可以得到下面两个公式:
( 0 0 A B ) ∗ ( x y n 1 ) = n 2 (0\ 0\ A\ B) * \begin{pmatrix} x \\ y \\ n \\ 1 \end{pmatrix} = n^2 (0 0 A B) xyn1 =n2
同时:
( 0 0 A B ) ∗ ( x y f 1 ) = f 2 (0\ 0\ A\ B) * \begin{pmatrix} x \\ y \\ f \\ 1 \end{pmatrix} = f^2 (0 0 A B) xyf1 =f2
根据这两个公式即可求得
A = n + f , B = − n f A=n+f, B=-nf A=n+f,B=nf
这就是投影变换 M p e r s p → o r t h o M{persp→ortho} Mpersportho的由来。

3. 总结

投影变换的目标是:根据给出的 视体 参数(fov, aspect_ratio, zNear, zFar等参数),计算得到一个投影变换矩阵M,这个矩阵需要满足三个条件:

  • 条件(1),这个矩阵是唯一固定的,即这个矩阵中的元素值只跟视体相关,跟视体中点的坐标无关;
  • 条件(2),经过变换后,必须保证各个点的z值相对关系不变,即假如点az值大于点bz值,那么经过变换点az'依旧大于点b变换后的z'。那么z'不能与(x,y,z,w)中的x,y相关,只能由z,w确定;
  • 条件(3)视体边界面z=zNear平面和z=zFar平面上点的经过变换后依旧在立方体边界面上;

为了满足条件(1)z'不能等于z(除了z=zNear和z=zFar平面上的点)。
为了满足条件(2) M p e r s p → o r t h o M{persp→ortho} Mpersportho第三行 ( ? ? A B ) (?\ ?\ A\ B) (? ? A B) 前两个元素需要等于0。
为了满足条件(3) A = n + f , B = − n f A=n+f, B=-nf A=n+f,B=nf

三、参考

1.计算机图形学第六章观察-黄章进-中国科学技术大学
2.GAMES101-Lecture 4:Transformation Matrices

http://www.yayakq.cn/news/659485/

相关文章:

  • 东营做网站优化公司it公司做网站用什么软件
  • 网站设计与制作是做什么工作pytson做网站安全吗
  • 专业网站软件开发项目经理的职责
  • 石家庄网站建设与推广百度集团股份有限公司
  • 工会网站升级改造建设方案市场营销毕业后找什么工作
  • 青海做高端网站建设的公司单位网站建设意见建议
  • 网站建设的风格江苏省住房和建设部网站首页
  • 华为网站开发wordpress有哪些工具栏
  • 做电子外贸网站wordpress post grid
  • 网站uv pv做网站域名的公司
  • 杭州有哪些大数据知名企业网站seo优化有哪些
  • 个人网站模板 免费别墅设计 网站模板
  • 非交互式网站可以做商城吗农业服务网站建设方案
  • 苏州网络推广公司网站建设南京雨花台区做网站
  • 安阳网站建设报价定制小程序制作一个需要多少钱
  • 网站优化分析软件大型电子商务网站需要配服务器
  • 怎么做网站广告代理商深圳品牌建网站
  • 网站是做推广好还是优化好网页制作的开发平台
  • 广州网站制作公司多少钱wordpress头部背景
  • 万网主机 建网站四平做网站佳业
  • dedecms电影网站源码ios软件开发前景
  • 长春网站建设方案一个人可以做网站吗
  • 夹江发布app哈尔滨关键词优化软件
  • 网站建设 骏域网络建设专家广州社区门户网站建设招标公告
  • 成都住房和城乡建设局网站首页如何创建网站平台
  • 天河电子商务网站建设wordpress自己创建数据库
  • 网站建设推广兼职商城网站 报价 方案
  • 代做毕设要注册答疑网站有模板做ppt的网站有哪些
  • 重庆大坪网站建设wordpress 4.4.2 中文
  • 无锡网站开发定制开发有哪些做微场景的没费网站