UE5 UDS(Ultra Dynamic Sky)动态天气天空如何采用官方光源和雾

提问

但是如果level中,只有UDS,没有放置DirectionalLight或者SKyLight,相比起有,会有什么区别呢,我看如果只有UDS,也会有光

回答

你问到的是 UDS 是否自带光源如果关卡里没有 DirectionalLight / SkyLight 会发生什么。这是使用 UDS 时最容易混淆的点,我给你讲得可以非常清楚。


🔥 关键结论一句话:

UDS 内部自带一盏 Directional Light(太阳)和一盏 Sky Light(环境光)。
所以即使你关卡里完全没有 DirectionalLight 和 SkyLight,UDS 依然会发光、产生阴影、产生天空环境光。


🌞 1. UDS 内部到底包含什么光?

Ultra Dynamic Sky Blueprint 其实包含了:

✔(1)一个 DirectionalLight Component(蓝图内部组件)

用于当成"太阳"。

✔(2)一个 SkyLight Component

自动捕捉天空生成反射。

✔(3)一个 Sky Dome Mesh(天空球)

有动态天空材质。

✔(4)时间系统(太阳位置计算)

会自动旋转 DirectionalLight 来生成日夜循环。

所以,这个蓝图自身就已经是一套 完整的天空 + 太阳 + 天光 系统。


🌞 2. 那为什么关卡里不放 DirectionalLight / SkyLight 也有光?

因为 UDS 自己内部带的那一套光是 蓝图内部组件

你在 World Outliner 看不到这些内部组件,它们藏在蓝图内部,但 Play 时照样作用于场景。


⚠ 那为什么还要引用外部 DirectionalLight / SkyLight?

因为 UE 官方不希望你使用太多"内部组件光"(蓝图自带的光),原因如下:


🚨 3. Blueprint 内部的光源 vs 关卡独立光源:核心区别

这里直接分情况,让你立即看懂差别。


情况 A:使用 UDS 自带的光(你当前这种)

优点:

  • 不用自己放 DirectionalLight / SkyLight
  • UDS 自动处理一切
  • 一般效果没问题,能正常照亮场景

缺点(非常重要):

  1. 光源不在 Outliner,上层难管理

    • 你无法直接点选太阳去调参数(强度、阴影、光照质量)。
  2. 不方便调光照烘焙参数 / 阴影质量

    • 比如设置 ray traced shadows、volumetric scattering intensity、light shaft bloom,都很麻烦。
  3. PostProcess 和其他系统无法自动识别这些光的角色

    一些后期系统(如 Auto Exposure)可能读取不到这些内部光源的元数据。

  4. 你没办法把这盏光作为共享光源给其他系统

    例如:

    • Ultra Dynamic Weather(天气系统)
    • Water systems(如 Waterline Pro 雾散射)
    • 体积云(Volumetric Clouds)
      它们通常需要一个"指定太阳光",而内部光源不容易引用。

因此:

用内部光 → 虽然可用 → 但不符合 UE 的最佳实践。


情况 B:UDS 引用你关卡里的 DirectionalLight 和 SkyLight(推荐)

这是 UE 官方推荐、游戏项目中最常用的方式。

优点:

  1. 你在 Outliner 能看到并管理光源

    可以随时调太阳的阴影、强度、颜色。

  2. 全项目统一使用同一盏太阳

    任何系统都可以引用它(后期、体积云、海洋插件等)。

  3. 更容易与 UE5 新光照系统兼容

    包括:

    • Lumen
    • Volumetric Clouds
    • SkyAtmosphere
    • Exponential Height Fog 的方向散射
      等全部依赖明确的 DirectionalLight。
  4. 你可以关闭 UDS 内部光源,只保留蓝图功能

    这是绝大多数专业 UE 项目的做法。


那么应该怎么选?

如果你只是做简单演示:

✔ 只用 UDS 自带光 = 可以

(你现在这样没问题)

如果你是做专案、游戏、真实海况仿真(你现在做的是仿真实验室级别):

一定推荐:用自己的 DirectionalLight + SkyLight,然后引用给 UDS。

因为:

  • 大部分真实海洋插件(Waterline Pro、Oceanology、Ultra Dynamic Weather)

    都依赖:

    一个明确的外部 DirectionalLight 作为"太阳"


🔍 你最关心的对比总结(非常直观)

项目 只有 UDS(内部光) UDS + 外部灯光(推荐)
太阳光是否存在 ✔ 内置 ✔ 由你提供
光源是否可在 Outliner 调节 ❌ 不可 ✔ 可
是否能调阴影质量 / 光照参数 ❌ 不方便 ✔ 方便
SkyLight 环境光可控性 ❌ 限制大 ✔ 完整可控
是否能给其他系统引用太阳光 ❌ 很难 ✔ 完全可行
是否是专业项目做法 ❌ 否 ✔ 是

🧩 你现在应该怎么做?(快速指引)

你可以按照这些步骤优化你的场景:


📌 Step 1:在关卡放一盏 DirectionalLight(命名:SunLight)

📌 Step 2:放 SkyLight(命名:SkyLight)

📌 Step 3:选中 UDS → 在 Details 里找到:

  • Sun Light Actor / Directional Light Actor → 绑定 SunLight
  • Sky Light Actor → 绑定 SkyLight

📌 Step 4:禁用 UDS 内部光(如果有开关):

常见设置:

复制代码
Use Built-In Sun Light        → 关闭
Use Built-In Skylight         → 关闭

这样 UDS 就完全接管外部光源。


🎯 如果你想,我可以帮你做到「最优配置」

你只要贴一个 UDS Details 面板(Lighting、Sun、Skylight 部分)截图给我,我可以:

  • 明确告诉你你的版本有哪些内置光
  • 哪些要关、哪些要保留
  • 哪些要引用外部光
  • 哪些参数与你的 Waterline Pro 海洋系统联动

这样你的仿真场景就可以做到:

真实天空 + 真实太阳方向 + 海浪真实散射 + 日夜动态切换 + 高质量反射 + 稳定后期曝光

追问

  1. 这是UDS的Details面板,引用就是在这里引用吗?
  2. 是的话,Moon Light Actor也可以引用DirectionalLight,需要吗?
  3. 我还对Fog进行了引用,如你所见。你认为合理吗
  4. 引用了以后,应该还需要禁用掉自带的吧?

回答

下面我逐条、非常明确地回答你的 4 个问题,并且告诉你 为什么这样做 ------你会一眼就看明白整个 UDS 的工作机制。


1. 这是 UDS 的引用位置吗?(是)

是的,你截图里的这块:

复制代码
Custom Sun Light Actor
Custom Moon Light Actor
Custom Sky Light Actor
Custom Height Fog Actor

就是 UDS 官方提供的外部光源引用入口。

✔ 你把外部 DirectionalLight

✔ 外部 SkyLight

✔ 外部 ExponentialHeightFog

都绑定进去 ------ 完全正确。

这相当于告诉 UDS:

"不要用你内部自带的光了,用我场景里放的这些光。"

这是专业 UE 项目和仿真项目中标准做法。


2. Moon Light Actor 是否应该引用 DirectionalLight?

❌ 不应该。

✔ 永远不要把 "月亮" 也指到 DirectionalLight。

原因:

  • 太阳 =一盏 DirectionalLight
  • 月亮 = 另一盏单独的 DirectionalLight(光更弱、颜色更冷)

为什么不能共用一盏灯?

因为 UDS 的日夜系统中:

  • 太阳在白天从地平线升起 → 亮度变强
  • 月亮在晚上升起 → 月亮有独立的角度、亮度、颜色

UDS 会自动:

  • 白天让太阳光有效 + 月亮光关闭
  • 夜晚让月亮光有效 + 太阳光关闭

如果你把 太阳和月亮引用成同一盏 DirectionalLight

  • 夜晚太阳也会亮 = 假光
  • 月亮无法独立调亮度
  • 阴影错乱
  • 整个日夜系统失效

⭐ 正确做法:你现在的设置就对了:

复制代码
Custom Sun Light Actor  →  DirectionalLight
Custom Moon Light Actor →  None  (或者创建单独的 MoonLight)

如果你需要真实夜景(比如月光照亮海面、Waterline Pro 反射月亮)

→ 我可以教你创建一盏专用月光。


3. Height Fog Actor(雾)引用是否合理?

✔ 很合理,而且 强烈推荐 这样做。

引用后 UDS 会控制雾的:

  • 雾的颜色(清晨偏蓝、夕阳偏橙、夜晚偏黑蓝)
  • 雾的浓度
  • 高度变化
  • 随太阳高度调整亮度

效果比你手动调的 真实 100 倍

尤其是你做仿真海面环境,这种随时间变化的雾非常重要。

所以你这样:

复制代码
Custom Height Fog Actor → ExponentialHeightFog

完全正确。


4. 引用外部光源后,需要关闭内置光源吗?(是)

需要。

否则会出现:

  • 场景中有 两盏 DirectionalLight(一个内部的,一个外部的)
  • 场景多出一盏 Skylight(影响曝光)
  • UDS 有两套光源在计算 → 阴影方向错误、曝光异常

⭐ 如何关闭 UDS 自带光源?

在 UDS Details 里搜索:

复制代码
Use built-in
use internal
auto create light
auto sun
auto skylight

常见开关:

  • Use Built-in Sun Light → OFF
  • Use Built-in Skylight → OFF
  • Use Built-in Moon Light → OFF
  • Create New Skylight → OFF
  • Use Default Fog → OFF

(名字依版本不同,但你搜索 "sun""sky""light""internal" 就能找到)

关闭后:

✔ 你的 DirectionalLight = 唯一太阳

✔ 你的 SkyLight = 唯一天光

✔ 你的 Fog = 唯一雾系统

✔ UDS 只负责"驱动"和"控制",不会额外生成光源

这是专业 UE5 项目标准做法。


📌 最佳配置总结(你当前状况的最优方案)

你现在的引用设置:

复制代码
Sun Light Actor → DirectionalLight   ✔
Moon Light Actor → None              ✔(以后可创建)
Sky Light Actor → SkyLight           ✔
Height Fog Actor → ExponentialFog    ✔

接下来你需要做的只有一件事:

👉 在 UDS 里把所有 "Use internal light / built-in light / auto create skylight" 相关选项关闭。

这样就完成了专业级配置:

  • 单一太阳
  • 单一天空反射
  • 单一雾系统
  • UDS 负责驱动这些光源的角度、亮度、颜色
  • 水面、天空、阴影全部一致、真实、稳定

如果你愿意,我可以更进一步帮你:

如果你贴一张:

✔ UDS 的 "Lighting" 和 "Sun/Moon" 设置截图

✔ 你的 DirectionalLight 的 Details 截图

✔ 你的 SkyLight 的截屏

我可以帮你做到:

  • 最正确的太阳阴影设置
  • 最真实的天空与海面互动
  • Waterline Pro + UDS 的光照最佳配合
  • 白天 / 夜晚 / 夕阳 / 清晨的真实过渡
  • 自动曝光最佳设置(你之前问过曝光问题)
  • 远处雾 + 天空雾 + 海面光线全部统一

一句话:

我能帮你把你的海面仿真场景打磨到"电影级别真实感"。

你愿意继续优化的话就给我再发几个截图即可。

提问

是在这里设置吗

回答

非常肯定地说:

对,就是在这里设置!就是这几个 "Use Custom Actor / Use Built-In Component" 开关。

你贴的截图正好显示了 UDS 最关键的光源选择开关 ,这就是用于 禁用 UDS 自带光源、并改成使用关卡中你自己的灯光的地方。

下面我逐项讲得清清楚楚,让你 100% 理解每个选项是干什么的。


🔥 ⭐ UDS 核心光源控制就在这里:

复制代码
Component Selection
    Sun Light         → Use Custom Actor / Use Built-In Component
    Moon Light        → Use Custom Actor / Use Built-In Component
    Sky Light         → Use Custom Actor / Use Built-In Component
    Height Fog        → Use Custom Actor / Use Built-In Component

每一行代表一个系统:

项目 功能
Sun Light 太阳光(Directional Light)
Moon Light 月亮光(第二盏 Directional Light)
Sky Light 天空反射光
Height Fog 雾系统(Exponential Height Fog)

🔧 你应该怎么设置?(正确专业的仿真项目配置)

按你现在的使用方式(你已经有外部 DirectionalLight、SkyLight、ExponentialFog),

应该设置成下面这样:


Sun Light(太阳光) → Use Custom Actor

含义:

"用关卡里的 DirectionalLight,不用 UDS 内置的太阳光。"

这是正确做法。


❌ Moon Light(夜晚月光)→ 不要用 Sun Light,也不要 Built-in 除非你需要月光

如果你还没有月光:

📌 推荐设置:

复制代码
Moon Light → Use Built-In Component

或者设成:

复制代码
Moon Light → None(如果版本支持 None)

千万不要选 Use Custom Actor 然后绑定 DirectionalLight。

(太阳 = 一盏灯,月亮 = 另一盏灯)


✅ Sky Light(环境光) → Use Custom Actor

含义:

"用你场景里的 SkyLight,不用 UDS 自带 SkyLight。"

非常推荐。

这样你可以控制 SkyLight 的:

  • 反射捕捉分辨率
  • 是否实时捕捉
  • 强度
  • Lumen 环境贡献

✅ Height Fog(高度雾) → Use Custom Actor

含义:

"使用你场景里的 ExponentialHeightFog,让 UDS 控制它的颜色/浓度。"

你的做法完全合理,非常推荐。


🔥 最终结果总结(你应该达到的状态)

你的目标就是做到:

复制代码
Sun Light      → Use Custom Actor → 绑定你的 DirectionalLight
Moon Light     → Use Built-In Component(如果你不需要月光)
Sky Light      → Use Custom Actor → 绑定你的 SkyLight
Height Fog     → Use Custom Actor → 绑定你的 ExponentialFog

这样:

  • UDS 只负责驱动(太阳位置/雾颜色)
  • 真实光源全部是你自己的
  • 灯光在 Outliner 可见,可调
  • 不会出现重复太阳、重复 Skylight、重复雾的问题
  • 完全符合 UE5 标准做法
  • Waterline Pro、雾、天空颜色、曝光都能统一一致

追问

总结一下添加UDS以后的其他细微操作

回答

添加 UDS 后:

✅ 必做:

  • UDS 绑定外部 DirectionalLight/SkyLight/Fog
  • 禁用 "Use Built-in Light Components"
  • PostProcess Exposure 固定或合理设置
  • 清理掉旧天空(SkySphere / SkyAtmosphere),如果原来有的话
  • 保证只有 1 盏太阳、1 盏天空光、1 个雾
相关推荐
zhangzhangkeji4 小时前
相机与动画 - 3:引入相机到动画,摇臂与导轨的使用,以及动画连接,动画的过渡轨道,从关卡蓝图中引用场景中对象的方法,
ue5
SpiderCodeJ5 小时前
【UE5】- VR小技巧 :用PC处理代替频繁使用VR头显开发
ue5·vr·虚拟现实
AA陈超2 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-11 实现自动运行
c++·游戏·ue5·游戏引擎·虚幻
ue星空4 天前
UE核心架构概念
网络·c++·ue5
ue星空4 天前
AActor前面为什么要加A? UObject前面为什么要加U?
ue5
AA陈超5 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-08 点击移动
c++·游戏·ue5·游戏引擎·虚幻
曼巴UE55 天前
UE5 C++ Slate 画曲线
开发语言·c++·ue5
ue星空5 天前
UE5C++UKismetMathLibrary源代码
c++·ue5
CandyU25 天前
UE5 C++ 进阶学习 小知识点 —— 01 - 本地化语言
学习·ue5