简介:三种天空功能中的一种,基于物理的天空可以模拟具有两部分大气的球形行星,其中大气的密度会相对于高度呈指数递减。这意味着高于海平面越高,大气密度就越小。
模拟是作为预处理过程运行的,这意味着只会运行一次,而不是在每个帧上运行。模拟会计算光线和视角所有组合的大气散射,然后将结果存储在多个 3D 纹理中,Unity 在运行时对纹理进行重新采样。预计算是与场景无关的,并且仅取决于基于物理的天空的设置
版本:Unity2019.4.12f1 HDRP 7.5.1
准备
- 在体积组件中添加 VisualEnvironment 和 Physically Based Sky 功能。
- 将 VisualEnvironment 的type 指定为 Physically Based Sky ,激活 Physically Based Sky功能,这样可以方便我们观察效果
- 物理天空盒参数比较多,需要一些耐心开完,总体分为六个部分
- Planet 星球,可以理解为地球设置
- Space 空间,可以理解为天空盒纹理设置
- Air 空气颜色设置,在关闭 EarthPreset 后显示出来
- Aerosols 气溶胶,可以理解为雾霾
- ArtisticOverrdes 艺术化处理,就是修改一些本来很科学的东西,满足艺术家们的需求,如果追求真实,不建议修改,或大改这里的参数。
- Miscellaneous 杂项,就是不好归类的属性都放这了
详细参数介绍
Planet 星球模块 - 天空盒地表设置
- 主要处理星球表面的效果,可以简单理解为水平线以下的天空盒的效果
- EarthPreset 勾起后会自动使用一些地球预设参数,并且面板会隐藏一些属性,简化操作,一般不做奇葩效果建议勾起,这样可以简化操作
- 勾起后会自动根据地球预设设置星球半径,并隐藏 PlanetaryRadius 属性
- 勾起后会自动根据地球预设设置 大气颜色,并隐藏整个Air 模块
- PlanetaryRadius ,设置星球的半径,关闭 EartHPreset 后显示出来。在球形模式(SphericalMode)下这个值有个范围600万到8亿之间
- 最小也得600万起,不然看不见星球,因为你已经在大气层外了
- 太大了也会出现问题,测试设置为8亿时会出现错误
- 地球默认值为 6378100 ,在实现其它星球时可以做参考
8亿时地平线会出现奇怪的分界线
- SphericalMode 球形模式,这个属性一般默认即可,没有特殊效果需求不需要修改。
- 开启时需要设置球心位置,一般是 半径的复数,例如 地球的球心位置就是 -6378100
- 关闭时为海平面模式,需要设置海平面的位置,默认为 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 天空太亮时,再经过曝光矫正,这张贴图的纹理就会越弱。
参数未变,将主光调到20,关闭曝光,天空盒效果弱化
- SpaecRotation 旋转天空盒纹理,这个是可见的。这个旋转可以将天空侧翻
X轴旋转45度
Y轴旋转45度
Z轴旋转25度
-
SpaceEmissionMultipiler 天空盒发光强度,这个值可以在灯光强度很强的时候,提升天空盒亮度,然后再经过曝光,可以提升天空盒纹理的占比。
天空盒强度为2
Aerosols 气溶胶 - 理解为雾霾效果就好了
- 这个雾霾效果只影响天空盒,不会影响渲染然的物体,渲染的物体的雾效和体积雾效是通过 体积内的雾效功能来实现的。
- Aerosol Maximum Altitude 雾霾的最高高度,从地面到这个高度,雾霾逐渐变得稀薄。值太小会引起泛白雾的现象
100米高的雾霾
- AreosolDensity 雾霾的浓度,为一时就看不见天空了
- AerosolTint 雾霾颜色设置
- AerosolAnisotropy 控制光的散射分布,值为0时,光会均匀的分散到雾中,值为1时,光会集中在灯光朝向上,也可以简单的理解为太阳的位置,值为-1时,光会集中在灯光朝向的反向上,也可以简单的理解为太阳照射的方向上。值完全为1或-1时 由于集中的范围较小,高亮可能就看不见了
ArtisticOverrides 风格化处理
- 调整天空的颜色,不包括space内的天空盒颜色
- ColorSaturation 色彩饱和度
饱和度为 0,可以看到雾霾颜色变了,天空盒颜色没有变
- AlphaSaturation 控制天空的透明通道饱和度
透明通道饱和度为 0
- AlphaMultiplier 天空不透明度倍乘系数
系数为 0,天空色没了
- HorizonTint 地坪线处的天空颜色混合 混合模式正片叠底
- HorizonZenithShift 控制 HDRP 如何在 Horizon Tint 和 Zenith Tint 之间混合。如果将此值设置为 -1,则 Zenith Tint 会向下扩展到地平线。如果将此值设置为 1,则 Horizon Tint 会向上扩展到天顶。
- ZenithTint 指定 HDRP 用于为观察者正上方天空位置(天顶)着色的颜色
HorizonZenithShift 为 -1
HorizonZenithShift 为 1
Miscellaneous 杂项
- NumberOfBounces 散射事件的数量。这不仅可以提高天空视觉效果的质量,还会增加预计算时间。
-
IntensityMode 天空盒强度模式 分为 Exposure和Multiplier 模式,都是值越大天空盒越亮
-
UpdateMode 更新模式,分为三种,OnChange 、OnDemand 、Realtime
1. OnChange 当属性有变化更新
2. OnDemand 从脚本调用更新事件时更新
3. Realtime 实时更新 -
IncludeSunInBaking 指示为天空生成的光照探针和反射探针是否包含太阳圆盘。
网友评论