Unity-VolumeLighting组件(体积雾/光效果)使用小记
Unity的实例《Neno》就使用了VolumeLighting 组件
突然发现了Unity提供的一个开源组件VolumeLighting ,简单记一下用法。
下载地址:https://github.com/Unity-Technologies/VolumetricLighting
Volumetric fog
首先需要在目标相机上挂载一个Volumetric fog
Global Densit Mult和Constant Fog 都是调雾的总体浓度的
HeightFog 应该是设置高度雾相关的参数
Noise Fog Amount/Scale 噪声雾的强度和细节缩放 NoiseFog设为0就是单纯的按距离设置雾的强度
Lights部分分别是对场景所有的光源(对于Unity自带的Ponit也有效哦,只要加上FogLight脚本)强度的统一调整 以及环境光的强度和颜色
Noise Fog Amount=0
Noise Fog Amount=0.5;Noise Fog Scale=1
Noise Fog Amount=0.5;Noise Fog Scale=2
Wind
风可以让雾移动,当然如果Noise Fog Amount=0相当于没效果,官方以及提供了prefab,拖出来用就好了
这个Gizmo表达的很明确了
Anisotropy
Anisotropy是各向异性,值越大,雾的散射越大,比较适合模拟液滴构成的气团(比如水汽)
光源
光源总共有两个 面光和管状光 但是要想让光源对体积雾产生影响,需要在场景中添加一个LightManagerFogLights ,它的prefab已经放在文件夹中了,拖进场景即可(其实还有有LightManagerFogEllipsoids版本的,略过)
面光和管状光都有做好的prefab,拖进场景就可以用了,这里讲的是两个光源组件
Area Light
RenderSource 是否渲染网格
Size调大小,angle调扩散范围
然后是阴影,这里的阴影指的是光源对物体与物体之间产生的阴影,(后面还会有光源对于雾的阴影,两者不要搞混)
Tube Light
tubelight不支持阴影,但是可以用ShadowPlane来做一定的模拟,它长这样,Feather值应该是对光线的遮挡强度
Feather=2和Feather=4
Point Light
Unity自带的点光源也是可以用的,只要附上FogLight脚本
FogLight
LightManagerFogLights脚本会收集每个Area/TubeLight的FogLight,Volumetric fog再通过LightManagerFogLights获取这些信息处理雾效,FogLight有两部分,对体积雾的阴影部分只有AreaLight实现了。
这部分是对光源的强度和范围作出额外的调整最终得到光源相对于体积雾的强度和范围
如下,左边光源的Intensity值为1,intensity Mult值也为1 右边Intensity=5,intensity Mult=0.2,可以看到光源对雾的影响相同,但是右边光源产生的阴影更加重,同时反射也更加强烈
第二部分是阴影
注意这里的阴影指得是物体对体积光的遮挡,前面光源中的阴影是物体对物体的阴影,两者是不一样的
右图物体挡住了光源对体积雾的折射 同一时间只能计算单独一个面光对于体积雾的阴影