- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3d图形程序,就一定会做坐标变换。而谈到坐标变换,就不得不提起投影变换,因为它是所有变换中最不容易弄懂的。但有趣的是,各种关于透视变换的文档却依然是简之又简,甚至还有前后矛盾的地方。看来如此这般光景,想要弄清楚它,非得自己动手不可了。所以在下面的文章里,作者尝试推导一遍这个难缠的透视变换,然后把它套用到 DX和 PS2lib 的实例中去。
一般概念
所谓透视投影变换,就是view 空间到project 空间的带透视性质的坐标变换步骤(这两
个空间的定义可以参考其他文档和书籍)。我们首先来考虑它应该具有那些变换性质。很显然,它至少要保证我们在view空间中所有处于可视范围内的点通过变换之后,统统落在project空间的可视区域内。好极了,我们就从这里着手——先来看看两个空间的可视区域。
由于是透视变换,view空间中的可见范围既是常说的视平截体(view frustum)。如图,
(图1)
它就是由前后两个截面截成的这个棱台。
从view空间的x正半轴看过去是下图这个样子。
(图2)
接下来是project空间的可视范围。这个空间应当是处于你所见到的屏幕上。实际上将屏幕表面视作project空间的xoy平面,再加一条垂直屏幕向里(或向外)的z轴(这取决于你的坐标系是左手系还是右手系),这样就构成了我们想要的坐标系。好了,现在我们可以用视口(view port)的大小来描述这个可视范围了。比如说全屏幕640*480的分辨率,原点在屏幕中心,那我们得到的可视区域为一个长方体,它如下图(a)所示。
(图3)
但是,这样会带来一些设备相关性而分散我们的注意力,所以不妨先向DirectX文档学学,将project空间的可视范围定义为x∈[-1,1], y∈[-1,1], z∈[0,1]的一个立方体 上图b 。这实际上可看作一个中间坐标系,从这个坐标系到上面我们由视口得出的坐标系,只需要对三个轴向做一些放缩和平移操作即可。另外,这个project坐标系对clip操作来说,也是比较方便的。
推导过程
先从project空间的x正半轴看看我们的变换目标。
(图4)
这个区域的上下边界为y’ ±1, 而图2中的上下边界为y ± z * tan fov/2 ,要实现图
2到图4的变换,我们有y’ y * cot fov/2 / z。这下完了,这是一个非线性变换,怎么用矩阵计算来完成呢?还好我们有w这个分量。注意到我们在做投影变换之前所进行的两次坐标变换——world变换和view变换,他们只是一系列旋转平移和缩放变换的叠加。仔细观察这些变换矩阵,你会发现它们其实不会影响向量的w分量。换句话说,只要不是故意,一个w分量等于1的向量,再来到投影变换之前他的w分量仍旧等于1。好的,接下来我们让w’ w*z, 新的w就记录下了view空间中的z值。同时在y分量上我们退而求其次,只要做到y’ y * cot fov/2 。那么,在做完线性变换之后,我们再用向量的y除以w,就得到了我们想要的最终的y值。
x分量的变换可以如法炮制,只是fov要换一换。事实上,很多用以生成投影变换矩阵的函数都使用了aspect这个参数。这个参数给出了视平截体截面的纵横比 这个比值应与view port的纵横比相等,否则变换结果会失真 。如果我们按照惯例,定义aspect size of X / size of Y。那么我们就可以继续使用同一个fov而给出x分量的变换规则:x’ x * cot fov/2 / aspect。
现在只剩下z分量了。我们所渴望的变换应将z Znear 变换到z 0,将z Zfar变换到z 1。这个很简单,但是等等,x, y最后还要除以w,你z怎能例外。既然也要除,那么z Zfar 就不能映射到z 1了。唔,先映射到z Zfar试试。于是,有z’ Zfar* z-Znear / Zfar – Znear 。接下来,看看z’/z的性质。令f z z’/z Zfar* z-Znear /(z* Zfar – Znear )。
则f’ z Zfar * Znear / z^2 * Zfar –Znear , 显而易见f’ z 0。所以除了z 0是一个奇点,函数f z 是一个单调增的函数。因此,当Znear≤z≤Zfar时,f Znear ≤f z ≤f Zfar ,
即0≤f z ≤1。
至此,我们可以给出投影变换的表达式了。
x’ x*cot fov/2 /aspect
y’ y*cot fov/2
z’ z*Zfar / Zfar – Znear – Zfar*Znear / Zfar – Znear
w’ z
以矩阵表示,则
您可能关注的文档
- 三角网格模型数据分块算法.pdf
- 三角与向量综合问题.ppt
- 三角域上Said—Ball曲面与Bézier曲面之间一种新转换算法.pdf
- 三阶色散和自频移对二阶孤子相互作用影响的研究.doc
- 三门县某滑坡地质灾害治理施工组织设计-secret.doc
- 三通道正交完全重建滤波器组在图象处理中应用.doc
- 三维三分量CSAMT法有限元正演模拟的研究初探.pdf
- 三维微分方程滤波法及线性噪声压制.pdf
- 三峡大坝混凝土快速施工方案及工艺的研究.doc
- 三峡工程三期大坝混凝土防裂施工技术及工艺.pdf
- 小学语文下册主题写作技巧.docx
- 江西制造职业技术学院《现代信号处理专题》2023-2024学年第一学期期末试卷.doc
- 2025年江苏徐州丰县面向2025年毕业生招考聘用教师195人笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 适合情侣约会的浪漫场所--范文.docx
- 高一上学期信息技术教学工作计划.docx
- 2025年江苏徐州工业职业技术学院招考聘用专任教师和专职辅导员14人笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 2025年江苏徐州医科大学通用类岗位招考聘用15人笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 你好小学幼儿园大班班本教学课程PPT课件.pptx
- 2025年“查找身边安全隐患”安全知识竞赛题测试卷附答案.docx
- 循环系统护理课件.pptx
文档评论(0)