某项目的美术提过一个“借鉴”某主流FPS游戏的皮肤材质需求:
除去云纹流动外,还有视差的表现。这里简单分析一下。
图中,相机所在的位置A,目标像素点B,蓝线为B所在的切平面,绿线为虚拟的背景平面。从A到B的射线与绿线交于C点,也就是背景纹理的实际采样点。D点是B点沿法线在绿线上的投影,因此要求得C点坐标,只需求CD的距离Offset。这个,根据相似三角形很容易得到:
Offset=∣AE∣∣BD∣⋅∣BE∣
这里有:
∣BD∣=H
∣BE∣=∣AB∣sinθ
∣AE∣=∣AB∣cosθ
cosθ=N⋅V
然后从二维推广到三维情况,在X和Y轴向分离参数即可。