版本信息:

版本号 V1.0 时间 2023-08-01

场景&道具模型规范

模型通用属性

模型命名规则

模型命名规则供参考,建议尽量靠近该标准,以各公司/工作室内部规范为准

(1)资产库模型存储命名结构

  • [AssetName][Descriptor][OptionalVariantLetterOrNumber]
  • 【资产名称】【资产后缀】【多个变体版本】

**命名规范:**XXX(模型名称)_XXX(模型ID)_LODX.XXX(格式名)
(2)虚幻引擎中模型命名结构

  • [AssetTypePrefix][AssetName][Descriptor]_[OptionalVariantLetterOrNumber]
  • 【资产类型】【资产名称】【资产后缀】_【多个变体版本】

命名规范(虚幻引擎中文件完整命名规范详见【虚幻资产命名规范】):

  1. **静态网格体:**SM_XXX(模型名称)_XXX(模型ID)_LODX(LOD等级)
  2. **骨骼网格体:**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流送虚拟纹理)。

  1. 推荐使用UDIM的场景:
    1. 场景中存在大量遮挡元素。
    2. 纹理细节(单个贴图大于2K)要求特别高的模型采用UDIM,需注意UDIM的象限分配不要过多。
  2. 不推荐使用UDIM的场景:
    1. 常驻内存容量不足(显存不足8GB时)。
    2. 没有额外的性能预算时。至少为虚拟纹理准备1~3ms性能预算。
    3. 需要使用的纹理分辨率很低(单个贴图小于等于1K)。
    4. 模型存在遮罩材质。
    5. 只有极少的纹理需要使用虚拟纹理。场景中大部分模型UV是单象限,不推荐少量模型使用UDIM。
    6. 需要使用不同UV通道进行纹理采样。
  3. 制作UDIM多象限时,需注意:
    1. UDIM索引从1001开始(下图为UDIM象限示意),UDIM纹理U向计数限制为10个,V向限制在900个象限。

UDIM象限坐标
UDIM象限坐标

  2. 将同一类型的贴图放在一起,通过UV的偏移采样不同的纹理区域。
  - 例如:墙砖纹理都放在同一套UDIM纹理集中(匹配墙砖模型UV),制作几种不同的墙砖纹理贴图,通过UV偏移采样不同的墙砖纹理,达到降低墙砖纹理重复度的目的。
  3. 将经常同时出现在画面中的的模型的UV放在同一套UDIM中。
  - 例如:下图建筑大门红框、绿框和蓝框所指部分,考虑到复用性,模型制作中会拆分成不同的组件,方便后期进行更复杂、更随机的组装;但屋顶和支撑屋顶的斗拱部分,以及支撑的柱子部分,即使拆分开来,但在使用中经常搭配使用,使用相同的模型组件组合成不同的建筑,那么这几个部分就可将UV排列在同一个UDIM集中,并使用同一套材质和UDIM纹理集,能够极大的降低引擎中材质的数量,以及纹理采样的次数和频率。

image.png
(3)模型UV规范

  1. UV 分割规范,摆放合理,利用率高,尽量占满 UV 区域。
  2. 部分模型UV需拉直、铺平处理,例如:管状模型。
  3. UV 之间需至少间隔 8-16 像素(对应 2K-4K 贴图精度)。
  4. UV 方向应尽量保证一致,方向应当尽量从上至下,如为了方便摆放而旋转部分 UV 区域,则需要保证同一个部件的 UV 方向一致, UV 旋转之后需要保证方向一致。
  5. UV面朝向:无特殊情况下应当保证UV面朝向一律朝前摆放。

Maya中蓝色方向表示UV前面,尽可能为蓝色显示
Maya中蓝色方向表示UV前面,尽可能为蓝色显示

  6. UV 切割需要正确规范。尽量在隐蔽处等位置进行 UV 的切割。模型设置硬边的位置 UV 需要切开。

模型拓扑要求

(1)整理模型文件,尽量做到最大优化,看不见的区域不需要的面要删除,合并断开的顶点,移除孤立的顶点。
(2)四边面模型布线注意不要出现螺旋线。
(3)四边面模型注意模型边缘卡线,添加保护边,以达到模型细分后不出现模型形变,UV不出现拉伸为准。

模型碰撞体(针对UE设置)

(1)在模型命名上注意添加网格体前缀进行区分。
(2)注意事项:

  1. 命名规则中"RenderMeshName"名称必须与3D软件中碰撞网格体关联的渲染网格体的命名一致。
  2. 所有创建的碰撞体应当删除历史冻结变换。
  3. 可以把渲染网格体和碰撞网格体导出到同一个FBX文件中。
  4. 如果一个对象的碰撞由多个凸包所定义,那么这些凸包相互未交叉时产生的结果为最佳。

(3)命名规则:

  1. UCX_[RenderMeshName]_##:自定义凸包,可以创建包裹模型的任何完全封闭的凸型3D形状。注意一定需要完全封闭。
  2. UBX_[RenderMeshName]_##:盒体,必须使用常规的矩形3D对象来创建。无法移动顶点或使其改变为矩形棱柱之外的其它形状。
  3. UCP_[RenderMeshName]_##:胶囊体,两端半圆的圆柱体对象。胶囊体不需要过多分段(8段为佳),不能对单个顶点进行移动。
  4. USP_[RenderMeshName]_##:球体,不设置过多分段(8段为佳),不能对单个顶点进行移动。

模型软硬边(光滑组)

模型尽可能少用硬边(硬边会导致三倍性能开销),另外硬边的模型在转化成Nanite模型,也会对Nanite的Cluster构成一定的影响。

软边显示-顶点法线未打散
软边显示-顶点法线未打散
硬边显示-顶点法线打散后
硬边显示-顶点法线打散后

拆分颗粒度

(1)模型拆解至模型单体元素。
(2)如果模型是由多个物体组装成的单体,则将多个物体导出为一个文件即可,不要合并为一个Mesh导出(例如:一把剑是由剑体和剑鞘组成,将两者作为一个单体,切记剑体和剑鞘不要合并为一个模型)。
(3)建筑模型:

  1. 可拆解为各种零部件,形成模块化组件,以方便后期组装。

建筑模型拆分示意
建筑模型拆分示意
建筑模型拆分示意
建筑模型拆分示意

  1. 零部件尺寸需规范化,模块的长、宽、高统一标准,例如墙体可拆分为墙角和部分墙体。

建筑拆分示意
建筑拆分示意
建筑模型拆分示意
建筑模型拆分示意

  1. 如果屋顶砖瓦无法很好的拆分,可将不可拆分部分作为模块单体处理。

屋顶砖瓦不好拆分,作为模块单独处理
屋顶砖瓦不好拆分,作为模块单独处理

模型组装要求

关联复制(实例复制)能用尽用,导出时要选择保存为实例。

普通模型

普通模型面数

非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模型)

  1. **无需LOD等级贴图命名:**XXX(模型名称)_XXX(模型ID)_XXX(贴图属性).XXX(格式名)
    • 法线、置换贴图除外
  2. **需LOD等级贴图命名:**XXX(模型名称)_XXX(模型ID)_XXX(贴图属性)_LODX.XXX(格式名)

(2)使用UDIM的模型贴图命名要求

  1. 无需LOD等级贴图命名:XXX(模型名称)_XXX(模型ID)_XXX(贴图属性).10XX(UDIM索引从1001开始).XXX(格式名)
    • 法线、置换贴图除外
  2. 需LOD等级贴图命名:XXX(模型名称)_XXX(模型ID)_XXX(贴图属性)_LODX.10XX(UDIM索引从1001开始).XXX(格式名)

(3)无缝纹理贴图命名要求:

  1. **无需LOD等级贴图命名:**XXX(模型名称)_XXX(模型ID)_XXX(贴图属性).XXX(格式名)。
  2. **需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流送虚拟纹理)

  1. UDIM纹理U向计数限制为10个,V向没有限制。制作纹理时要注意UV分配U向是否超过10个。
  2. 单张贴图的分辨率不超过4096px。
  3. 各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通道)

  1. 根据目标材质的材质属性(详见UE母材质),在制作材质贴图时判断哪些通道进行合并,并在制作好贴图后,指认目标母材质,在后续复用中,始终保持(如无特殊需求情况下)使用最初指认的母材质。
  2. 目标材质的材质属性,影响着主要需要哪些贴图,以及哪些贴图可以利用合并通道(只需要灰度信息的贴图)来进行压缩贴图数量和贴图的体积,以下列举几种常用的通道合并的方案:
    1. ORM(或称为ARM)贴图:将AO、Roughness、Metallic三种灰度贴图(不需要颜色信息的贴图)按先后顺序分别合并在一张图中的R、G、B三个通道,并将贴图命名后缀改为三个通道所携带的贴图的缩写。该贴图类型适用于金属或非金属和金属相结合的材质。
    2. ORD贴图:将AO、Roughness、Displacement三种灰度贴图(不需要颜色信息的贴图)按先后顺序分别合并在一张图中的R、G、B三个通道,并将贴图命名后缀改为三个通道所携带的贴图的缩写。该贴图类型适用于普通非金属(或全金属)、不透明、非遮罩的材质。
    3. ART(或称为ORT)贴图:将Opacity、Roughness、Translucency三种灰度贴图(不需要颜色信息的贴图)按先后顺序分别合并在一张图中的R、G、B三个通道,并将贴图命名后缀改为三个通道所携带的贴图的缩写。该贴图类型适用于普通非金属、需要次表面颜色、需要使用遮罩的材质。
    4. 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)母材质(完整命名规范详见【虚幻资产命名规范】)

优酷可提供一整套场景母材质和配套的可视化资产库管理软件,支持资产出入库,过程中可确保材质实例贴图、参数的自动连接,规范化资产管理。 若使用公司自有的母材质,通常材质将具备如下要求,供参考:

  1. 母材质主要类型:
  • Surface母材质(通用材质)& Surface母材质VT(开启虚拟纹理特性时,统一更换为改VT母材质)
    • 命名规范:M_Surface_Material & M_Surface_Material_VT
    • 材质属性
      1. Material Domain:Surface
      2. Blend Mode:Opaque
      3. Shading Model:Default Lit
  • Decal母材质(延迟贴花)& Decal母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
    • 命名规范:M_Decal_Material & M_Decal_Material_VT
    • 材质属性
      1. Material Domain:Deferred Decal
      2. Blend Mode:Translucent
  • Fuzz母材质(覆盖物)& Fuzz母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
    • 命名规范:M_Default_Fuzz_Material & M_Default_Fuzz_Material_VT
    • 材质属性
      1. Material Domain:Surface
      2. Blend Mode:Opaque
      3. Shading Model:Cloth
  • Foliage母材质(遮罩)& Foliage母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
    • 命名规范:M_Foliage_Material & M_Foliage_Material_VT
    • 材质属性
      1. Material Domain:Surface
      2. Blend Mode:Masked
      3. Shading Model:Two Sided FoIiage
  • Transmission母材质(透明或半透明)& Transmission母材质 VT(开启虚拟纹理特性时,统一更换为改VT母材质)
    • 命名规范:M_Default_Transmission_Material & M_Default_Transmission_Material_VT
    • 材质属性
      1. Material Domain:Surface
      2. Blend Mode:Opaque
      3. Shading Model:Subsurface

(2)材质函数

  • 命名规范:MF_XXX(材质函数的作用类型命名)
  • 将通用的材质节点,制作成材质函数,通过复用材质函数来减少材质节点数量,优化材质的编译。

(3)材质实例

  • 命名规范:MI_XXX(材质名或模型名)_XXX(材质或模型ID)_XXX(贴图分辨率,如2k;4k;8k)
  • 按照模型或贴图材质的材质属性选择对应的母材质。

(4)材质图层

  • 命名规范:ML_XXX(材质图层名)

(5)材质图层混合

  • 命名规范:MLB_XXX(材质图层混合名)