Skip to content

模型资源

目前,Creator 支持 FBXglTF 两种格式的模型文件。

  • FBX(.fbx):支持 FBX 2020 及更早的文件格式。
  • glTF(.gltf 、.glb):支持 glTF 2.0 及更早的文件格式,详情可参考 glTF 模型

关于如何从第三方工具导出这两种模型文件,请参考 导入从 DCC 工具导出的模型

模型导入

从外部导入编辑器中后,在 资源管理器 中可得到对应的模型资源文件,其目录结构如下:(以 glTF 文件为例,fbx 文件相同)

  • 无动画的模型文件结构如下:

    mesh list

  • 包含动画的模型文件结构如下:

    mesh list1

    • .material — 材质文件
    • .mesh — 模型文件
    • .texture — 模型贴图文件
    • .animation — 模型动画文件
    • .skeleton — 模型骨骼文件
    • .prefab — 导入时自动生成的预制件

Mesh 文件

Mesh 文件中存储了模型的顶点、索引、纹理坐标等数据。在 层级管理器 中选中 Mesh 文件后,在 属性检查器 便可以看到 Mesh 的一些信息以及它的预览效果。

Mesh Asset

属性功能说明
Vertices模型的顶点数
Triangles模型的三角形数
UV模型的纹理坐标索引
MinPos模型的最小坐标值
MaxPos模型的最大坐标值

模型使用

将模型文件导入后,直接将模型文件的根节点从 资源管理器 拖拽到 层级管理器 中想要放置的节点下,即可完成节点创建,此时模型就成功在场景中创建了。
或者也可以将模型文件的节点展开,选中模型文件节点下的 .prefab 文件,从 资源管理器 拖拽到 层级管理器 中同样能够完成创建。

mesh use

模型资源属性

当在 资源管理器 中选中模型资源文件时( .fbx.gltf.glb),在 属性检查器 中就可以直接设置模型资源的相关属性。

一共有四个标签可以选择:

标签说明
模型(Model)用于设置模型网格导入时的相关选项
动画(Animation)用于查看和编辑模型动画片段
材质(Material)用于设置模型材质导入的相关选项
FBX用于设置 FBX 文件相关选项

模型(Model)

mesh model

属性说明
法线(Normals)导入法线信息,包括以下四种选项:
1. 可选(Optional):只导入模型文件中包含的法线,适用于非常清楚自己模型数据的情况。
2. 排除(Exclude):不导入法线。
3. 仅在必要时重新计算(Required):导入模型文件中的法线,若模型文件中不包含法线则重新计算,适用于大部分情况。模型数据本身没问题的话还是推荐使用该项,没有额外的处理。
4. 重新计算(Recalculate):无论模型文件中是否包含法线,都直接重新计算并导入。选择该项会增加计算量,但是可以消除模型原始数据法线没有归一化带来的后续问题。
切线(Tangents)导入切线信息,包括 Optional、Exclude、Require、Recalculate 四种选项,选项功能可参考 法线 的说明,二者相差不大。
形变法线(Morph normals)导入形变法线信息,包括:
可选(Optional):只导入模型文件中包含的形变法线,适用于非常清楚自己模型数据的情况。
排除(Exclude):不导入形变法线。
跳过验证(Skip Validation)是否跳过对模型文件的标准检测。
是否禁用 Mesh 拆分(Disable mesh split)为了解决实时骨骼动画系统下 uniform vector 数量限制问题,目前在资源导入期会根据骨骼数量做拆分,这会对其他系统也产生影响。如果确定不会使用实时计算模式(对应 SkeletalAnimation 组件的 useBakedAnimation 选项未勾选时),可以勾选此项以提升性能。但注意改变此选项会影响生成的 prefab 内容,需要对应更新场景中的引用。
详情请参考下文。
允许数据访问(Allow Data Access)标识此模型中的所有网格数据是否可被读写,此接口只对静态网格资源生效。若不勾选,网格数据提交至 CPU 后会自动释放
提升单一根节点(Promote Single Root Node )开启此选项,若模型场景只有一个根节点,那么该节点就作为预制体的根节点,否则会为根节点新建一个父节点

是否禁用 Mesh 拆分(Disable mesh split)

在 v3.6 的更新中我们优化了此选项的策略:

  • 默认情况下不再拆分模型,不对导入的模型数据做修改(也维持以前的模型设置不变)
  • 如果骨骼数量未超过实际运行时驱动的限制,直接使用 uniform 传递
  • 如果骨骼数量超过限制,则使用纹理传递

mesh-advopts

网格优化 (Mesh Optimize)

属性说明
顶点缓存(Vetex Cache)优化三角形顺序,提升 GPU 缓存命中率,建议对顶点较多的模型开启。
顶点提取(Vertex Fetch)优化三角形顺序,提升顶点数据提取效率,建议对顶点较多的模型开启。
过度绘制(Overdraw)优化三角形顺序,减少过度绘制,建议对顶点较多的模型开启。

若有多个选项同时开启,优化算法会自动调节参数,达到最佳效果。

网格简化(Mesh Simplify)

属性说明
目标比率(Target Ratio)目标顶点数比率,建议设置为 0.5
自动误差率(Auto Error Rate)是否自动计算误差率
误差率(Error Rate)调整此值,获得最佳效果
锁定边界(Lock Boundary)是否锁定网格数据边界

已知的问题为:可能会存在在减面后丢失 UV 排布的情况
开发者需关注 属性检查器 内的警告情况以决定是否使用该选项。

网格切块(Mesh Cluster)

属性说明
生成包围体(Generate Bounding)是否为切块生成包围球和法线锥

网格压缩(Mesh Compress)

属性说明
编码(Encode)使用二进制编码
压缩(Compress)zlib 算法,使用 LZ77 和哈弗曼进行编码
量化(Quantize)量化,压缩浮点信息,减小包体

LODS

网格导入器会检查网格的子节点是否以 _lodN 结尾,如有,则会自动识别这些子节点为 LOD 节点。如果没有,也可以通过勾选 LODS 选项,提供自动的 LOD 功能。

LOD1、LOD2 选项用于设置不同等级的三角面比例。

更多请参考 多层次细节

以上选项算法细节,请参考开源库:https://github.com/zeux/meshoptimizer

动画(Animation)

mesh animation

上方的动画文件表格是当前模型下的所有动画资源信息,下方是当前选中动画的具体帧数信息的编辑区域,可以在此处更改动画名称或进行简单的动画裁剪。

  • 点击图上红框内的 + 按钮可以添加动画文件,添加的新文件默认拷贝一份完整的 clip 数据,可以在下方的 StartEnd 输入框中输入帧数来裁剪动画。(目前暂时不支持拖拽裁剪动画)

  • 点击图上红框内的 - 按钮可以删除当前选中的动画文件

材质(Material)

mesh material

上半部分的属性说明如下,下半部分则展示了当前模型中包含的材质。

属性说明
提取材质若想对模型文件自带的材质进行修改时,可开启该项,将文件结构目录下的材质文件提取出模型资源,便可以进行材质的调整修改了。
材质提取目录用于指定或者查看提取出来的材质所在的目录。
使用顶点色是否使用顶点色。
混合模式下的深度写入当 Alpha 模式为 Blend 时开启深度写入。

FBX

mesh material

属性说明
与 1.x 版本兼容若勾选该项,则在导入模型时会兼容 Cocos Creator 3D 1.x 版本的导入方式。注意:启用该项可能会影响已经导入且被使用/引用的资源。
动画烘焙速率指定动画烘焙速率,单位为 帧/秒,可选项包括 自动24253060
提升单一根节点当开启该项,若 FBX 资源中包含的场景仅有一个根节点,则在将 FBX 场景转换为 Creator 的预制件时,会以该根节点作为预制件的根节点。否则将以 FBX 场景作为根节点。
优先使用文件时间范围若勾选该项,则导入的 FBX 动画会优先使用 FBX 文件中记录的动画时间范围。
若不勾选该项,则不使用 FBX 的动画时间范围,将会粗略地计算动画时间范围。
有些 FBX 工具可能没有导出动画时间范围信息,那么也是粗略地计算动画时间范围。