[官方培训] 20-资产及版本管理 | Epic 戴浩军

传送门:[官方培训]20-资产及版本管理 | Epic 戴浩军(官方字幕)_哔哩哔哩_bilibili

 


一. 影视动画项目资产和传统线性动画流程资产的异同

  • 版本控制:本质上是通过记录项目中各类文件的不同版本及变迁过程,为开发者提供类似同步、提交、比较、回退等项目文件管理功能
  • 版本控制的目的:是项目资产等文件(而非业务)

 

  • 影视动画项目资产和传统线性动画流程资产的异同:
    • 相同
    • 都是围绕美术资产文件为主进行管理
    • 以视觉效果呈现为最终目标

 

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

 

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

 

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

 

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

 

 

二. 版本管理使用方法建议

2.1 三大主流版本控制软件

 

SVN

  1. Subversion:
    • 软件结构简单,安装方便,学习门槛低
    • 免费、开源、中央式、有本地缓存

 

  1. SVN 包含客户端和服务端
    • 客户端:tortoisesvn.net(下载相关语言包)
    • SVN 支持命令行操作,但建议使用带 UI 的客户端,便于日常操作

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

  1. SVN 通过 .svn 隐藏目录,记录本地文件和服务器文件之间的关联,但随着时间的推移会占用大量的磁盘空间,此时需要删除 .svn 文件夹,并重新执行检出命令,建立服务器版本库和本地项目文件的关联即可

 

  1. 由于 SVN 无法实时了解哪些文件正在被其它岗位修改,因此可能导致多个岗位同时修改相同的文件,从而导致文件冲突

 

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

 

 

Git

  1. Git:
    • 非常适合管理以代码为主的软件项目,但经过简单调整也可以管理包含大量二进制美术资产文件的 UE 项目
    • 免费、开源、分布式、有本地缓存

 

  1. 下载 Git 客户端,tortoisegit.org
    • 安装后默认只提供 Git 命令行工具,建议使用带 UI 的客户端(如:TortoiseGit),便于日常操作

 

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

 

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

 

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

 

  1. Git 支持本地版本控制,则相关信息必然记录在本地,系统隐藏了 .git 文件夹(记录了文件版本迭代的信息和压缩后的各版本文件),该目录同理也会随着项目推进,变得越来越大

 

  1. 由于 Git 本身是面向代码文件版本控制设计,默认只允许将 50M 以下的单个文件推送到远程仓库,不利于大的美术资产使用
    • 建议配合 Git Large File Storage 使用,突破远程推送单个文件的大小限制

 

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

 

 

Perforce

  1. Perforce:
    • 商业软件(按用户收费,5 人以下免费,但整体不超过 20 个工作区)、中央式、无本地缓存

 

  1. Perforce 包含客户端和服务端
    • 在 Perforce 官网下载 Helix Visual Client 客户端软件并安装

 

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

 

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

 

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

 

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

 

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

 

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

 

  1. 同理,可以配合使用 UE 编辑器中的源码管理,连接 Perforce

 

 

2.2 UE 编辑器中的版本控制操作

  1. 根据不同版本控制,连接源码管理(变绿)

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

  1. 批量提交
    1. 内容变更操作,批量提交

 

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

 

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

 

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

 

  1. 涉及更新覆盖 UE 工程文件的情况,建议操作前最好先关闭 UE 编辑器

 

 

三. 影视动画项目对资产管理的现实需求以及方案参考

  1. 影视动画项目资产体量庞大
    1. 分级别使用资产
    • 根据画面对象的重要性、画面占比等,灵活使用 LOD(而非全部按最高级别堆砌资产)
    • 远景烟雾不必实时流体解算,可使用动态材质配合面片模型
    • 远景模型使用低分辨率贴图
    1. 提高资产复用率
    • 相同元素尽可能复用,常切换服装道具的角色可采用蓝图拼装的方式制作(角色部件拼接成不同版本的角色蓝图资产)

 

    • Virtual Assets 虚拟资产,可以让团队只上传或下载修改的属性原数据,只在必要时传输美术资产数据

 

  1. 需要兼顾 UE uasset 资产和 DCC 资产的管理
    1. 将通用 DCC 资产和项目资产分开管理

 

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

 

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

 

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

 

  1. 岗位协作量大,尤其是大规模场景和大量镜头
    1. 关卡的拆解清晰合理,建议使用子关卡嵌套,拆分大场景,但后期改动时较繁琐,OFPA 使用世界分区,多人同时编辑一个关卡
    2. 镜头的拆解,仅保留镜头通用场景,具体对象数据动态生成,解耦镜头数据与关卡通用数据

 

  1. 项目周期紧,审查频繁
    1. 文件审查:修改资产前先执行检出命令,完成后第一时间检入,解除文件锁定,或批量上传优先级高的文件

 

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

 

    1. 角色审查:创建专门的角色 LookDev 关卡,并启用引擎自带的 HDRI BackDrop 插件,配合 HDRI 环境立方体贴图提供标准的审查环境(而非每次审查都要打开正在编辑中的关卡)

 

    1. 镜头审查:通过 take 镜头试拍,创建同镜头的多个版本,通过少量的数据来保存多个中间过程,可以在 Sequencer 中随时切换版本,提高审查效率

 

    1. UE 编辑器项目信息管理平台:借助编辑器蓝图控件、Python 脚本等工具,将工作任务/周期/审查结果等信息直接显示在编辑器中,并根据各岗位的提交操作,自动为审查岗位提供通知信息,从工具和工作流程上提高项目沟通效率

 

  1. 需要同时应对内部协作和外部协作,既要确保协作效率,又要保证信息安全
    1. 分级管理:单独的服务器,用独立的版本库进行管理,对外仅提供外部资产服务器的 ip 地址/账号等,内部服务器定期获取外部服务器的资产信息

 

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

 

  1. 参考链接:

 

 

 

posted @ 2024-05-24 20:11  哟吼--小文文公主  阅读(194)  评论(0)    收藏  举报