[官方培训] 20-资产及版本管理 | Epic 戴浩军
传送门:[官方培训]20-资产及版本管理 | Epic 戴浩军(官方字幕)_哔哩哔哩_bilibili
一. 影视动画项目资产和传统线性动画流程资产的异同
- 版本控制:本质上是通过记录项目中各类文件的不同版本及变迁过程,为开发者提供类似同步、提交、比较、回退等项目文件管理功能
- 版本控制的目的:是项目资产等文件(而非业务)
- 影视动画项目资产和传统线性动画流程资产的异同:
- 相同
- 都是围绕美术资产文件为主进行管理
- 以视觉效果呈现为最终目标

- 差异
- 相对传统影视资产,UE 工程资产引用关系相对复杂、零散,手动信息追踪难度较大
- UE 对部分资产会进行自动关联修改

- 通用资产可能会被多个岗位的资产共同引用

- 除了美术二进制资产,还要管理脚本,配置文件等文本,需要支持合并等操作

- 传统项目使用共享盘和手动复制文件来管理文件版本的方式,在UE项目中不适用

二. 版本管理使用方法建议
2.1 三大主流版本控制软件

SVN
- Subversion:
- 软件结构简单,安装方便,学习门槛低
- 免费、开源、中央式、有本地缓存
- SVN 包含客户端和服务端
- 客户端:tortoisesvn.net(下载相关语言包)
- SVN 支持命令行操作,但建议使用带 UI 的客户端,便于日常操作

- 在系统管理器任意目录下右键,SVN 相关命令集成到右键菜单

- 服务端:www.visualsvn.com
- 在局域网中,一台长期保持运行的服务器上,创建 SVN 服务端,建议使用 VisualSVN Server(内置了 SVN 命令行工具),便于日常操作

- 使用 VisualSVN Server 创建远程版本库,即项目文件在服务器上的权威版本(其他客户端围绕此版本进行更新操作等)

- 为版本库创建用户,并设置密码(每一个客户端连接服务器时,必须提供用户名及其对应密码)

- 检出项目版本库(需输入用户名及其对应密码),从服务器端获取一份已经被版本管理的完整项目文件

- SVN 更新:获取项目最新版本,自动覆盖本地的老版本

- SVN 添加:添加新文件到服务器版本库

- SVN 提交:提交修改后文件到服务器,并生成相应版本信息

- SVN 回退:回退到指定版本

- SVN 通过 .svn 隐藏目录,记录本地文件和服务器文件之间的关联,但随着时间的推移会占用大量的磁盘空间,此时需要删除 .svn 文件夹,并重新执行检出命令,建立服务器版本库和本地项目文件的关联即可
- 由于 SVN 无法实时了解哪些文件正在被其它岗位修改,因此可能导致多个岗位同时修改相同的文件,从而导致文件冲突

- 建议配合使用 UE 编辑器中的版本控制功能

Git
- Git:
- 非常适合管理以代码为主的软件项目,但经过简单调整也可以管理包含大量二进制美术资产文件的 UE 项目
- 免费、开源、分布式、有本地缓存
- 下载 Git 客户端,tortoisegit.org
- 安装后默认只提供 Git 命令行工具,建议使用带 UI 的客户端(如:TortoiseGit),便于日常操作

- Git 作为分布式版本控制软件的一大特点:允许单机状态下,在本地进行版本管理,联网后,再把特定版本推送到服务器上的远程版本库(即使不需要服务器,也可以对项目进行本地化版本控制)

- 创建远程版本库:服务器上同样安装 Git 客户端,创建一个Bare版本库(意味着只能通过其它客户端远程推送来提交),目录名称通常以 .git 结尾

- 设置在局域网中共享目录,则在客户端电脑上进行本地的更新,提交等操作后,就可以选择 push 推送到远程版本库

- Git 支持本地版本控制,则相关信息必然记录在本地,系统隐藏了 .git 文件夹(记录了文件版本迭代的信息和压缩后的各版本文件),该目录同理也会随着项目推进,变得越来越大
- 由于 Git 本身是面向代码文件版本控制设计,默认只允许将 50M 以下的单个文件推送到远程仓库,不利于大的美术资产使用
- 建议配合 Git Large File Storage 使用,突破远程推送单个文件的大小限制

- 还可以配合使用 UE 编辑器中的源码管理,连接 Git 初始化项目,引擎自动创建本地版本库,并做好相关设置

Perforce
- Perforce:
- 商业软件(按用户收费,5 人以下免费,但整体不超过 20 个工作区)、中央式、无本地缓存
- Perforce 包含客户端和服务端
- 在 Perforce 官网下载 Helix Visual Client 客户端软件并安装

- 在服务器上,下载安装 Helix Core Server 服务端软件并安装

- 不同于 SVN 和 Git,Perforce提供了独立的 P4V 客户端软件,同时附带了P4Admin 管理软件,可以在客户端电脑上远程管理服务器上的版本库
- 首先通过 P4Admin,新建首个账户

- 在 P4V 中,输入服务器 ip 地址和默认端口号 1666,并填入账号密码

- 创建工作空间,即指定客户端电脑的本地目录为 P4V 版本的管理目录

- 连接成功后,就可以在 P4V 中为远程版本库创建仓库,添加文件并上传,然后进行日常的更新,提交,回退,比较文件等操作

- 区别于 SVN 和 Git 在本地创建隐藏目录来记录文件迭代信息的方式,Perforce 全部交给服务器统一管理,是标准的中心化模式,必须连接服务器才能进行日常的版本控制操作,客户端电脑上的项目文件非常干净,不会带来额外的磁盘占用
- 同理,可以配合使用 UE 编辑器中的源码管理,连接 Perforce

2.2 UE 编辑器中的版本控制操作
- 根据不同版本控制,连接源码管理(变绿)

- 以 SVN 为例,开发者只需关注如下这些最基本的操作:
- 检出:从服务器获取文件的最新版本,并通知版本控制软件锁定该资产文件

- 测试项目若要临时修改,可转为本地可写状态

- 测试完成后,在 SVN 外部使用 SVN 还原命令,回退到之前版本

- 检出:将修改后最新版本的文件提交,并通知服务器结束对文件的锁定状态

- 刷新:从服务器中,手动获取当前文件的最新状态

- 历史记录:查看文件的迭代历程

- 与 Depot 库进行对比:
- 打开文本编辑器查看文本类文件(如:关卡、材质等)、二级制文件的属性信息(如:贴图,模型等)

- 直观比较蓝图类资产,并自动列出两个蓝图间的差异(包括蓝图变量、默认值、蓝图类设置、组件、构造脚本等属性)

- 可视化比较事件图表,通过锁定和解锁当前版本与历史版本的视图,高效查找差异

- 批量提交
- 内容变更操作,批量提交

- 提交列表管理,根据工作节奏分批提交修改内容

- 自动化工具:提供版本控制相关的编辑器蓝图节点、Python 脚本 API 等,可依项目需求自定义

- UE 编辑器内的版本控制操作主要针对美术资产,非美术资产文件(如:UE 配置文件、Python 脚本文件、工程文件、项目文档、原画等)建议在编辑器外部进行更新和提交操作

- 涉及更新覆盖 UE 工程文件的情况,建议操作前最好先关闭 UE 编辑器
三. 影视动画项目对资产管理的现实需求以及方案参考
- 影视动画项目资产体量庞大
- 分级别使用资产
- 根据画面对象的重要性、画面占比等,灵活使用 LOD(而非全部按最高级别堆砌资产)
- 远景烟雾不必实时流体解算,可使用动态材质配合面片模型
- 远景模型使用低分辨率贴图
- 提高资产复用率
- 相同元素尽可能复用,常切换服装道具的角色可采用蓝图拼装的方式制作(角色部件拼接成不同版本的角色蓝图资产)

- Virtual Assets 虚拟资产,可以让团队只上传或下载修改的属性原数据,只在必要时传输美术资产数据
- 需要兼顾 UE uasset 资产和 DCC 资产的管理
- 将通用 DCC 资产和项目资产分开管理

- 通过必要的开发(如:开发 UE 编辑器插件),建立通用资产库

- 在服务器中,以 UE 工程的形式将各类资产分类整理成库,通过远程引用,加载到本地,作为制作参考或者资产效果预览(通过类似 Bridge 的直观资产预览,确定符合项目需要后,再下载到本地使用)

- 资产复用度高,多个岗位需要频繁访问同一套项目资产
- 项目伊始,需根据团队岗位配置和项目特点,合理划分项目目录
- 设置权限,只对职责内的资产具有修改权限,避免同时修改造成冲突
- 修复重定向器:避免资产引用混乱

- 岗位协作量大,尤其是大规模场景和大量镜头
- 关卡的拆解清晰合理,建议使用子关卡嵌套,拆分大场景,但后期改动时较繁琐,OFPA 使用世界分区,多人同时编辑一个关卡
- 镜头的拆解,仅保留镜头通用场景,具体对象数据动态生成,解耦镜头数据与关卡通用数据
- 项目周期紧,审查频繁
- 文件审查:修改资产前先执行检出命令,完成后第一时间检入,解除文件锁定,或批量上传优先级高的文件

- 关卡审查:使用 LevelSnapshots 关卡快照插件,创建快照数据,方便关卡预览管理和关卡审查

- 角色审查:创建专门的角色 LookDev 关卡,并启用引擎自带的 HDRI BackDrop 插件,配合 HDRI 环境立方体贴图提供标准的审查环境(而非每次审查都要打开正在编辑中的关卡)
![]()
- 镜头审查:通过 take 镜头试拍,创建同镜头的多个版本,通过少量的数据来保存多个中间过程,可以在 Sequencer 中随时切换版本,提高审查效率

- UE 编辑器项目信息管理平台:借助编辑器蓝图控件、Python 脚本等工具,将工作任务/周期/审查结果等信息直接显示在编辑器中,并根据各岗位的提交操作,自动为审查岗位提供通知信息,从工具和工作流程上提高项目沟通效率
![]()
- 需要同时应对内部协作和外部协作,既要确保协作效率,又要保证信息安全
- 分级管理:单独的服务器,用独立的版本库进行管理,对外仅提供外部资产服务器的 ip 地址/账号等,内部服务器定期获取外部服务器的资产信息

- 新技术带来新方案,匹配新流程,业内没有一套放之四海而皆准的标准方案,本次分享仅供参考启发

- 参考链接:



浙公网安备 33010602011771号