一个交互性的欺骗性瓶装液体材质,能动态响应瓶子运动,模拟液体的倾斜与波动,同时展现真实感的折射和反射效果。
波动、波浪与裁剪
- 倾斜与波动:顶点围绕液体中心的 x 和 z 轴旋转,方向向量调整动态模拟液体的倾斜与晃动效果。
- 波浪:通过对波动调整后的方向向量应用正弦函数,生成相互交叠的波浪模式。
- 裁剪:使用Step节点将单位方向向量的y分量与从0~1映射到的-1~1的液面高度参数进行比较,通过alpha裁剪呈现预期的液体液面高度。
侧表面
- 折射:通过屏幕空间采样结合高斯模糊实现真实感折射效果。
- 视差效果:通过计算虚拟折射方向的UV偏移,模拟液体内漂浮粒子的深度效果,增强真实感。
- 菲涅耳:叠加一层菲涅耳边缘颜色。
上表面 (主要挑战)
- 表面投影:根据晃动倾斜角度与液面高度计算,将背面顶点投影到液体表面。
- 法线扰动:通过波浪计算生成的法线变化,增强液面动态效果。
- 漂浮粒子:使用扰动的UV采样贴图模拟随液面起伏的粒子。
- 反射:根据法线变化,用反射探针捕捉动态反射效果,并通过脚本实时更新探针位置与液体位移同步。
Output Switching
- 使用Switch by Face节点切换侧表面和上表面效果输出,并用alpha裁剪液面高度。