科普:环境贴图原理及使用方法

1. 环境贴图原理

环境贴图是对周围环境的映射。

先介绍一下普通的uv贴图:给下面的茶壶表面贴上图,需要有一张图,茶壶上的每个点记录了对应在图a上的一个坐标,即uv坐标,每个顶点都有一个uv坐标,茶壶表面的其他地方就可以通过其所在三角形的顶点uv,差值计算出自己的uv坐标,并获得在图a上的颜色,最后变成图c的样子。

图a

图b

图c

环境贴图不使用uv坐标,它使用的是人眼和法线,类似人使用镜子,镜子里的图像就是环境贴图,它随着人眼和自己位置变化而变化。

图d

假设环境贴图分布于茶壶的周围,如图c的背景天空就是它周围的环境,我们根据人眼的位置到顶点的射线可以模拟一些光线,经过表面的法线反射后到达天空中的某处,这个地方的颜色作为顶点的颜色,就实现了反射的效果。

图e

这种环境贴图是通过方形贴图的6个面作为背景的,还有一种贴图,把一张图以球的形状分布到周围,原理类似,就是之前的流光贴图。

2. 使用方法

a. 创建

球形贴图:img = _Image.new('1.bmp')

方形贴图:img = _Image.new('X+.bmp|X-.bmp|Y+.bmp|Y-.bmp|Z+.bmp|Z-.bmp')

b. 设置

Mesh:setEnvironmentMap(img) 或者mesh.mtl. environmentMap = img

来源: Fancy3D引擎