第5章视图及3D显示祥解.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章视图及3D显示祥解.ppt

OpenGL透视矩阵 在glFrustum中的规范化需要进行一个初 始剪切变换,从而形成一个视景棱台,接 着进行放缩变换,得到规范后的透视视景 体。最后,透视矩阵导致只需要最后的正 交变换: P = NSH 投影矩阵 为何采取这种方法? 规范化使得只需要一个流水线体系就可以 进行透视投影和正交投影 ?? 尽可能位于四维齐次空间中,以便保持隐 藏面消除和明暗处理所需要的三维信息 ???? 简化了裁剪的操作 透视方程 考虑顶部与侧边视图 齐次坐标形式 p = Mq 透视除法 如果w ≠ 1, 那么必须从齐次坐标中除以w而得到所表示的点 ?? 这就是透视除法,结果为 上述方程称为透视方程 ???? 后面会用OpenGL函数考虑相应的裁剪体 透视变换 透视除法是非线性的,导致非均匀缩短 ? 离COP远的对象投影后尺寸缩短得比离COP近 的对象大 ?? 透视变换是保直线的,但不是仿射变换 ???? 透视变换是不可逆的,因为沿一条投影直 线上的所有点投影后的结果相同 投影流水线 在模型-视图矩阵后应用4x4的投影矩阵实现简 单的投影,但在最后需要进行透视除法 ?? 透视除法可以成为流水线的一部分 视角(angle of view) 视景体 若胶卷是矩形的,那么由视角张成一个半其顶点就是COP无穷的棱台,这称为视景体? 但实际的视景体通有前后裁剪面 ? 不在视景体内的物体被裁剪掉 四棱体(frustum) 在绝大多数API中通过定义投影确定裁剪参数 ?? 通过指定前后裁剪面以及视角可以确定一个四 棱体作为视景体 ?? 在这个指定中有一个参数是固定的,即COP在 原点 ?? 可以定义四棱体的六个面差不多具有任意定向 和位置,但这样很难确定视图,而且很少需要 这种弹性 OpenGL的正交视图 glOrtho(xmin, xmax, ymin, ymax, near, far) glOrtho(left, right, bottom, top, near, far) OpenGL的透视 视野的应用 应用glFrustum有时很难得到所期望的结果 gluPerspective(fovy, aspect, near, far)可以提供更好的界面 投影矩阵 基本内容 推导出在标准OpenGL投影中所用的投影 矩阵具体表示 ?? 介绍倾斜投影 ?? 介绍投影规范化 规范化 不想为每种类型的投影设计不同的投影矩 阵,所以把所有的投影转化为具有默认视 景体的正交投影 ?? 这种策略可以使我们在流水线中应用标准 变换,并进行有效的裁剪 流水线 注释 在模型-视图变换和投影变换的过程中,我们 是一直在四维齐次坐标系中的 ? 这些变换都是非奇异的 ? 默认值为单位阵(正交视图) ?? 规范化使得不管投影的类型是什么,都是相对 于默认的简单立方体进行裁剪 ?? 投影直到最后时刻才进行 ? 从而可以尽可能的保留深度信息,这对隐藏面消除是非 常重要的 正交规范化 glOrtho(left, right, bottom, top, near, far) 规范化 ? 求出把指定裁剪体转化为默认裁剪体的变换 正交规范化矩阵 两步 把中心移到原点,对应的变换为 T(?(left+right)/2, ?(bottom+top)/2, (near+far)/2)) ? 进行放缩从而使视景体的边长为2 S(2/(left ? right), 2/(top ? bottom), 2/(near-far)) 最后的投影 令z = 0 这等价于如下的齐次坐标变换 从而在4D中一般的正交投影为P = MorthST 倾斜投影 OpenGL的投影函数不支持一般的平行投 影,例如立方体的如下图示 此时立方体好像发生了错切,然后再进行 正交投影 ?? 倾斜投影= 错切+正交投影 一般的错切 顶视图和侧视图 错切矩阵 等价性 对裁剪体的影响 投影矩阵P = STH把原来的裁剪体变换为 默认的裁剪体 简单透视 考虑简单透视:COP在原点,近裁剪面在z = -1,由平面 x = ± z, y = ±z确定的有90度的视野 透视矩阵 齐次坐标下的简单投影矩阵为 注意这个矩阵与远裁剪面无关 推广 α与β的选取 如果取 α = (near + far)/(far – near) β = 2 near*far/(near – far) 那么近平面映射到z = -1 远平面映射到z = 1 各侧边映射到 x = ±1, y = ±1 规范变换 规范化与隐藏面消除 虽然这里选择的透视矩阵形式上看起来有点儿 任意,但这种选择保证如果在原来的裁剪体内 z1z2, 那么变换后的点满足z1’z2’ ?? 因此如果首先应用规范变化,隐藏面消除算法 有效 ?? 然而,公式z’ = -(α+β/z)意味着由于规范化导致 距离发生

文档评论(0)

四娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档