<font style="line-height: 40px;" color="Purple">1. 环境贴图原理</font>
环境贴图是对周围环境的映射。
先介绍一下普通的uv贴图:给下面的茶壶表面贴上图,需要有一张图,茶壶上的每个点记录了对应在图a上的一个坐标,即uv坐标,每个顶点都有一个uv坐标,茶壶表面的其他地方就可以通过其所在三角形的顶点uv,差值计算出自己的uv坐标,并获得在图a上的颜色,最后变成图c的样子。
<center><img src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044569-77…; alt=""></center><center><font color="#9a9a9a"><i>图a</i></font></center>
<center><img width="600" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044569-77…; alt=""></center><center><font color="#9a9a9a"><i>图b</i></font></center>
<center><img width="600" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044569-77…; alt=""></center><center><font color="#9a9a9a"><i>图c</i></font></center><br>
环境贴图不使用uv坐标,它使用的是人眼和法线,类似人使用镜子,镜子里的图像就是环境贴图,它随着人眼和自己位置变化而变化。
<center><img width="600" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044569-77…; alt=""></center><center><font color="#9a9a9a"><i>图d</i></font></center><br>
假设环境贴图分布于茶壶的周围,如图c的背景天空就是它周围的环境,我们根据人眼的位置到顶点的射线可以模拟一些光线,经过表面的法线反射后到达天空中的某处,这个地方的颜色作为顶点的颜色,就实现了反射的效果。
<center><img width="600" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044569-77…; alt=""></center><center><font color="#9a9a9a"><i>图e</i></font></center><br>
这种环境贴图是通过方形贴图的6个面作为背景的,还有一种贴图,把一张图以球的形状分布到周围,原理类似,就是之前的流光贴图。
<font style="line-height: 40px;" color="Purple">2. 使用方法</font>
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
来源:<a href="https://mp.weixin.qq.com/s/gWkana-qmuY0u8BGJ0cxaA"> Fancy3D引擎</a>