目录
一、立方体贴图
立方体贴图即 Cube Map
1、基础理论
立方体纹理(Cubemap)是环境映射(Environment Mapping)一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以模拟反射周围环境的效果。比如金属、瓷器、塑料等带有反射特征的材质。 立方体贴图一共包含了6张图,这些图像对应了立方体的6个面。立方体的每个面表示沿着世界空间下的轴向(上、下、左、右、前、后)观察所得的图像。
立方体贴图中包含的6张图(图1)
和其它二维纹理坐标不同,对立方体纹理采样需要一个三维的纹理坐标(就是说采样立方体纹理的uv是一个三维的向量)。这个三维纹理坐标表示了在世界空间下的一个3D方向。这个方向矢量从立方体的中心出发,让它向外延申时会与立方体的6个纹理之一发生相交,而采样得到的结果就是由该交点计算而来。如下图所示给出了使用方向矢量对立方体纹理采样的过程。
对立方体贴图的采样(图2)
使用立方体贴图的优势是,实现简单快速,而得到的效果也比较好。它的缺点是当场景中引入了新的物体、光源、物体发生移动,我们就需要重新生成立方体贴图。它在实时渲染中有很多应用,最常见的就是用于天空盒子及环境映射。
创建立方体贴图有三种方法:第一种方法是直接由一些特殊布局的纹理创建;第二种方法是手动创建一个Cubemap资源,再把6张图赋给它;第三种方法是由脚本生成。
这篇文章主要介绍的就是第一种方法。第一种方法需要我们提供一张具有特殊布局的纹理,例如类似立方体展开图的交叉布局、全景布局等。
立方体贴图不同的排版形式(图3)
Unity中的设置:把立方体纹理贴图的Texture Shape设置为cube即可。
cubemap纹理贴图在unity中的设置(图4)
光照框架:直接光漫反射+直接光镜面反射+间接光漫反射+间接光镜面反射