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

8 篇文章 0 订阅
本文详细分析了使用Unity的High Definition Render Pipeline (HDRP)构建高质量场景的过程,包括烘焙光照图、光照探针、反射探针、后处理效果、阴影渲染、场景特效等方面。作者参考了Unity官方的枫丹白露森林Demo,并探讨了如Day模式下的光照细节、阴影动态、镜头耀斑和水洼反射等技术实现。此外,还介绍了地形、树木、石头等环境物体的设置和LOD效果。
摘要由CSDN通过智能技术生成

本文地址:https://blog.csdn.net/t163361/article/details/124551700
最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边栏的关注,谢谢。

公司安排用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 ProbesBranches_Wind,采用Pine(Diffusion Profile Settings)
Thorn02松针使用父物体的光照代理Branches_Wind,采用Pine(Diffusion Profile Settings)
Trunk02_LOD0树冠的L0D0级使用父物体的光照代理Trunk_Wind只开启Contribute GIPolybrush Mesh
Trunk02_LOD1~4树冠的L0D1~4级使用父物体的光照代理Trunk_Wind
Collider树的碰撞器
  • Rock_06_Prefab
    在这里插入图片描述
    场景中的石头,物体上包含LOD Group组件。实现了石头的LOD效果
    包含6个子物体,都是LOD的子级
物体作用是否产生阴影是否贡献GI光照探针着色器静态标记额外组件
Rock06_LOD0石头的L0D0级贡献,接受Lightmaps的GILayeredLit全部开启Polybrush Mesh
Rock06_LOD1~5石头的L0D1~4级LayeredLit开启 Batching,Navigation,Occludee,Off Mesh Link Generation,Reflection ProbeLightmapped LOD
  • Pine_01
    在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值