« Shadow Volume 阴影锥技术之探ⅥOpenGL常用命令备忘录(Part A) »

再弹OpenGL矩阵——到另一个空间去

之前曾经兴致勃勃地谈了一下我对OpenGL渲染流水线中常规矩阵变换,以及变换所经过的空间的理解。本篇可以说是它们的续篇,谈论一下“OpenGL世界”中的另一个空间,或者说,另一些空间——我们所创造的空间。——ZwqXin.com  前文见:
乱弹OpenGL中的矩阵变换(上)
乱弹OpenGL中的矩阵变换(下)

本文来源于 ZwqXin (http://www.zwqxin.com/), 转载请注明
      原文地址:http://www.zwqxin.com/archives/opengl/more-about-matrix-opengl.html

在之前,我总会被一些文章里的说话搞得很糊涂很糊涂,譬如作者说“把物体转移到一个XX空间下”“在OO空间创造一些东西”,作者代码上写“WorldToShadow”之类的,我那一个汗啊,把新空间的坐标系原点放在阴影物中心还算了,把Y轴指向阴影锥中轴线,把锥体切面当XZ平面也算了,可其他在场的物件可怎么把“坐标”转换到此空间(坐标系)下呀!这样的转换矩阵容易求么我....(以上为针对橙书13.3的怨念)但是,今天看shadow-map算法资料的时候对这样的问题有了新的体会了。

shadow-map我还没开始实现,但讲讲其中一个步骤吧:把眼睛放在光源位置上,视线往原点看,然后把看到的场面的深度信息保存到一块纹理,留作查询用。要说保存前的“动作”还算简单,关键点可在于这句“留作查询用”,这可不像在讲FBO那时候一样把纹理拿来贴图,而是把纹理里的深度信息提取出来哦。好了,具体原因就不在这里讲了,我把此例子放在这里讲是因为它与本主题相关——需要创造新的空间。

想想,“眼睛放光源,视线朝原点”跟我们平时放置相机有什么不同?没有吧,明显就是一个glLookat函数的特化版本,也就是说其实也就是从世界空间经过视图变换来到一个视图空间——一模一样。好了,再投影裁减归一而到达裁减空间(屏幕空间未去处深度时的叫法)。只是接下来做什么呢?是要到一个名为“纹理空间”的地方!你知道,在屏幕空间下物体,场景将被“压”成一个平面——在该帧下把它“截屏”放纹理至少可有两种用途:1.把它当“真正的纹理”贴在某物体(譬如之前贴在一个满屏矩形)上,只要给出与纹理那四个角的坐标相应的物体顶点就好;2.保存到纹理之后还要拿出来向里面“查询”,差不多可以这样举个例子:原来在世界空间中坐标为(1,1,1)的那个顶点,现在在这张纹理(纹理空间)上的纹理坐标是什么呢?

呵呵,问题来了。是什么呢?你怎么知道它是什么呢?那顶点(在世界空间下)的坐标经过视图变换又经过投影变换“投影裁减归一”,怎么知道它变哪样子哦!要准确查找还得偏移呢(见下下篇)!确实,那我们就跟着这步骤一步一步来吧。这张图给了我一丝顿悟(来源paulsprojects.net):
Coordinate spaces

(from paulsproject.net)

顿悟一,我们假如要到达图中那个“Light's Clip Space”(也就是上面说到的光源视觉下那个裁减空间),不要被我们平时眼睛透过相机所看到空间(Camera's Eye Space)所迷惑,不要从去这里思考怎么去,而要回到最初没有相机的地方——模型空间去思考:要到达Light's Clip Space,同样需要先到世界空间(因为光源是在世界空间定义的,当然要来这里找它的位置啦),然后得像上面所说步骤一样,经过新版本的视图变换到“Light's Clip Space”,再经新版本投影变换到“Light's Clip Space”。只要按照“各空间内某顶点‘位置’(本地坐标)唯一,坐标变化”的准确关联到达这里,之后再按照另一个关联,经过某变换矩阵到达纹理空间(Texture Space),不就找到与该顶点对应的那个“在纹理空间的坐标”(纹理坐标)咯?

顿悟二,今后碰到“把物体转移到一个XX空间下”“在OO空间创造一些东西”“WorldToShadow”之类的叙述(通常作者们也是在世界空间里跟我们说话的),回想一下这里:是不是也可比拟作“把相机放到哪里哪里(新空间原点),视线朝向哪里哪里(如新空间Z轴)?恩,“到OpenGL世界的新空间”的思考的方法!

“怎样关联,通过怎样的矩阵变换”,关乎到shadow-map算法(或者说,Decal...)我想留到后面的文章再说。这里讲述的是:思考怎样到另一个空间去。开拓。

本文来源于 ZwqXin (http://www.zwqxin.com/), 转载请注明
      原文地址:http://www.zwqxin.com/archives/opengl/more-about-matrix-opengl.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

IE下本页面显示有问题?

→点击地址栏右侧【兼容视图】←

日历

Search

网站分类

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 2008-2013 ZwqXin. All Rights Reserved. Theme edited from ipati.