Unity矩阵说明

来源:互联网 发布:两张表的数据对比分析 编辑:程序博客网 时间:2024/06/17 17:43

      在游戏开发中,有些高级话题往往需要和矩阵扯上关系,例如阴影,迷雾,高级shader,发射等。这里简单说明下:

      1.矩阵虽然可能确实非常复杂,但对于学习应用的人来说,大可以把它理解成和加减乘除一样的一种运算,只不过它专门用于坐标转化。例如4*4矩阵,可以表达任何

三维空间中的旋转平移缩放。而Uniyt中的四元数,其实也是类似的功能,只不过简化了运算。

    

如果觉得看不懂,那就不要管了。反正就是那么回事吧。

        2.然后理解下空间的概念。首先是世界空间,这个很简单,就是你所在的这个大世界的空间,有一个坐标原点。然后就是视图空间,或者叫观察空间,就是以某一个人或者视点作为原点的空间。比如摄像头空间,其实应该就是视图空间。那么这个用来干嘛的呢?假设你是一个太阳,那么你照射物体,会有阴影,那么这个时候,以太阳作为原点的空间,进行各种计算是不是会方便些呢?答案是肯定的。所以你会发现很多时候,都会计算某一个视点的视图空间。

        视图空间的推导过程俺就不多说了,有兴趣的自己去看,http://www.cnblogs.com/graphics/archive/2012/07/12/2476413.html,总之就是你可以计算出一个矩阵,将世界坐标转成视图空间坐标。摄像头的世界坐标可以是各种各样,但视图空间里它就是原点。

        转化过程的物理意义就是:将摄像头放到原点,同时将转向调整成和世界坐标的朝向一致。

        3.有了这个矩阵后,我们就可以将世界坐标变成视图坐标了,还没结束呢,因为我们平时看的是在屏幕上啊,实际上是一个2d坐标系,那么怎么把3d坐标变成2d呢,这个就相当于投影,,我们需要来看一个新概念,叫投影矩阵。它的作用就是将3d坐标投射到屏幕上。投影分为两种,第一种正交投影,做法很简单,将z轴坐标改成视点原点即可。第二种透视投影,更接近人眼,具体推导过程有兴趣自己去看哈。http://blog.csdn.net/zhanghua1816/article/details/23121735。

    _Projector maps the x and y axis of the projector's clip space to u and v coordinates that are typically used for sampling a radial falloff texture.
_ProjectorClip maps the z axis of the projector's view space to a u coordinate (possibly duplicating it in v) that can be used to sample a ramp texture that defines the projector falloff with distance. The value of u will be 0 at the projector near plane and 1 at the projector far plane.

_Projector是将x,y从Project的裁剪空间映射到uv空间。所为裁剪空间,就是经过投影之后的平面空间。

   ProjectorClip则是将Project的视图空间转化到一张贴图中,表示该点距离Project的长度。


0 0
原创粉丝点击