【UE4 009】江河海洋水体材质

举报
Dummy 发表于 2021/11/19 01:25:00 2021/11/19
【摘要】 使用方法较为简单,作者已经将大部分重要参数可视化,直接在Detail面板中修改数值即可。   例如Heightmap栏中的参数:Scale决定海浪的范围大小,Speed决定流速,Displacement决定水量高度。 实现原理及方法 在计算机图形学中,流体仿真的其中一种做法是基于网格绘制,通过物理模拟(波动方...

使用方法较为简单,作者已经将大部分重要参数可视化,直接在Detail面板中修改数值即可。

 

例如Heightmap栏中的参数:Scale决定海浪的范围大小,Speed决定流速,Displacement决定水量高度。


实现原理及方法

在计算机图形学中,流体仿真的其中一种做法是基于网格绘制,通过物理模拟(波动方程)来计算网格点位置,达到动态效果。此项目将这种思路简化,根据坐标计算每个点的位置及其渲染所需的参数。

此项目通过蓝图实现,较为重要的资源如下:

 

BP_Ocean类蓝图:用于初始化参数,并实例化材质。

  • MPC_Ocean材质参数集:保存渲染所需的参数,供多个材质使用。
  • MF_Gerstner_Wave材质函数:根据Gerstner Wave计算公式,计算偏移值和法线,用于模拟出水波尖锐的波峰效果。

     


 

 

  • MF_Gerstner_Wave_Set材质函数:根据MF_Gerstner_Wave材质函数传入不同的数值创造出8中不同的Gerstner Wave波形。

  • MF_Pannner材质函数:用于计算产生一个位移向量,模拟流动。

  • SSS材质函数:用于计算产生一个向量,模拟次表面散射效果。

  • Motion_4WayChaosShared材质函数:用于产生一个混合的材质,模拟海面气泡。

  • Motion_4WayChaos_NormalShared材质函数:用于产生一个混合的法线,用来做线性插值,参与颜色的计算。

不同的材质采用根据需要输入不同的参数,选择材质函数进行计算得到相应的功能。

例如M_Ocean材质的实现:

步骤一:使用Motion_4WayChaos_NormalShared产生两种法线向量:Medium Wave Normal与Detail Wave Normal。

步骤二:使用MF_Gerstner_Wave_Set得到Gerstner Wave Normal与Gerstne Wave Displacement。

 

 

步骤三:将三种法线经过运算后作为参数赋予SSS材质函数得到次表面反射效果。

步骤四:依据世界坐标、摄影机位置以及一些自定义参数进行透明度计算。

 

步骤五:依据次表面反射效果、透明度、海洋自定义基础颜色、自定义折射率等参数进行计算得出当前位置颜色。根据此像素与其后像素之间的距离,在基础颜色与场景颜色之间进行插值。

步骤六:使用此颜色,添加泡沫效果、进行Cubemap Reflection 与Fresnel Reflection计算,得到的颜色作为材质的基础颜色。

 

步骤七:材质的金属度、高光度、多边形细分乘数均为自定义变量。

 

步骤八:自定义Roughness、DepthTest与粗糙度纹理进过计算进行插值得到材质粗糙度。

文章来源: blog.csdn.net,作者:呦呦鹿鸣.,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/zhang1461376499/article/details/116448580

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。