> 技术文档 > Unity中的渲染管线(二十一):URP-多相机系统_unity urp ui 3d 双相机

Unity中的渲染管线(二十一):URP-多相机系统_unity urp ui 3d 双相机

在通用渲染管线(URP)中,相机堆叠(Camera Stacking)用于将多个相机的输出分层组合,生成单一的合并输出。通过相机堆叠,您可以实现如 2D UI 中嵌入 3D 模型、载具驾驶舱等效果。

(一).相机堆叠的组成

一个相机栈包含以下部分:

  • 基础相机(Base Camera):作为栈的主渲染相机。
  • 一个或多个叠加相机(Overlay Cameras):按顺序叠加在基础相机的输出之上。

相机栈会将所有相机的输出合并,覆盖基础相机的原始输出。因此,基础相机能实现的功能(如渲染到渲染目标、应用后处理),相机栈同样支持。

(二).设置相机栈的步骤
1、创建相机栈

创建包含基础相机(Base Camera)和一个或多个叠加相机(Overlay Cameras)的相机栈。

 

2、设置图层和剔除遮罩

创建相机栈后,需将叠加相机要渲染的游戏对象分配到特定图层,并设置每个相机的剔除遮罩以匹配图层。

操作步骤:
  1. 添加项目所需的图层

    • 根据需求创建图层(如 “UI 层”“特效层”)。
  2. 为游戏对象分配图层

    • 选中需要叠加相机渲染的游戏对象,在 Inspector 窗口中将其分配到对应图层(如将 UI 元素分配到 “UI 层”)。
  3. 配置基础相机的剔除遮罩

    • 选中相机栈的基础相机,在 Inspector 窗口中导航至 渲染 > 剔除遮罩(Rendering > Culling Mask)
    • 移除基础相机不需要渲染的图层(如仅包含叠加相机渲染对象的图层)。
  4. 配置叠加相机的剔除遮罩

    • 选中相机栈中的第一个叠加相机,导航至 渲染 > 剔除遮罩
    • 仅保留该相机需要渲染的图层(移除其他所有图层)。
    • 对相机栈中的每个叠加相机重复步骤 4 和步骤 5,确保每个相机仅渲染对应图层的对象。
(三).关键原理
  • 图层隔离:通过图层控制不同相机的渲染范围,避免重复绘制(如基础相机渲染场景,叠加相机仅渲染 UI)。
  • 剔除优化:合理设置剔除遮罩可减少相机的渲染负担,提升性能。

通过以上步骤,可实现多相机输出的分层组合,例如在场景上方叠加 UI 元素、特效或分屏视角

 (四).多相机案例

  • 分屏显示:在多人游戏或需要同时展示不同视角的场景中,可使用多相机实现分屏效果。如在赛车游戏中,一个相机用于渲染主驾驶视角,另一个相机渲染车尾视角,方便玩家观察后方情况;在多人合作射击游戏里,不同相机分别对应不同玩家视角,每个玩家都能在自己的屏幕区域看到独立画面,同时进行游戏。
  • UI 与场景分离渲染:将 UI 元素和游戏场景分开渲染,使 UI 显示更清晰稳定,避免受到场景渲染变化的影响。如在角色扮演游戏中,主相机负责渲染游戏世界中的角色、地形、怪物等场景元素,UI 相机专门渲染血条、背包栏、技能栏等 UI 元素。由于 UI 相机只关注 UI 层,可针对性地进行优化,如调整分辨率、抗锯齿等,提升 UI 的视觉效果。
  • 驾驶舱效果模拟:通过多个相机模拟驾驶舱内的不同视角,增强游戏的沉浸感和真实感。以飞行模拟游戏为例,一个相机作为基础相机,渲染外部的天空、云层、地面等环境;一个或多个覆盖相机用于渲染驾驶舱内部的仪表盘、操纵杆、座椅等细节。每个相机可设置不同的参数和后期处理效果,如驾驶舱相机添加色彩校正,模拟玻璃的色调,让玩家感觉仿佛置身于真实的驾驶舱中。
  • 小地图与主场景同步:在大型游戏场景中,常需要小地图来辅助玩家了解自己的位置和场景全貌。主相机渲染玩家当前视角的游戏主场景,小地图相机以俯瞰或特定视角渲染整个地图区域,只包含关键的地形、建筑、玩家位置等信息。小地图相机的 Culling Mask 可设置为只渲染特定的地图元素层,通过调整其投影方式和视野范围,使小地图能清晰展示场景结构,同时与主场景的视角和位置信息实时同步,帮助玩家更好地导航。
  • 多重视角特效叠加:利用多相机为不同视角添加独特的特效,创造出丰富的视觉效果。如在魔幻题材游戏中,主相机渲染正常的游戏场景,当玩家进入特定区域或触发特定事件时,开启一个或多个辅助相机。这些辅助相机可以添加扭曲、模糊、色彩变换等特效,用来模拟魔法领域的特殊视觉效果,或通过添加暗角、色彩校正等效果,营造出紧张、神秘的氛围。

数字固安