Skip to content

SimpleParallax

238字小于1分钟

2022-07-17

背景

某项目的美术提过一个“借鉴”某主流FPS游戏的皮肤材质需求:

Reference

除去云纹流动外,还有视差的表现。这里简单分析一下。

原理

Theory

图中,相机所在的位置A,目标像素点B,蓝线为B所在的切平面,绿线为虚拟的背景平面。从A到B的射线与绿线交于C点,也就是背景纹理的实际采样点。D点是B点沿法线在绿线上的投影,因此要求得C点坐标,只需求CD的距离Offset。这个,根据相似三角形很容易得到:

Offset=BDAEBE Offset = \frac{|BD|}{|AE|}\cdot|BE|

这里有:

BD=H |BD|=H

BE=ABsinθ |BE|=|AB|sin\theta

AE=ABcosθ |AE|=|AB|cos\theta

cosθ=NV cos\theta={N}\cdot{V}

然后从二维推广到三维情况,在X和Y轴向分离参数即可。

实现

Nodes

效果

Show

贡献者: Astroite