UE5 体积云

发布时间 2023-09-01 01:27:18作者: 爱莉希雅

何为体积云?

  • 体积云是一个基于物理的云渲染系统,该系统使用一种材质驱动的方式,让美术师和设计师可以自由地创建它们所需要的的任意类型的云
  • 云渲染系统处理动态时间设置,使用实时捕获Sky AtmosphereSky Light进行补充
  • 云渲染系统提供可伸缩的、可由美术定义的、可适用于使用地面视角、飞行及地面到外太空过渡的项目

原理

  • 光线打进云中会在云中进行散射,这个散射可能进行多次。因此我们看到的云的颜色可能各个部分都是不同的,所以需要对其进行计算

  • 大致计算流程如下

    • 这里先以其中一条光线为例,该光线打中云中一点(图中的白色点)
      image-20230831160805884
    • 为了计算该路径的光强,需要向光源投射另一条光线,计算到达云边所需要的步进,根据步进数求得该点的光线强度。再计算该路径上的所有的白色点,最后将他们累加,所得值即为该路径上的云层到人眼的光线强度
      image-20230831162057034
    • 最后从观察点投射多个光线
      image-20230831163239350
  • UE的体积云

    UE的体积云类似一个围绕着大气的Raymarching Shader Object,体积纹理通过raymarching生成云,而云的显现由mask纹理控制
    image-20230831164807875

启用体积云

想要使用体积云系统有几个必要的组件和设置需要启用

  • Directional Light
  • Sky Atmosphere
  • Sky Light
  • Volumetric Cloud

修改Directional Light设置

  • 设置可移动性: Stationary / Movable
  • 启用"Atmosphere Sun Light"

修改Sky Light

  • 设置可移动性: Stationary / Movable
  • 启用"Real Time Capture"

image-20230831170959331

体积云参数

image-20230831172159167

  • Layer Bottom Altitude:云层底部的高度,单位km
  • Layer Height:云层顶部的高度,单位km
  • Tracing Start Max Distance:在该最大距离前开始tracing,单位km
  • Tracing Max Distance:云层内部tracing的最大距离,单位km

材质编写

根节点设置

image-20230831174719486
image-20230831204239484

云的颜色

image-20230831204340177
image-20230831204354599

添加mask

本篇使用的纹理在如下位置。该纹理仅仅是一个灰度值
image-20230831204528942

这里对单位进行了转换。因为UE的世界单位是cm,而体积云的单位是km,且UE不允许小数点后六位
image-20230831212635594

走至云的上方可查看效果
image-20230831213224431

边缘

找到以下体纹理
image-20230831213742597
image-20230831214358932

对体纹理进行-1是因为后续需要和2dmask进行求和,因此这里取负
image-20230831215028899

image-20230831215017228

高度

为了控制云的高度和深度,需要用到以下函数

  • Altitude:云在世界坐标下的高度

    AltitudeInLayer:云在云层中的高度

    NormAltitudeInLayer:归一化后的云在云层中的高度
    image-20230831215800368

image-20230831223551847

image-20230831223634395

透光性

需要用到以下函数

  • PhaseG:云层的透光性(光学相位函数方向)
  • Multi Scattering Contribution:控制光在云层中的散射程度
  • Multi Scattering Occlusion:控制光在云层中散射的衰减程度
  • Multi Scattering Eccentricity控制光在云层中的散射呈各向异性(0)/ 各向同性(1)
    image-20230831223901587

image-20230831225306165

动画

image-20230901011734388
image-20230901011743526

最终效果

reference

https://www.worldofleveldesign.com/categories/ue4/volumetric-clouds-analysis.php

https://docs.unrealengine.com/5.2/en-US/volumetric-cloud-component-properties-in-unreal-engine/

https://zhuanlan.zhihu.com/p/373361388

https://www.youtube.com/watch?v=aYxvN5cs-EU

https://www.youtube.com/watch?v=4QOcCGI6xOU&list=PLFt_AvWsXl0ehjAfLFsp1PGaatzAwo0uK&index=6

https://zhuanlan.zhihu.com/p/560698789