优酷动漫 - 场景模型资产标准
版本信息:
版本号 | V1.0 | 时间 | 2023-08-01 |
---|
场景&道具模型规范
模型通用属性
模型命名规则
模型命名规则供参考,建议尽量靠近该标准,以各公司/工作室内部规范为准
(1)资产库模型存储命名结构
- [AssetName][Descriptor][OptionalVariantLetterOrNumber]
- 【资产名称】【资产后缀】【多个变体版本】
**命名规范:**XXX(模型名称)_XXX(模型ID)_LODX.XXX(格式名)
(2)虚幻引擎中模型命名结构
- [AssetTypePrefix][AssetName][Descriptor]_[OptionalVariantLetterOrNumber]
- 【资产类型】【资产名称】【资产后缀】_【多个变体版本】
命名规范(虚幻引擎中文件完整命名规范详见【虚幻资产命名规范】):
- **静态网格体:**SM_XXX(模型名称)_XXX(模型ID)_LODX(LOD等级)
- **骨骼网格体:**SKM_XXX(模型名称)_XXX(模型ID)_XXX(版本号)
注意事项:
(1)禁止出现中文,一律采用 英文字母,数字 组合命名。
(2)禁止出现空格和特殊字符,空格一律使用英文下划线 “” 。
(3)模型命名应该与其对应的一套贴图相对应(纹理贴图名称详见【2. 纹理贴图规范】)。
(4)资产名称的命名规范:在模型名称以及描述命名部分,即一个完整的命名或单词(拼音)组合中,始终使用帕斯卡命名法则(每个单词都以大写开头,各单词之间不以空格断开或连接号"-",下划线"“等符号连接,例如:DeserEagle,RocketPistol,DuZhong,QiuYueHua等)。
模型单位
(1)长度单位一律参照Maya的 厘米单位 为标准,模型参考现实尺寸制作。
(2)1 虚幻单位 = 1 厘米(cm)
模型轴向
(1)Maya资产制作中,一律使用 正Y轴向上,正Z轴向前。
(2)虚幻引擎中,所有模型以 正Z轴向上,正X轴向前 。
模型中心点:
(1)一般位于 对象的底部中心处。
(2)模型需要回归到原点附近,不能出现中心点和模型距离非常远的情况。
(3)如果模型(如石头,树木等)需放置在平面(如桌面,地面等),将中心点放置于模型和平面接触的地方。
历史和冻结变换:
(1)单体模型
- 单体模型在确定模型尺寸后删除历史,冻结变换。
- 删除历史,冻结变换前,需注意模型中心点位置(模型原点)。
(2)场景模型
- 场景模型删除历史,变换只冻结缩放信息,保留物体位置信息和旋转信息。
- 场景模型使用关联复制(Maya中为特殊复制,几何体类型选择实例),关联复制物体不要进行实例转模型**(实例复制能用尽用)**。
模型UV
(1)所有模型网格,都不应缺少 UV(模型碰撞体除外)。
(2)使用UDIM(UE中开启SVT流送虚拟纹理)。
- 推荐使用UDIM的场景:
- 场景中存在大量遮挡元素。
- 纹理细节(单个贴图大于2K)要求特别高的模型采用UDIM,需注意UDIM的象限分配不要过多。
- 不推荐使用UDIM的场景:
- 常驻内存容量不足(显存不足8GB时)。
- 没有额外的性能预算时。至少为虚拟纹理准备1~3ms性能预算。
- 需要使用的纹理分辨率很低(单个贴图小于等于1K)。
- 模型存在遮罩材质。
- 只有极少的纹理需要使用虚拟纹理。场景中大部分模型UV是单象限,不推荐少量模型使用UDIM。
- 需要使用不同UV通道进行纹理采样。
- 制作UDIM多象限时,需注意:
- UDIM索引从1001开始(下图为UDIM象限示意),UDIM纹理U向计数限制为10个,V向限制在900个象限。
2. 将同一类型的贴图放在一起,通过UV的偏移采样不同的纹理区域。
- 例如:墙砖纹理都放在同一套UDIM纹理集中(匹配墙砖模型UV),制作几种不同的墙砖纹理贴图,通过UV偏移采样不同的墙砖纹理,达到降低墙砖纹理重复度的目的。
3. 将经常同时出现在画面中的的模型的UV放在同一套UDIM中。
- 例如:下图建筑大门红框、绿框和蓝框所指部分,考虑到复用性,模型制作中会拆分成不同的组件,方便后期进行更复杂、更随机的组装;但屋顶和支撑屋顶的斗拱部分,以及支撑的柱子部分,即使拆分开来,但在使用中经常搭配使用,使用相同的模型组件组合成不同的建筑,那么这几个部分就可将UV排列在同一个UDIM集中,并使用同一套材质和UDIM纹理集,能够极大的降低引擎中材质的数量,以及纹理采样的次数和频率。
(3)模型UV规范
1. UV 分割规范,摆放合理,利用率高,尽量占满 UV 区域。
2. 部分模型UV需拉直、铺平处理,例如:管状模型。
3. UV 之间需至少间隔 8-16 像素(对应 2K-4K 贴图精度)。
4. UV 方向应尽量保证一致,方向应当尽量从上至下,如为了方便摆放而旋转部分 UV 区域,则需要保证同一个部件的 UV 方向一致, UV 旋转之后需要保证方向一致。
5. UV面朝向:无特殊情况下应当保证UV面朝向一律朝前摆放。
6. UV 切割需要正确规范。尽量在隐蔽处等位置进行 UV 的切割。模型设置硬边的位置 UV 需要切开。
模型拓扑要求
(1)整理模型文件,尽量做到最大优化,看不见的区域不需要的面要删除,合并断开的顶点,移除孤立的顶点。
(2)四边面模型布线注意不要出现螺旋线。
(3)四边面模型注意模型边缘卡线,添加保护边,以达到模型细分后不出现模型形变,UV不出现拉伸为准。
模型碰撞体(针对UE设置)
(1)在模型命名上注意添加网格体前缀进行区分。
(2)注意事项:
- 命名规则中"RenderMeshName"名称必须与3D软件中碰撞网格体关联的渲染网格体的命名一致。
- 所有创建的碰撞体应当删除历史冻结变换。
- 可以把渲染网格体和碰撞网格体导出到同一个FBX文件中。
- 如果一个对象的碰撞由多个凸包所定义,那么这些凸包相互未交叉时产生的结果为最佳。
(3)命名规则:
- UCX_[RenderMeshName]_##:自定义凸包,可以创建包裹模型的任何完全封闭的凸型3D形状。注意一定需要完全封闭。
- UBX_[RenderMeshName]_##:盒体,必须使用常规的矩形3D对象来创建。无法移动顶点或使其改变为矩形棱柱之外的其它形状。
- UCP_[RenderMeshName]_##:胶囊体,两端半圆的圆柱体对象。胶囊体不需要过多分段(8段为佳),不能对单个顶点进行移动。
- USP_[RenderMeshName]_##:球体,不设置过多分段(8段为佳),不能对单个顶点进行移动。
模型软硬边(光滑组)
模型尽可能少用硬边(硬边会导致三倍性能开销),另外硬边的模型在转化成Nanite模型,也会对Nanite的Cluster构成一定的影响。
拆分颗粒度
(1)模型拆解至模型单体元素。
(2)如果模型是由多个物体组装成的单体,则将多个物体导出为一个文件即可,不要合并为一个Mesh导出(例如:一把剑是由剑体和剑鞘组成,将两者作为一个单体,切记剑体和剑鞘不要合并为一个模型)。
(3)建筑模型:
- 可拆解为各种零部件,形成模块化组件,以方便后期组装。
- 零部件尺寸需规范化,模块的长、宽、高统一标准,例如墙体可拆分为墙角和部分墙体。
- 如果屋顶砖瓦无法很好的拆分,可将不可拆分部分作为模块单体处理。
模型组装要求
关联复制(实例复制)能用尽用,导出时要选择保存为实例。
普通模型
普通模型面数
非Nanite的普通模型,面数限定为:单模型组件LOD0在20万面以内。
模型LOD
(1)资产库模型储存命名规范:XXX(模型名称)_XXX(模型ID)_LODX.XXX(格式名)
(2)LOD模型等级:定义为5个LOD等级,容差值为2。
(3)LOD模型要求:减免均匀,尽可能避免UV拉伸、缺失等情况。
(4)LOD储存方式:格式fbx,要求:每一个lod都单独分开存储。
(5)移动端LOD设置:移动端单模型组件限定最高面数为65535个顶点。为适配移动端和PC端,模型单组件LOD0最高面数不超过20万面,其他LOD等级中,需满足面向移动端的面数限制,在应用时可直接将模型面数限制在目标设备的最大顶点数量之内的LOD上。例如:一个石头模型的LOD0面数为15万面,其LOD1的面数为6万面,在面向PC端时,可使用模型的最高面数,即LOD0;在面向移动端设备时,最高应当加载至其模型的LOD1。
Nanite模型
Nanite模型面数规范
(1)Nanite模型的基础需求:当模型在屏幕中最大占比时,每一个像素需对应一个三角面。
(2)Nanite面数评估公式:
Nanite最大模型面数 ≈ 最终目标像素数(屏幕分辨率长宽乘积) × 屏幕最大占比 ÷ 模型视口可见部分占总模型的百分比
例如:一个长方体模型需要在一个1920*1080的屏幕上显示最大时需要铺满整半个屏幕,那么最终目标像素数为1920×1080=2,073,600,模型可见部分在屏幕的百分比为0.5,模型视口可见部分占总模型的百分比粗略估算为0.5,则长方体模型Nanite所需面数为:2,073,600×0.5÷0.5=2,073,600。
Nanite模型UV处理
模型UV拆分时不要太碎,过于碎片化的UV容易影响Nanite模型生成的Cluster数量,进而影响性能。
Nanite模型法线
**模型光滑组:**尽可能少用或不用硬边(不要将模型所有的法线打散,可见上述模型软硬边图片示意)。
如果模型的顶点数和三角形面数的比值大于1,会影响渲染开销;如果该比值大于2,会出现问题;该比值绝对不可大于3。
Nanite网格体可搭配的组件类型
(1)静态网格体
(2)实例化静态网格体
(3)分级实例化静态网格体
(4)几何体集合
Nanite模型无需LOD处理
模型格式
FBX
- FBX文件版本:FBX2020.2及以上版本;
- FBX文件类型:二进制文件;
源文件
- Maya ma文件;
- Substance Painter spp文件;
UE 资产文件
- uasset文件;
纹理贴图规范
PBR流程选择
按照PBR流程中金属度流程(DirectX标准)贴图要求出图,主要贴图为(其他贴图自行添加):
- BaseColor
- Specular(按需)
- Roughness
- Metallic
- Normal(DirectX标准,法线为切线法线)
- Emission
- Displacement
纹理贴图命名规则
纹理命名规则供参考,建议尽量靠近该标准,详细以各公司/工作室内部规范为准
(1)一般模型贴图命名要求(适用于单象限UV模型)
- **无需LOD等级贴图命名:**XXX(模型名称)_XXX(模型ID)_XXX(贴图属性).XXX(格式名)
- 法线、置换贴图除外
- **需LOD等级贴图命名:**XXX(模型名称)_XXX(模型ID)_XXX(贴图属性)_LODX.XXX(格式名)
(2)使用UDIM的模型贴图命名要求
- 无需LOD等级贴图命名:XXX(模型名称)_XXX(模型ID)_XXX(贴图属性).10XX(UDIM索引从1001开始).XXX(格式名)
- 法线、置换贴图除外
- 需LOD等级贴图命名:XXX(模型名称)_XXX(模型ID)_XXX(贴图属性)_LODX.10XX(UDIM索引从1001开始).XXX(格式名)
(3)无缝纹理贴图命名要求:
- **无需LOD等级贴图命名:**XXX(模型名称)_XXX(模型ID)_XXX(贴图属性).XXX(格式名)。
- **需LOD等级贴图命名:**XXX(模型名称)_XXX(模型ID)_XXX(贴图属性)_LODX.XXX(格式名)。
(4)纹理贴图导入虚幻引擎中模型命名规范要求(虚幻引擎中文件完整命名规范详见【虚幻资产命名规范】)
- T_XXX(模型名称)_XXX(模型ID)_XXX(贴图属性)_X(贴图属性, BaseColor=D; Roughness=R; Metallic=Me; Normal=N; Emssion=E; Displacement=Dp)
注意事项:
(1)禁止出现中文,一律采用 英文字母,数字 组合命名。
(2)禁止出现空格和特殊字符,空格一律使用英文下划线 “” 。
(3)贴图命名应该与其对应模型的命名相对应(模型名称详见【1. 场景&道具模型规范】)。
(4)资产库纹理存储的命名规范:在贴图名称以及描述命名部分,即一个完整的命名或单词(拼音)组合中,始终使用帕斯卡命名法则(每个单词都以大写开头,各单词之间不以空格断开或连接号”-",下划线"“等符号连接,例如:DeserEagle,RocketPistol,DuZhong,QiuYueHua等)。
纹理贴图分辨率
(1)纹理贴图长宽分辨率统一为 2 的幂次方(支持非正方形贴图,但长宽分辨率需满足要求),如果想使用Mipmap,纹理长宽分辨率不能超过8192px(8K)。
**虚幻支持纹理格式:**bmp、float、pcx、png、psd、tga、jpg、exr、dds立方体贴图纹理(32位 / 通道、8.8.8.8 ARGB 32 bpp、未签名)、hdr立方体贴图纹理(LongLat展开)
(2)使用UDIM(SVT流送虚拟纹理)
- UDIM纹理U向计数限制为10个,V向没有限制。制作纹理时要注意UV分配U向是否超过10个。
- 单张贴图的分辨率不超过4096px。
- 各UDIM图像可启用不同分辨率的非统一像素密度虚拟纹理。需注意分配纹理贴图的大小,模型有些部分的贴图精度需求不高时,该部分应尽量采用比较低的分辨率。
- 例如:导入由4个图像文件构成的UDIM虚拟纹理(两个2048×2048纹理和两个128×128纹理),并以2×2模式排列,则逻辑上虚拟纹理将采样此类图像,如同单个4098×4098纹理。UE会拉伸128×128小图像以填充2048×2048大图像所填充的相同区域,而不影响硬盘或运行时内存的使用。在本例中,将128×128小纹理填充到2048×2048纹理分辨率不会消耗内存。
纹理贴图格式
(1)需要使用颜色RGB信息的贴图导出:选择导出8位JPG或PNG。保持导出的颜色纹理JPG或PNG文件即可,无需刻意二次压缩。
(2)地形Height高度图一律使用16bit PNG或16bit RAW格式。
(3)Displacement置换贴图,统一使用exr和高压缩比的格式储存两张,可供选择(方便后期在虚幻引擎中制作POM视差材质效果,以及方便为静态网格体增加细节)。
纹理贴图通道合并和体积压缩
优酷可提供一套Substance Painter中的导出模板,与第三部分中提及的母材质配合使用。
(1)通道合并(只能将使用灰度信息的贴图进行通道合并,由于虚幻引擎中各种压缩方式对G(绿色通道)压缩比例都是最小的,因此将重要的Roughness贴图放在G通道)
- 根据目标材质的材质属性(详见UE母材质),在制作材质贴图时判断哪些通道进行合并,并在制作好贴图后,指认目标母材质,在后续复用中,始终保持(如无特殊需求情况下)使用最初指认的母材质。
- 目标材质的材质属性,影响着主要需要哪些贴图,以及哪些贴图可以利用合并通道(只需要灰度信息的贴图)来进行压缩贴图数量和贴图的体积,以下列举几种常用的通道合并的方案:
- ORM(或称为ARM)贴图:将AO、Roughness、Metallic三种灰度贴图(不需要颜色信息的贴图)按先后顺序分别合并在一张图中的R、G、B三个通道,并将贴图命名后缀改为三个通道所携带的贴图的缩写。该贴图类型适用于金属或非金属和金属相结合的材质。
- ORD贴图:将AO、Roughness、Displacement三种灰度贴图(不需要颜色信息的贴图)按先后顺序分别合并在一张图中的R、G、B三个通道,并将贴图命名后缀改为三个通道所携带的贴图的缩写。该贴图类型适用于普通非金属(或全金属)、不透明、非遮罩的材质。
- ART(或称为ORT)贴图:将Opacity、Roughness、Translucency三种灰度贴图(不需要颜色信息的贴图)按先后顺序分别合并在一张图中的R、G、B三个通道,并将贴图命名后缀改为三个通道所携带的贴图的缩写。该贴图类型适用于普通非金属、需要次表面颜色、需要使用遮罩的材质。
- DRA(或称为DRO)贴图:将Displacement、Roughness、Opacity三种灰度贴图(不需要颜色信息的贴图)按先后顺序分别合并在一张图中的R、G、B三个通道,并将贴图命名后缀改为三个通道所携带的贴图的缩写。该贴图类型适用于普通非金属、不透明、有遮罩的材质
(2)可将Opacity遮罩信息存储在纹理的Alpha通道里。
(3)纹理分层:因UV象限使用多数为单象限,在贴图精度不够的情况下,需要将贴图拆分为各种贴图的Mask加底层循环贴图。例如有花纹的衣服贴图,可将花纹单独拆分出来BaseColor、Normal、Roughness和Opacity贴图,将底层布纹单独导出一套分辨率较低的贴图,在引擎中使用material layer组装。
- Tangent Normal和Micro Normal(Addition Normal)(按需添加):模型基本法线贴图(烘焙出来的Normal贴图)和为增加模型细节添加的法线贴图需要拆分开放置,在需要时通过法线混合的方式添加到模型材质或普通材质上(基础母材质(Master Material)会开放相应的开关和参数)。
纹理贴图LOD
法线贴图
(1)需按照对应的LOD等级进行烘焙,LOD降低一个等级就要按照模型最高精度到此LOD等级进行重新烘焙。
(2)法线烘焙时应使用平滑UV,切线法线进行烘焙。
置换贴图
(1)置换贴图可不重新烘焙不同LOD等级的贴图。
(2)置换LOD贴图烘焙也需要按照对应的LOD等级进行烘焙,LOD降低一个等级就要按照模型最高精度到此LOD等级的上一级(比相应的法线LOD烘焙等级减少一个等级)进行重新烘焙。
场景模型材质规范
材质建立和规范化
UE材质
(1)母材质(完整命名规范详见【虚幻资产命名规范】)
优酷可提供一整套场景母材质和配套的可视化资产库管理软件,支持资产出入库,过程中可确保材质实例贴图、参数的自动连接,规范化资产管理。 若使用公司自有的母材质,通常材质将具备如下要求,供参考:
- 母材质主要类型:
- Surface母材质(通用材质)& Surface母材质VT(开启虚拟纹理特性时,统一更换为改VT母材质)
- 命名规范:M_Surface_Material & M_Surface_Material_VT
- 材质属性
- Material Domain:Surface
- Blend Mode:Opaque
- Shading Model:Default Lit
- Decal母材质(延迟贴花)& Decal母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
- 命名规范:M_Decal_Material & M_Decal_Material_VT
- 材质属性
- Material Domain:Deferred Decal
- Blend Mode:Translucent
- Fuzz母材质(覆盖物)& Fuzz母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
- 命名规范:M_Default_Fuzz_Material & M_Default_Fuzz_Material_VT
- 材质属性
- Material Domain:Surface
- Blend Mode:Opaque
- Shading Model:Cloth
- Foliage母材质(遮罩)& Foliage母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
- 命名规范:M_Foliage_Material & M_Foliage_Material_VT
- 材质属性
- Material Domain:Surface
- Blend Mode:Masked
- Shading Model:Two Sided FoIiage
- Transmission母材质(透明或半透明)& Transmission母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
- 命名规范:M_Default_Transmission_Material & M_Default_Transmission_Material_VT
- 材质属性
- Material Domain:Surface
- Blend Mode:Opaque
- Shading Model:Subsurface
(2)材质函数
- 命名规范:MF_XXX(材质函数的作用类型命名)
- 将通用的材质节点,制作成材质函数,通过复用材质函数来减少材质节点数量,优化材质的编译。
(3)材质实例
- 命名规范:MI_XXX(材质名或模型名)_XXX(材质或模型ID)_XXX(贴图分辨率,如2k;4k;8k)
- 按照模型或贴图材质的材质属性选择对应的母材质。
(4)材质图层
- 命名规范:ML_XXX(材质图层名)
(5)材质图层混合
- 命名规范:MLB_XXX(材质图层混合名)