RhinoFreak 发表于 2022-12-8 15:15

Unity技术美术(TA)指北——Assets资产

原文指路:
资产管线是一个游戏引擎的基础,其决定了工程中资产的状态并且更新其相关系统。资产管线还能被用户定义的生产管线替代
一个稳定的资产管线对于工程来说,可以减少艺术家添加不符合技术需求(比如过高的三角形面数)的资产的风险
一个良好的资产管线可以帮助你的团队统一命名规范,文件路径,预制体,以及其他的设置项。从而避免像是资产重复,依赖关系破坏或者捆绑资产时出现的问题
该部分会介绍Unity中可用的用来创建安全高效的资产管线的工具
A non-Destructive Asset Pipeline

一个非破坏性的资产管线
组织资产

首先,你的团队应该在资产工作流上达成一致,像是需要创建的资产列表,由技术需要决定的资产预算,以及开发的开销
有一个方法可以组织所需要的关卡元素:

[*]Large elements:这些元素不能用独特的纹理制作,必须用平铺或者是模块化的。比如墙、地面、悬崖、屋顶、建筑等等
[*]Medium-sized props:这些道具有独特的纹理,像是桶、箱子、岩石、门等等
[*]High repetitive,small elements:高重复性的小元素,用来传递整个场景的尺寸,比如鹅卵石、树叶、螺丝、门栓等
限制好每个资产的时间,面数(polycount)以及纹理分辨率,然后创建非必要资产,并将必要资产的数量降至最低
使用变体



另一个资产导入工作流的关键是从3D模型创建Prefab。在生产时并不推荐直接将FBX模型转变成Prefab,这是因为当修改FBX文件时(比如几何层级的改变),Prefab就会被破坏。这就需要你去在场景中重新放置所有的更新后的实例,该问题的解决方案依赖位于Prefab Variants
Prefab变体允许你独立于场景来制作美术资产,使其能够完美地用在prototyping(原型开发)中。当创建一个游戏世界时,这是非常推荐使用的协同迭代的方式。
对于常规Prefab来说,使用变体的好处在于可以对原始模型进行修改,同时其也充当了FBX模型Prefab的“弱参考”。这允许你可以方便地添加,分割,或者去除模型的元素,而不需要重新创建Prefab。美术生产者可以修改FBX模型,然后Prefab变体就会据此来更新。变体还能允许艺术家在不改变工程的情况下,在环境背景中查看美术变化
同时,考虑使用Nested Prefabs来促进场景中的团队合作
使用AssetPostProcessor自动化资产设置

在生产中可能会涉及到成千上万的资产,我们需要避免手动在Inspector中手动设置每个资产
AssetPostProcessor API可以帮助你hook到导入管线中,并在导入资产前后运行脚本。只需添加资产到脚本中来进行必要的更改。你可以只在一个脚本中更改设置,其会自动将更改应用到工程中的资产上
导入资产

你可以将DCC工具中创建的资产直接导入到Assets文件夹中,Unity会识别它们。并且在你修改这些资产并保存时,Unity也会检测到并且重新导入资产
不管你是从脚本还是Inspector面板更改资产的设置项,其源文件不会受到任何影响。作为替代,Unity会在内部创建一个和你的设置项匹配的资产的game-ready representation(可以理解成一种能导入到场景的存在形式)。
我们需要在Unity Editor内部移动或重命名文件(而不是在计算机的资源管理器中),这样才能同时移动与之相关联的.meta文件,其中存储了资产导入的相关设置数据
Unity的importer支持各种不同的资产类型,包括大多数普通的3D模型,纹理以及音频文件,在documentation中查看完整列表
你也可以通过Scripted Importers来使用C#创建自己的importer,Scripted Importers允许你处理Unity没有原生支持的文件类型。可以在Package Manager中找到一些例子,包括Alembic和PSDImporter
资产数据库Asset Database

对于大多数资产类型,Unity需要将数据转化成游戏中能使用的格式,其将这些转换后的资产文件和它们相关的数据都存储在了Asset Database中
这个格式转化是必要的,因为大多数的文件格式都为了节省存储空间而做了许多的优化。而在游戏中,我们希望资产的数据都已经为硬件(比如CPU,图形或音频硬件)准备完毕,或者能够随时使用(the asset data needs to be in a format that is ready for hardware or immediate use, such as the CPU, graphics, or audio hardware .)
举个例子,当Unity导入了一份.png文件作为纹理时,在运行时并不是使用这张.png文件,而是在导入时就为这张图片创建了一个不同格式的representation,存储在了Library folder > Project window。而Unity中的Texture类会使用这个导入的版本,并将其提交给GPU来进行实时的显示
如果你后续修改了你已经导入的资产的源文件(或者其依赖项),Unity会重新导入该文件,并且更新数据的导入版本,更多该流程的信息查看Refreshing the Asset Database
资产数据库还提供了AssetDatabase API,你可以用来获取到资产并控制和自定义其导入流程
在环境中查看3D模型

在传统生产流程中,大多数时候一个新的视觉资产需要许多不同的人员(比如艺术总监)进行检查和把关,预先测试好材质和资产的表现是唯一能确定其能在场景中正常工作的方法
Unity提供了Look Dev解决方案,一个基于图片的光照工具(目前仅支持HDRP)。你可以通过它来观察资产在不同光照环境下的表现。首次使用的时候必须先创建或加载一个Environment Library,且保证使用的图片是HDRI以更好地模拟显示世界的光照



FBX Exporter

FBX Exporter Package是Unity和Autodesk联合开发的一个包,它提供了一个丝滑的往返工作流,使得3D模型可以在Unity和Autodesk Maya, Autodesk Maya LT, or Autodesk 3ds Max之间传递
通过FBX导出器,你可以将Unity中的场景导出为FBX文件并导入到美术软件中,具体来说,你可以导出Unity-ready FBX geometry and animation,并安全地合并你的修改到那些些资产中
举个例子,你可以导出Unity中的关卡或是过场和动画来让艺术家和动画师们可以在他们常用的DCC软件中加载和迭代( you can block out a level in Unity or prototype an animation or cutscene that artists and animators can then load and iterate on in their preferred DCC tool.)FBX导出器支持层级,光照,网格,材质,纹理以及摄像机参数
除此之外,如果你正在做一个性能压力较大或者图形要求较高的游戏(比如开放世界),你需要尽早确定游戏能够处理这种复杂度。原型资产在创建的时候最好就按最终的生产资产的规格来,例如三角形面数和shader复杂度



左侧是用Unity ProBuilder制作的灰盒资产,右边是用DCC软件完成并重新导入回Unity的资产

用其他DCC工具工作

Unity内部使用FBX文件格式,所以推荐你在生产中也使用FBX,并避免其他专有的模型文件格式
一个例外是当你使用Blender之类的DCC软件时,你可以将你的3D资产直接用.Blend文件的形式保存在Unity的Asset文件夹中,但是这需要你团队中的所有人都安装并使用相同版本的DCC软件
Unity will import the mesh with all nodes in their saved position, rotation, and scale . Pivot points and names will also be imported – along with vertices, polygons, triangles, UVs, normals, bones, skinned meshes, and animations.当你在其他支持的DCC软件中迭代资产的时候,Unity会更新相关的GameObject,并在你保存文件的时候将改动反映到Unity编辑器中
在与Blender或其他DCC软件互通数据时,还是推荐使用FBX文件来保证与Unity功能(如Cloud Build)的兼容性。如果你创建了原型或灰盒场景,艺术家们可以导出为FBX并在DCC中在这些资产上工作
在Project Settings中调整默认的Export to FBX选项
更多资料

Artist workflows with Maya and Unity
Roundtrip easily between Unity and Autodesk
Tips for working more effectively with the Asset Database
页: [1]
查看完整版本: Unity技术美术(TA)指北——Assets资产