UE资产以及版本管理
[官方培训]20-资产及版本管理 | Epic 戴浩军(官方字幕)_哔哩哔哩_bilibili
UE影视动画项目资产和传统线性动画流程资产的异同
相同点:核心工作流和资产类型相似
差异
uasset文件
工程资产相对零散,关系复杂,手动信息追踪难度较大
UE对部分资产会进行自动关联修改
例如材质赋予不同实例所需要的材质设置不符合时UE会自动进行设置。
在骨骼网格体中添加插槽会自动的在对应的骨骼资产中进行修改。
通用资产可能会被多个岗位的资产共同引用
UE版本管理使用方法建议
三大主流版本控制软件介绍(Perforce、Git、SVN)
SVN
Git
下载好Git服务后可以去下载个GUI版本
举例为tortoiseGit
Git特点
允许在单机状态下在本地进行本地管理,联网后再把特定的版本推送到服务器中的远程版本库。
git本身是面向代码文件版本控制设计,因此默认只支持将50m以下的文件推送到远程仓库。
通过下载LFS可以帮助突破限制
远程版本库的创建
1.在服务器上安装git软件
2.创建一个.git结尾的文件目录
3.在文件目录下创建bare版本库
4.在局域网内共享git文件目录
5.客户端push到服务器上的目录地址
Perforce
客户端P4V
服务端P4D
客户端使用
可以通过P4Admin管理软件在客户端电脑上远程管理服务器上的版本库
创建账号:
控制软件的比较
UE编辑器版本管理设置和使用(以SVN为例)
1.可以在UE内部开启源码管理与SVN服务进行关联
2.针对要修改的文件使用检出功能来获得服务器上最新的文件并且可以锁定这个文件来通知其他用户防止冲突修改。
3.修改完成以后使用检入命令来提交并结束锁定状态。
4.批量提交
UE影视动画项目对资产管理的现实需求以及方案参考
影视动画项目资产体量庞大
问题一:影视动画项目资产体量的庞大带来了大量的存储和传输成本。问题产生的原因是影视动画项目对美术的极致要求。但在实际项目中,很多效果有不同的实现路径,我们应该尽可能地采用性价比较高地方式来表现画面效果。根据画面对象地重要性,画面占比来分级别使用资产。而不是全部按最高级别堆砌资产。
解决办法:
1.比如远处地物体使用较低级别地LOD
2.某些大面积不需要实时交互的中远景烟雾特效不需要使用高精度流体解算来表现,而是使用面皮模型配合材质效果来代替。同样可以提供较好的整体美术效果。
3.对于一些确定不会近距离观察的模型可以考虑直接使用低分辨率的贴图,这样可以大大减小资产的体量。
4.尽可能提高资产的复用率。
5.对于需求类似的高精度贴图模型等,尽量只使用一份资产。
6.对于需要经常切换服装或道具的角色尽量使用蓝图拼装的方式制作。
7.在UE5中使用nanite技术以及静态虚拟纹理技术,允许我们在项目中直接使用超高精度的影视模型资产和贴图资产。
问题二:在大部分情况下,我们在UE编辑器中只会针对资产的编辑器属性进行调整,而不会对文件本身进行修改。每次修改属性都需要将整个uasset数据资产上传到服务器,会带来很大的存储和上传成本。
解决办法:
针对这个问题,UE5引入了Virtual Asset技术,可以让团队只上传或下载属性的元数据,而只在必要的时候才处理美术资产数据。在UE5.1版本中,虚拟资产技术率先提供了对贴图和音频资产的支持。
需要兼顾UE资产和DCC资产的管理
问题:由于UE采用了UAsset格式资产来提高数据的完整性和读写效率,造成了团队通常需要维护UE项目美术资产和外包DCC美术源文件。
解决办法:
比较直接的思路:
1.把通用DCC资产和项目资产分开管理。通过盘符挂载的方式从本地加载远程项目盘中的资产,手动挑选并下载到本地导入UE使用。
2.通过开发UE编辑器插件并建立UE通用资产库。
3.在服务器中通过UE工程的形式将各类资产分类整理成库,通过远程引用的方式加载到本地作为制作参考或资产效果预览。
4.通过类似bridge或者sketchfab提供的高性价比的资产预览功能,确定符合项目需要后下载到本地使用,同时可以针对模型精度,贴图提供自动化的不同精度的资产文件。
资产复用度高,多个岗位需要频繁访问同一套项目资产
问题一:某一个资产的变化可能会影响到多个岗位的工作。这带来了资产精简,修改高效等好处,但同时对资产目录划分,权限管理提出了更高的要求。
解决办法:
1.我们在项目初始就根据团队岗位配置,和根据项目特点划分项目目录
2.在版本控制软件的服务端进行合理的用户组别和对应的项目目录权限进行设置,使每个岗位只有权限获取到岗位工作必要的资产,只对职责内的资产具备修改权限。这样即避免了多岗位同时修改资产带来的冲突风险,也能够大大降低客户端电脑对项目文件传输和存储的成本。
问题二:在UE编辑器中对于资产进行移动,重命名等操作时有时会产生重定向器。
原因:这是由于当前文件正在被其他资产引用,无法直接更新引用,引擎会创建默认隐藏的重定向资产来保持这个引用,这些重定向器在系统资源管理器中可以看到,同样是UAsset格式的文件。
解决办法:通过自带的修复重定向器功能来修复。
岗位协作量大,尤其是大规模场景和大量镜头
解决办法:
1.项目关卡,镜头拆分合理,使其能够确保并行工作。
2.对于关卡而言可以使用子关卡嵌套的方式,预先按岗位对大规模复杂关卡进行拆分,无论是按区域拆分还是按照光照关卡景物关卡甚至是室内室外关卡进行拆分,总体目标是为了方便将不同的关卡编辑工作保存在不同的关卡文件中,以此方便协作。
这样做的缺点是:关卡的编辑工作必须预先划分清楚,后期改变起来比较繁琐。
3.在UE5中可以发挥世界分区或者One File Per Actor(OFPA)的优势,允许在不提前划分子关卡的情况下多人可以同时编辑一个关卡,这是由于在传统的关卡管理方式中,所有actor对象的属性都是保存在UMap二进制关卡文件中,无法由多岗位分别进行同时修改后进行合并工作,而开启OFPA后关卡中Actor对象的属性信息将保存在关卡外部的针对每个actor对象创建的文件中,从而允许多人同时编辑同一个关卡,只要不同时修改相同的actor对象即可。
如果以开放世界为模板创建关卡将会自动勾选OFPA
4.对于镜头文件,通过合理区分场景和镜头对象的方式来科学划分资产,比如在特定镜头中才会出现的对象,包括灯光相机后处理这些特定的场景对象,我们可以在sequence中通过可生成的方式来动态生成这些对象,而在关卡中只保留所有镜头都需要看到的通用对象,通过这种方式,将镜头特定数据和通用关卡数据进行解耦,不仅大大降低了多岗位协作过程中导致资产冲突的可能,也降低了镜头修改时产生的资产体量
OFPA的使用
确保勾选OFPA
选中actor修改打包模式为外部
属性文件会放到__ExternalActors__文件目录下
项目周期紧,审查频繁
这种问题需要通过快速迭代的方法来针对。
一方面可以通过IT手段确保传输效率,
另一方面也需要通过合理的任务拆分,和良好的项目管理和日常操作习惯来提升迭代效率。
比如每个岗位在修改资产前都应该使用检出命令通知其他岗位该文件正在编辑。在修改完成后第一时间检入,解除文件锁定。
还可以将多个相互关联的文件的修改划分到多个合理划分的变更列表中,修改完成后优先提交这个变更列表,让审查岗位优先看到这个镜头效果。
UE5提供的插件:
1.关卡快照:
可以让我们对关卡编辑的某个时间创建快照数据,相比手动另存关卡,关卡快照数据更简洁,长期保存也不会带来大量的存储成本,并且会根据时间自动命名文件,同时提供了专门的编辑器来预览管理快照数据。
2.HDRIBackdrop
对于角色资产的审查,我们首先可以通过蓝图拼装的方式将多个角色部件拼接成不同版本的角色蓝图资产,降低资产的重复度,同时可以创建专门的角色lookdev关卡,并且启动自带的HDRIBackdrop插件配合hdri环境立方体贴图来提供标准的审查环境,而不是每次审查都要打开正在编辑中的关卡。
3.镜头
4.制作工具
需要同时应对内部协作和外部协作,既要确保协作效率,又要保证信息安全
1.分级管理方式:IT团队将内部和外部团队使用的分别保存到单独的服务器,用独立的版本库进行管理,对外只提供外部服务器的IP地址,账号等信息,而内部版本库服务器会定期从外部版本库服务器获取资产,或者向外部版本库服务器新增参考资产,而外部团队完全感知不到内部版本库服务器的存在,在保证信息安全的同时还能够缓解内部资产服务器的压力。
2.在内部局域网中,通过限制只有特定MAC地址列表中的客户端电脑才能访问内部版本库服务器,以此来增强安全性。