中EN
概念页

相机系统

Camera System

更新于 2026-10-13 约 4 分钟UE5CameraPlayerCameraManagerGameplay Camera System

传统相机链路是:PlayerController 持有 PlayerCameraManager,后者维护一个视图目标 (view target),通过 CalcCamera 取得相机组件或 Actor 的位置朝向,并在不同目标之间混合。实验性的 Gameplay Camera System 把相机行为做成数据资产:一个 Camera Asset 包含多个由节点网络构成的 Camera Rig、进出转换,以及决定当前使用哪个 Rig 的 Camera Director。

传统链路

  • 相机组件 (Camera Component) 定义相机的全部行为和属性,可以设为透视或正交(对应 投影矩阵)。CameraActor 主要是相机组件的包装,方便直接放进关卡。(Cameras in Unreal Engine)
  • CalcCamera:Actor 版本在 bFindCameraComponentWhenViewTarget 为真且有相机组件时,返回第一个相机组件的视角,否则返回 Actor 自身的位置和旋转;PlayerController 版本返回所控制 Pawn 的位置加上 Controller 的控制旋转。(Cameras in Unreal Engine)
  • PlayerCameraManager 管理某个玩家的相机,相当于看世界的「虚拟眼球」。它可以直接计算最终的相机属性,也可以在影响相机的对象之间混合(例如从一个 CameraActor 混合到另一个);对外的主要职责是可靠地响应 GetCameraViewPoint 等查询。默认维护一个视图目标;用蓝图子类定制时可以实现 BlueprintUpdateCamera。(Cameras in Unreal Engine)
flowchart LR
  PC[PlayerController] --> PCM[PlayerCameraManager]
  PCM -->|"视图目标"| VT["Pawn / CameraActor"]
  VT -->|CalcCamera| CC[CameraComponent]
  PCM -->|"混合、修饰"| POV["最终视点 POV"]

图中 PlayerController 拥有相机管理器,管理器从视图目标那里通过 CalcCamera 取得视角,再经过混合得到最终视点。Controller 与 Pawn 的关系见 Gameplay 框架。

Gameplay Camera System(实验性)

它是一个通用系统,把一个或多个 Camera Rig 及其行为和转换放进数据资产,而不是像传统做法那样写在蓝图组件里;由 Gameplay Camera 组件或 Actor 读取这个资产来驱动游戏中的相机。(Gameplay Camera System Overview)

组成作用
Camera Asset包含 Camera Rig、转换和 Camera Director
Camera Rig用节点网络定义一种相机行为
Camera Transitions / Shared Transitions每个 Rig 的进出转换;Rig 没有自己的转换时使用共享转换
Camera Director决定当前激活哪个 Rig:蓝图 Director、Single(固定一个)或 行为树与 StateTree 中的 StateTree Director
Camera Variable Collection修改资产内部属性用的变量集合

(Gameplay Camera System Overview)

好处:模块化(一份资产可被多个 Actor 复用);复杂相机行为更容易做,减少蓝图脚本、对设计师更友好;不写 C++ 也能定制转换;自带 Camera Debugger。快速入门用它复刻了第三人称、第一人称和俯视三种模板相机。(Gameplay Camera System Overview、Gameplay Camera System Quick Start)

取舍

传统的 PlayerCameraManager 稳定,但复杂行为(多种相机切换、自定义混合)往往要写代码。Gameplay Camera System 把这些变成数据,但目前是实验性功能,官方提示发售时要谨慎。过场相机由 Sequencer 过场动画 的 Camera Cuts 轨道接管。

  1. Cameras in Unreal Engine UE 5.8 文档
  2. Gameplay Camera System Overview UE 5.8 文档(实验性功能)
  3. Gameplay Camera System Quick Start UE 5.8 文档(实验性功能)

相关页面

游戏开发 · UE5Gameplay 框架Gameplay FrameworkGameplay 框架 (Gameplay Framework) 是 UE 提供的一组相互配合的类,用来搭建游戏的基本结构:Actor 与组件 (Component) 构成场景中的一切;GameMode 在服务器上定规则并生成玩家;玩家由“控制器 (Controller) + 棋子 (Pawn)”组成;GameState 与 PlayerState 负责把全局与每个玩家的状态复制给所有客户端;GameInstance 跨关卡存活。游戏开发 · UE5行为树与 StateTreeBehavior Tree & StateTreeUE 的 AI 决策有两套工具:行为树 (Behavior Tree) + 黑板 (Blackboard) 是事件驱动的,条件写成装饰器 (Decorator),用 Simple Parallel、Services 和 Observer Aborts 代替传统并行节点;StateTree 是结合了行为树选择器和状态机转换的通用分层状态机,只在转换触发时按需选择状态,激活路径上的任务并发运行,通过属性绑定传递数据,也是 Mass 的行为层。优先级抢占多的战斗 AI 适合行为树,状态显式、分层或大规模的场景适合 StateTree。游戏开发 · UE5Sequencer 过场动画SequencerSequencer 是 UE 的多轨道过场动画编辑器:在 Level Sequence 资产里添加轨道和关键帧,来驱动物体、角色和相机。数据存放在 Level Sequence 资产(内容浏览器中),由关卡里的 Level Sequence Actor 把它绑定到关卡并播放。Camera Cuts 轨道在播放时接管相机;最终的高质量输出通过 Movie Render Queue 完成,可以搭配路径追踪器。游戏数学投影矩阵Projection Matrix投影矩阵把视景体变换到规范视体(OpenGL 为 [-1,1]^3,DirectX 的 z 为 [0,1]),在那里裁剪更高效。正交投影保持平行线平行、物体大小与距离无关;透视投影让远处变小,产生的深度与观察深度成反比,近平面位置和"反向 z"决定深度精度。游戏开发物理引擎与游戏的集成Integrating a Physics Engine into a Game碰撞/物理世界里的刚体只是抽象的数学描述,要通过游戏对象这个中枢,间接连到屏幕上的视觉表现。刚体按谁驱动分三类:物理驱动、游戏驱动(Havok 称 key framed)、固定;Havok 用可在运行时切换的"运动类型"统一表示。每帧更新有固定顺序:先更新游戏驱动刚体、幻影、力、冲量和约束,再步进模拟,然后回读物理驱动对象、查询幻影、执行投射查询。物理宜用恒定的 1/30 或 1/60 秒时间步。GEA 还逐一讨论了子弹、手雷、爆炸、可破坏物、角色移动、相机碰撞和布娃娃的实际做法(GEA4 卷 II 14.5–14.6)。游戏开发碰撞查询Collision Queries碰撞系统除了检测真实物体的接触,还要回答假设性问题:子弹从枪口朝某方向飞,先打中什么?车能否从 A 开到 B 不碰到东西?某半径内有哪些敌人?这类操作称为碰撞查询。最常见的是投射 (cast),也叫 trace 或 probe:沿射线或线段移动一个假想物体,看它会碰到什么;被投射的东西并不真正进入碰撞世界,不会影响其他物体(GEA4 卷 II 14.3.7)。游戏策划游戏镜头Game Camera糟糕的镜头是让玩家最快弃游的原因。Rogers 把镜头作为"三个 C"的第二个:先选一种主镜头(静态、可卷动、视差卷动、第一人称、第三人称跟随、2.5D、等距、俯视、AR),其他镜头只用于特定情境;再决定玩家是否掌控镜头;最后借用电影的景别、角度、运镜与构图规则,并守住两条铁律——镜头永远指向目标、永远不让角色离开镜头(Level Up! 第 3 版 Level 6 The Three Cs, Part 2: Camera,p.139–167)。

被这些页面引用1 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原