Physically Based Sky 基于物理的天空盒

简介:三种天空功能中的一种,基于物理的天空可以模拟具有两部分大气的球形行星,其中大气的密度会相对于高度呈指数递减。这意味着高于海平面越高,大气密度就越小。
模拟是作为预处理过程运行的,这意味着只会运行一次,而不是在每个帧上运行。模拟会计算光线和视角所有组合的大气散射,然后将结果存储在多个 3D 纹理中,Unity 在运行时对纹理进行重新采样。预计算是与场景无关的,并且仅取决于基于物理的天空的设置
版本:Unity2019.4.12f1 HDRP 7.5.1

准备


  • 在体积组件中添加 VisualEnvironment 和 Physically Based Sky 功能。
  • 将 VisualEnvironment 的type 指定为 Physically Based Sky ,激活 Physically Based Sky功能,这样可以方便我们观察效果
  • 物理天空盒参数比较多,需要一些耐心开完,总体分为六个部分
    1. Planet 星球,可以理解为地球设置
    2. Space 空间,可以理解为天空盒纹理设置
    3. Air 空气颜色设置,在关闭 EarthPreset 后显示出来
    4. Aerosols 气溶胶,可以理解为雾霾
    5. ArtisticOverrdes 艺术化处理,就是修改一些本来很科学的东西,满足艺术家们的需求,如果追求真实,不建议修改,或大改这里的参数。
    6. Miscellaneous 杂项,就是不好归类的属性都放这了
物理天空盒参数

详细参数介绍

Planet 星球模块 - 天空盒地表设置


  • 主要处理星球表面的效果,可以简单理解为水平线以下的天空盒的效果
星球模块参数
  • EarthPreset 勾起后会自动使用一些地球预设参数,并且面板会隐藏一些属性,简化操作,一般不做奇葩效果建议勾起,这样可以简化操作
    1. 勾起后会自动根据地球预设设置星球半径,并隐藏 PlanetaryRadius 属性
    2. 勾起后会自动根据地球预设设置 大气颜色,并隐藏整个Air 模块
  • PlanetaryRadius ,设置星球的半径,关闭 EartHPreset 后显示出来。在球形模式(SphericalMode)下这个值有个范围600万到8亿之间
    1. 最小也得600万起,不然看不见星球,因为你已经在大气层外了
    2. 太大了也会出现问题,测试设置为8亿时会出现错误
    3. 地球默认值为 6378100 ,在实现其它星球时可以做参考
580万,星球还是很小的,地平线都是圆的

8亿时地平线会出现奇怪的分界线
  • SphericalMode 球形模式,这个属性一般默认即可,没有特殊效果需求不需要修改。
    1. 开启时需要设置球心位置,一般是 半径的复数,例如 地球的球心位置就是 -6378100
    2. 关闭时为海平面模式,需要设置海平面的位置,默认为 0
  • PlanetCenterPosition 球形中心位置 ,开启 SphericalMode 球形模式时,本属性会显示出来。
球形模式时的球心位置
  • SeaLevel 海平面高度,关闭 SphericalMode 球形模式时,本属性显示出来
海平面模式
  • GroundColorTexture 地面纹理贴图,采样一个很低的mipmap 等级来给天空着色,主要控制天空的色相,会对烘焙产生影响。
  • Ground Tint 星球地面纹理混合的颜色,混合 模式正片叠底,对烘焙产生影响。
    为了方便观察天空盒变化 我们关闭了场景的自动曝光,并将两盏灯的亮度调整到5,天空的亮度和主光是关联的,可以把主光理解为太阳
赋予了地面纹理和

地面颜色调整为暖色并烘焙
  • GroundEmissionTexture 地面发光贴图,一般使用和GroundColorTexture 一致的就可以了。与GroundColorTexture 是叠加模式。
赋予地面发光并烘焙
  • GroundEmissionMultiplier 设置地面发光强度
增强地面发光强度并烘焙

*PlanetRotation 星球旋转,这里只会影响星球的朝向,通过激活GroundColorTexture 和 GroundEmissionTexture 可以看出区别,这个旋转并不影响 Space 中的天空盒纹理旋转。实测X和Z轴旋转变化较大,Y轴旋转没有变化。一般不建议修改这个值。

不旋转的天空和地面的颜色,烘焙后生效

旋转了的天空和地面颜色,烘焙后生效

Space 空间 - 水平面以上天空盒设置


  • SpaceEmissionTexture 天空盒贴图,这里直译是发光贴图,表示的时这张天空盒贴图和 Planet 的设置的天空是一个叠加关系。当 Planet 天空太亮时,再经过曝光矫正,这张贴图的纹理就会越弱。
主光设置为 1 时,关闭曝光,天空盒效果显著

参数未变,将主光调到20,关闭曝光,天空盒效果弱化
  • SpaecRotation 旋转天空盒纹理,这个是可见的。这个旋转可以将天空侧翻
旋转值为0

X轴旋转45度

Y轴旋转45度

Z轴旋转25度
  • SpaceEmissionMultipiler 天空盒发光强度,这个值可以在灯光强度很强的时候,提升天空盒亮度,然后再经过曝光,可以提升天空盒纹理的占比。


    天空盒强度为2

Aerosols 气溶胶 - 理解为雾霾效果就好了


  • 这个雾霾效果只影响天空盒,不会影响渲染然的物体,渲染的物体的雾效和体积雾效是通过 体积内的雾效功能来实现的。
  • Aerosol Maximum Altitude 雾霾的最高高度,从地面到这个高度,雾霾逐渐变得稀薄。值太小会引起泛白雾的现象
8200米高的雾霾

100米高的雾霾
  • AreosolDensity 雾霾的浓度,为一时就看不见天空了
雾霾浓度调整到0.63
  • AerosolTint 雾霾颜色设置
设置雾霾的颜色
  • AerosolAnisotropy 控制光的散射分布,值为0时,光会均匀的分散到雾中,值为1时,光会集中在灯光朝向上,也可以简单的理解为太阳的位置,值为-1时,光会集中在灯光朝向的反向上,也可以简单的理解为太阳照射的方向上。值完全为1或-1时 由于集中的范围较小,高亮可能就看不见了
较高的聚散值

ArtisticOverrides 风格化处理


  • 调整天空的颜色,不包括space内的天空盒颜色
  • ColorSaturation 色彩饱和度
饱和度为 1

饱和度为 0,可以看到雾霾颜色变了,天空盒颜色没有变
  • AlphaSaturation 控制天空的透明通道饱和度
透明通道饱和度为 1

透明通道饱和度为 0
  • AlphaMultiplier 天空不透明度倍乘系数
系数为 1

系数为 0,天空色没了
  • HorizonTint 地坪线处的天空颜色混合 混合模式正片叠底
指定为红色
  • HorizonZenithShift 控制 HDRP 如何在 Horizon Tint 和 Zenith Tint 之间混合。如果将此值设置为 -1,则 Zenith Tint 会向下扩展到地平线。如果将此值设置为 1,则 Horizon Tint 会向上扩展到天顶。
  • ZenithTint 指定 HDRP 用于为观察者正上方天空位置(天顶)着色的颜色
HorizonZenithShift 为 0

HorizonZenithShift 为 -1

HorizonZenithShift 为 1

Miscellaneous 杂项

  • NumberOfBounces 散射事件的数量。这不仅可以提高天空视觉效果的质量,还会增加预计算时间。
设置弹射数量为7
  • IntensityMode 天空盒强度模式 分为 Exposure和Multiplier 模式,都是值越大天空盒越亮

  • UpdateMode 更新模式,分为三种,OnChange 、OnDemand 、Realtime
    1. OnChange 当属性有变化更新
    2. OnDemand 从脚本调用更新事件时更新
    3. Realtime 实时更新

  • IncludeSunInBaking 指示为天空生成的光照探针和反射探针是否包含太阳圆盘。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容