Unity演示场景枫丹白露(Fontainebleau)技术分析

本文地址:https://blog.csdn.net/t163361/article/details/124551700
公司安排用Unity的HDRP做一个相对高质量的场景。选择还原公司附近的一个小公园。由于之前没有太多经验。决定参考Unity官方的枫丹白露场景作为技术参考对象。
整个Demo是Unity巴黎工作室制作的,使用照片建模技术还原工作室附近的枫丹白露森林。
Demo地址
在这里插入图片描述

Demo整体分析

整个演示场景包括演示相关的场景如下:
Demo.unity:基础功能场景
Demo_GR.unity:地形场景
Demo_LI_Day.unity:白天光照场景
Demo_LI_Night.unity:夜晚光照场景
Demo_LI_Sunset.unity:夕阳光照场景
Demo_SD_Day.unity:白天声音场景
Demo_SD_Night.unity:夜晚声音场景
Demo_SD_Sunset.unity:夕阳声音场景
Photogrammety_Kit.unity:资产验证场景
Demo中自带一个很方便的查看场景窗口:Discover Fontainebleau
在这里插入图片描述
通过这个窗口可以很方便的打开4种模式

  • Open Fontainebleau:同时开启Demo,Demo_GR,Demo_LI_Day,Demo_SD_Day场景,运行后就是一个完整的演示端。
  • Open Day:同时开始Demo_GR,Demo_LI_Day。
  • Open Night:同时开启Demo_GR,Demo_LI_Night。
  • Open Sunset:同时开启Demo_GR,Demo_LI_Sunset。
  • Open Photoprammerty_Kit:开启资产验证场景

这个窗口关了后,也可以通过Help->Discover Fontainebleau再次打开

以下分析主要针对Open Day模式进行分析

渲染细节分析

烘焙光照图

Demo_LI_Day:采用的Baked Indirect,相关参数调的比较小。
Demo_GR:猜测使用的是Baked Indirect,但是这个场景的光照图数据和Demo_LI_Sunset公用一个光照文件。具体如何生成的没有深入分析。
通过Demo_GR中的LightmapData物体上有Level Lightmap Data组件,在演示模式下支持动态切光照图。

光照探针

近地光照探侦组
在这里插入图片描述
半空光照探针组
在这里插入图片描述
场景光照探针采用两级光照探针组,近地光照探针组,半空光照探针组。
Demo_LI_GR场景中的LightProbes和LightProbes_low分别对应近地光照探针组和天空光照探针组。
演示场景提供了一个自动布置光照探针的工具,包含在PackageManager中的Light Probes Volumes。
这个工具提供一个组件:LightProbesVolumeSettings。这个组件需要BoxCollider和LightProbeGroup组件,设置好后点Create Light Probes in Selected Volume,就可以自动生成光照探针。
工具下载地址
CSDN下载
GitHub原始工程地址
疑似的原始地址

反射探针

在这里插入图片描述
反射探针被包含在Demo场景中。Lighting->ReflectionProbes的子物体都是光照探针。不同的反射探针会有不同的影响范围,猜测会通过碰撞盒来动态切换反射探针。具体影响范围没有分析。

后处理

后处理被分拆到不同的场景中
Demo_GR中包含的Shadows和Fog的后效,Volume挂在PlanarRefectionRenderingSettings物体上。这个主要用来解决水洼反射效果的穿帮问题。
Demo_LI_Day中有两类后效:
POSTPROCESSING->Day物体上的Volume组件,包含White Balance,Exposure,Lift-Gamma-Gain,Color Adjustments四种后效。
SkyAndFogSettings物体上的Volume组件,包含VisualEnvironment,HDRI Sky,Fog,Physically Based Sky组件

阴影

地上云的影子:在Demo_LI_Day场景的Lights->Directional light组件上添加Cookie Cloud Animation组件来形成云层飘过形成的地面阴影效果。
物体阴影:Demo_GR场景中一些高大的树和石头都会直接产生阴影,但是地面的一些灌木就不会产生阴影。地上云的影子是通过Light上添加Cookies
补充阴影:Demo_LI_Day场景中,通过使用ShadowCasters->Realtime_shadowCasters下的子物体产生了额外的阴影效果。猜测应该是只有物体阴影比较单薄,然后又添加了一些假阴影来增强整个环境的阴影氛围。可以观察到添加这些阴影片后,树冠的叶子被人为的压暗了。

场景特效

Demo_LI_Day场景中有烟尘和落叶效果,包含着VFX Root节点下。

地形

在这里插入图片描述

在这里插入图片描述

地形使用了8张纹理,没有使用SpeedTree和实例草

镜头耀斑效果

在这里插入图片描述

Demo_LI_Day场景中包含两个物体Lights->Directional light是真正产生光照的灯光组件,看向太阳是的光斑效果是通过Sun->LensFlare上的HDRP Lens Flare组件来实现的。Sun物体上有Same Rotation As组件,这个组件保证光斑物体和方向光的朝向能保持一致。

水洼效果

在这里插入图片描述

通过Decal实现了简单的水洼反射效果,具体可以看Demo_GR场景中的DECALS下的子物体。同时还利用了一个后效来改善Decal的穿帮效果。

通过Demo_LI_Day场景中的Wind_Default物体上的Basic Wind Data,HDRP Global Settings里面的Basic Wind以及树和灌木上的定制Shader,实现了后处理的树木被风吹动的效果。
在这里插入图片描述

场景中远景

在这里插入图片描述

Demo_GR场景中使用了三个环形模型来营造了场景中的中远景的森林效果。具体都放到Background物体下面。

环境物体设置

整个演示的环境物体都在Demo_GR中的Props物体下面。下面简单分析下不同物体在设置上的区别

  • Tree_03_01
    在这里插入图片描述
    场景中的大树,物体上包含LOD Group,LOD Group Override,Light Probe Proxy Volume三个组件。实现了树的LOD效果和光照探针代理效果。
    包含以下8个子物体
物体 作用 是否产生阴影 是否贡献GI 光照探针 着色器 静态标记 额外组件
Branches02 树冠枝杈 Blend Probes Branches_Wind,采用Pine(Diffusion Profile Settings)
Thorn02 松针 使用父物体的光照代理 Branches_Wind,采用Pine(Diffusion Profile Settings)
Trunk02_LOD0 树冠的L0D0级 使用父物体的光照代理 Trunk_Wind 只开启Contribute GI Polybrush Mesh
Trunk02_LOD1~4 树冠的L0D1~4级 使用父物体的光照代理 Trunk_Wind
Collider 树的碰撞器
  • Rock_06_Prefab
    在这里插入图片描述
    场景中的石头,物体上包含LOD Group组件。实现了石头的LOD效果
    包含6个子物体,都是LOD的子级
物体 作用 是否产生阴影 是否贡献GI 光照探针 着色器 静态标记 额外组件
Rock06_LOD0 石头的L0D0级 贡献,接受Lightmaps的GI LayeredLit 全部开启 Polybrush Mesh
Rock06_LOD1~5 石头的L0D1~4级 LayeredLit 开启 Batching,Navigation,Occludee,Off Mesh Link Generation,Reflection Probe Lightmapped LOD
  • Pine_01
    在这里插入图片描述

大树旁伴生的小松树,无子物体

物体 作用 是否产生阴影 是否贡献GI 光照探针 着色器 静态标记 额外组件
Pine_01 小松树 贡献,接受LightProbes的GI Blend Probes Branches_Wind 关闭Batching标记,其他全部开启
  • Pine_Cone_Prefab
    在这里插入图片描述
    松果,物体上有LOD Group,Rigibody,On Awake Event Rigibody Action4个额外的组件,提供LOD和碰撞触发事件的功能。
    包含5个子物体,都是LOD的子级
物体 作用 是否产生阴影 是否贡献GI 光照探针 着色器 静态标记 额外组件
Pine_Cone_LOD0 松果的LOD0级 Blend Probes Lit 只开启Occludee Capsule Collider
Pine_Cone_LOD1 松果的LOD1级 Blend Probes Lit 只开启Occludee
Pine_Cone_LOD2~4 松果的LOD2~4级 Blend Probes Lit,去掉了Mask和法线贴图 只开启Occludee
  • Vegetation_1
    在这里插入图片描述
    覆盖地面的草丛,包含LOD Group组件。
    包含3个子物体,都是LOD的子级
物体 作用 是否产生阴影 是否贡献GI 光照探针 着色器 静态标记 额外组件
Vegetation_01_LOD0 草的LOD0级 Blend Probes Branches_Wind,采用Leaves(Diffusion Profile Settings) 开启Batching,Navigation, Occludee, Off Mesh Link Generation ,Reflection Probe
Vegetation_01_LOD1~2 草的LOD1~2级 Blend Probes Branches_Wind,采用Leaves(Diffusion Profile Settings) 开启Batching, Occludee
  • Bush_01_04_Prefab
    在这里插入图片描述
    地面的草丛,包含LOD Group组件。
    包含2个子物体,都是LOD的子级
物体 作用 是否产生阴影 是否贡献GI 光照探针 着色器 静态标记 额外组件
Bush_01_04_LOD0 草的LOD0级 Blend Probes Branches_Wind,采用Leaves(Diffusion Profile Settings) 开启Reflection Probe
Bush_01_04_LOD1 草的LOD1级 Blend Probes Branches_Wind,采用Leaves(Diffusion Profile Settings) 开启Reflection Probe
  • Bush_03_Prefab
    在这里插入图片描述
    地面的草丛,包含LOD Group组件。
    包含2个子物体,都是LOD的子级
物体 作用 是否产生阴影 是否贡献GI 光照探针 着色器 静态标记 额外组件
Bush_01_04_LOD0 草的LOD0级 Blend Probes 两个材质球,Branches_Wind,采用Pine(Diffusion Profile Settings) 另一个着色器是Trunk_Wind
Bush_01_04_LOD1 草的LOD1级 Blend Probes 两个材质球,Branches_Wind,采用Pine(Diffusion Profile Settings) 另一个着色器是Trunk_Wind

猜你喜欢

转载自blog.csdn.net/t163361/article/details/124551700
今日推荐