glTF 模型

Creator 支持 glTF 2.0 及更早的文件格式。

URI 解析

Creator 支持 glTF 中指定以下形式的 URI:

  • Data URI

  • 相对 URI 路径

  • 文件 URL

  • 文件路径

转换关系

当导入 glTF 模型到 Creator 时,glTF 中的资源将会按照以下关系转换为 Creator 中的资源:

glTF 资源Cocos Creator 资源
glTF 场景预制体
glTF 网格网格
glTF 蒙皮骨骼
glTF 材质材质
glTF 贴图贴图
glTF 图像图像
glTF 动画动画剪辑

glTF 场景

导入后,glTF 场景将转换为 Creator 中的预制体资源,glTF 场景中递归包含的节点也将按照相同层级关系一一转换为预制体中的节点。

场景根节点

预制体将使用一个不带任何空间转换信息的节点作为根节点,glTF 场景的所有 根节点 将作为该节点的子节点。

节点转换

glTF 节点中的属性将按照下表中的映射关系转换为预制体节点中的属性:

glTF 节点属性预制体节点属性
层级关系层级关系
位移位置
旋转旋转
缩放缩放
矩阵解压,并分别设置位置、旋转、缩放
网格引用网格渲染器组件
蒙皮引用蒙皮网格渲染器组件
初始权重(蒙皮)网格渲染器组件权重

网格渲染器

若 glTF 节点引用了网格,那么导入后相对应的预制体节点也会添加网格渲染组件(MeshRenderer)。若该 glTF 节点还引用了蒙皮,那么相对应的预制体节点还会添加蒙皮网格渲染组件(SkinnedMeshRenderer)。

(蒙皮)网格渲染组件中的网格、骨骼和材质,都会与转换后的 glTF 网格、蒙皮、材质资源一一对应。

若 glTF 节点指定了初始权重,则转换后的(蒙皮)网格渲染器也将带有此权重。

glTF 网格

导入后,glTF 网格将转换为 Cocos Creator 中的网格资源。

glTF 网格中的所有 基元体 将被一一转换为 Creator 中的子网格。

若 glTF 网格指定了 权重,则相应地,转换后的 Creator 网格中也将存储相应的权重。

glTF 基元体

glTF 基元体的索引数组将一一对应转换为 Cocos Creator 子网格的索引数组。

glTF 基元模式将按照下表中的映射关系转换为 Cocos Creator 基元模式:

glTF 基元模式Cocos Creator 基元模式
POINTSgfx.PrimitiveMode.POINT_LIST
LINESgfx.PrimitiveMode.LINE_LIST
LINE_LOOPgfx.PrimitiveMode.LINE_LOOP
LINE_STRIPgfx.PrimitiveMode.LINE_STRIP
TRIANGLESgfx.PrimitiveMode.TRIANGLE_LIST
TRIANGLE_STRIPgfx.PrimitiveMode.TRIANGLE_STRIP
TRIANGLE_FANgfx.PrimitiveMode.TRIANGLE_FAN

glTF 顶点属性将转换为 Cocos Creator 顶点属性,属性名称的转换如下表所示:

glTF 顶点属性名称Cocos Creator 顶点属性名称
POSITIONgfx.AttributeName.ATTR_POSITION
NORMALgfx.AttributeName.ATTR_NORMAL
TANGENTgfx.AttributeName.ATTR_TANGENT
TEXCOORD_0gfx.AttributeName.ATTR_TEX_COORD
TEXCOORD_1..TEXCOORD_8gfx.AttributeName.ATTR_TEX_COORD1..gfx.AttributeName.ATTR_TEX_COORD8
COLOR_0gfx.AttributeName.ATTR_COLOR
COLOR_1..COLOR_2gfx.AttributeName.ATTR_COLOR1..gfx.AttributeName.ATTR_COLOR2
JOINTS_0gfx.AttributeName.ATTR_JOINTS
WEIGHTS_0gfx.AttributeName.ATTR_WEIGHTS

注意:若 glTF 基元体中存在其他 JOINTSWEIGHTS 顶点属性,例如 JOINTS_1WEIGHTS_1,则意味着此 glTF 网格的顶点可能受到多于 4 根骨骼的影响。

对于每个顶点,所有由 JOINTS_{}WEIGHTS_{} 确定的权重信息将按权重值进行排序,取出影响权重最大的四根骨骼作为 gfx.AttributeName.ATTR_JOINTSgfx.AttributeName.ATTR_WEIGHTS

glTF 形变目标将被转换为 Cocos Creator 子网格形变数据。

glTF 蒙皮

导入后,glTF 蒙皮将转换为 Cocos Creator 中的骨骼资源。

glTF 材质

导入后,glTF 材质将转换为 Cocos Creator 中的材质资源。

glTF 贴图

导入后,glTF 贴图将转换为 Cocos Creator 中的贴图资源。

glTF 贴图中引用的 glTF 图像将转换为对相应转换后的 Cocos Creator 图像的引用。

glTF 贴图参数将按照下表中的映射关系转换为 Cocos Creator 贴图参数:

glTF 贴图参数Cocos Creator 贴图参数
放大筛选器放大筛选器
缩小筛选器缩小筛选器、Mip Map 筛选器
S 环绕模式S 环绕模式
T 环绕模式环绕模式

glTF 贴图放大筛选器将按照下表中的映射关系转换为 Cocos Creator 贴图放大筛选器:

glTF 贴图放大筛选器Cocos Creator 贴图放大筛选器
NEARESTTextureBase.Filter.NEAREST
LINEARTextureBase.Filter.LINEAR

glTF 贴图缩小筛选器将按照下表中的映射关系转换为 Cocos Creator 贴图缩小筛选器和 Cocos Creator 贴图 Mip Map 筛选器:

glTF 贴图缩小筛选器Cocos Creator 贴图缩小筛选器Cocos Creator 贴图 Mip Map 筛选器
NEARESTTextureBase.Filter.NEARESTTextureBase.Filter.NONE
LINEAR_MIPMAP_LINEARTextureBase.Filter.LINEARTextureBase.Filter.NONE
LINEAR_MIPMAP_NEARESTTextureBase.Filter.NEARESTTextureBase.Filter.NEAREST
LINEARTextureBase.Filter.LINEARTextureBase.Filter.NEAREST
NEAREST_MIPMAP_LINEARTextureBase.Filter.NEARESTTextureBase.Filter.LINEAR
NEAREST_MIPMAP_NEARESTTextureBase.Filter.LINEARTextureBase.Filter.LINEAR

glTF 贴图环绕模式将按照下表中的映射关系转换为 Cocos Creator 贴图环绕模式:

glTF 贴图环绕模式Cocos Creator 贴图环绕模式
CLAMP_TO_EDGETextureBase.WrapMode.CLAMP_TO_EDGE
REPEATTextureBase.WrapMode.REPEAT
MIRRORED_REPEATTextureBase.WrapMode.MIRRORED_REPEAT

glTF 图像

导入后,glTF 图像将转换为 Cocos Creator 中的图像资源。

当 glTF 图像的 URI 是 Data URI 时,图像数据将从 Data URI 中获取。否则,将根据 Cocos Creator 图像位置解析算法 解析并引用外部图像文件,其中 url 就是 glTF 图像的 URI,startDir 为 glTF 文件所在目录。

glTF 动画

导入后,glTF 动画将转换为 Cocos Creator 动画资源。