功能演示:TAVP 虚拟摄影棚数字资产终端系统介绍
系统介绍:面向影视虚拟拍摄的数字资产终端系统,覆盖资产预览下载、nDisplay 集群遥控、iPad 现场调光;我负责整体系统架构设计,以及除后台服务器外的全部客户端开发(TavpClient、TavpListener、资产服务器、IpadRemoteControl)。
项目背景
时光坐标是一家影视公司,资产部门积累了大量基于 Unreal Engine 的场景资产。在 LED 虚拟拍摄现场,导演和灯光团队需要在快节奏、高压力的环境中快速切换场景、调整光影,传统流程存在以下痛点:
- 每个场景 × 每个摄影棚都需要单独做 nDisplay 工程配置,依赖 UE 专业人员,成本高、周期长
- 资产分散在各独立工程中,无法统一预览、下载、使用
- 现场操作需要在控制室与 LED 屏幕之间快速联动,缺少低门槛的移动端控制手段
TAVP 虚拟摄影棚数字资产终端系统(TimeAxis Virtual Production)是我设计并主导开发的端到端解决方案:
- 将分散的 UE 场景资产整合为统一下载、一键打开的数字资产库
- 搭配 iPad 控制端,现场人员可实时调整场景光影参数,无需回到控制台前操作 UE 编辑器
各模块说明
| 模块 | 平台 | 职责 |
|---|---|---|
| TavpClient | UE(控制室主控机) | 独立设计与实现 — 登录、资产库 UI、OBS 下载、集群连接与遥控 |
| TavpListener | UE(各渲染机,自启动) | 独立设计与实现 — TCP 监听、接收指令、拉起/关闭 UE 渲染进程 |
| 资产服务器 | UE(场景进程内嵌) | 独立设计与实现 — HTTP 服务,接收 iPad 控制指令 |
| IpadRemoteControl | iOS(iPad) | 独立设计与实现 — 局域网发现主节点、场景参数遥控 |
| tavp 后台服务器 | 华为云 | 参与各个API接口设计与对接 |
系统架构
现场部署拓扑
大型摄影棚的典型部署方式:
- 控制室:一台主控机运行 TavpClient(不负责渲染),操作员在此登录、选景、下发集群指令
- 机房:若干台渲染机直连 LED 屏幕,每台渲染机自启动 TavpListener(监听端口 3180)
- 拍摄区:iPad 与主控机处于同一局域网,连接主渲染节点上的资产服务器进行光影调节
核心架构设计:资产与摄影棚配置分离
这是我设计的系统最关键的技术决策,解决了「多场景 × 多摄影棚」工程配置爆炸的问题。
问题
按常规虚拟拍摄流程,每个场景需要针对每个摄影棚单独配置 nDisplay 集群、硬件参数、控制逻辑。影视公司有大量场景资产,摄影棚又有不同账户和硬件布局,配置复杂度随场景数量线性增长,且必须由 UE 专业人员操作。
方案
将系统拆为三层,把「资产服务器 + 摄影棚硬件配置」与「场景内容」解耦:
| 层级 | 内容 | 打包形式 | 更新方式 |
|---|---|---|---|
| 场景资产 | 各项目独立的场景内容(模型、灯光、序列等) | 各资产独立 .pak |
按资产单独下载更新 |
| 摄影棚配置 | nDisplay 节点布局、各渲染机 IP/分辨率/窗口位置 | TAVPNdisConfig.ndisplay + JSON 配置 |
按账户登录后从云端拉取 |
| 运行时服务 | 资产服务器(HTTP)、集群控制逻辑 | 统一 CommonScenes.pak |
全摄影棚共享,更新 pak 即可 |
我负责的核心模块
1. TavpClient — 资产终端客户端
整体 UI 框架(UMainWidget 为根容器,页面切换由 UWidgetSwitcher 驱动):
| Widget | 职责 |
|---|---|
ULoginWidget |
OAuth 登录、OBS TST 初始化 |
UTAVPAssetMainWidget |
资产列表(全部 / 我的 / 审核)、分类筛选、搜索 |
UTAVPAssetDetailWidget |
资产详情、领取、多图预览 |
UTAVPAssetBoxWidget |
单资产卡片:下载 / 打开 / 关闭,进度条 |
UTAVPFunctionWidget |
左侧导航、设备节点连接状态(可 Tick 刷新) |
核心服务类(单例):
| 类 | 职责 |
|---|---|
FTAVPSimpleHttp |
REST API 封装:登录、资产列表、TST 凭证 |
FTAVPFileManager |
本地配置管理、ndisplay 解析、资产版本 diff、OBS 下载编排 |
FTAVPClient |
TCP 集群控制:Connection / StartProcess / KillProcess / RecvMessages |
登录后自动初始化链路(ConfigFlieInitProcess):
|
|
2. TavpListener — 渲染机监听服务
独立 UE 程序,部署在各渲染机并设置开机自启动:
- 监听
0.0.0.0:3180,接受 TavpClient 的 TCP 连接 - 解析
Start----{exe路径}----{启动参数}指令,调用FPlatformProcess::CreateProc拉起 CommonScenes - 解析
Kill指令,终止当前渲染进程
3. 资产服务器(嵌入场景进程)
打包在 CommonScenes.pak 中,随 UE 渲染进程自动启动:
- 内嵌 HTTP Server,暴露场景环境参数控制 API(光照、天光、后处理等)
- 仅主渲染节点对外提供 HTTP 服务
- 收到 iPad 指令后,通过 nDisplay Cluster Event 同步到所有从节点
4. IpadRemoteControl — iPad 移动端控制
iOS 端应用,面向拍摄现场的灯光师/导演:
- 局域网内自动发现或手动输入主渲染节点 IP
- HTTP 连接资产服务器,实时调节场景光影参数
- UI 针对触摸操作优化,降低非 UE 专业人员的操作门槛
详细操作说明见《TAVP 虚拟拍摄 iPad 移动端控制系统用户手册 V1.0》
端到端业务流程
|
|
总结
TAVP 系统是我将 Unreal Engine、nDisplay 集群渲染、云存储与移动端控制结合的一次完整虚拟拍摄基础设施实践。除 tavp 后台服务器外,系统架构设计、TavpClient、TavpListener、资产服务器、IpadRemoteControl 均由我独立负责开发。
核心贡献在于提出了「资产内容与摄影棚配置分离」的架构,通过统一 CommonScenes 工程规范 + 独立 Studio Pak,让影视公司的大量场景资产能在不同摄影棚中免配置、一键使用,显著降低了虚拟拍摄的技术门槛和现场操作成本。
演示与材料
功能演示:TAVP 虚拟摄影棚数字资产终端系统介绍
系统用户使用手册:《TAVP 虚拟摄影棚数字资产库终端系统用户手册 V1.0》
移动端使用手册:《TAVP 虚拟拍摄 iPad 移动端控制系统用户手册 V1.0》