glTF 2.0
参考
- 类别
导入 - 导出
- 菜单
用法
glTF™(GL Transmission Format / GL传输格式)用于在 Web 和本机应用程序中传输和加载 3D 模型。glTF 减小了 3D 模型的大小以及解压缩和渲染这些模型所需的运行时处理。此格式通常用于网页上,并支持各种 3D 引擎,如 Unity3D、虚幻引擎 4 和 Godot 。
此导入器/导出器支持以下 glTF 2.0 功能:
网格
材质(原理化 BSDF)和无阴影(无光照)
纹理
摄像机
精确光源(点光,聚光和定向光源)
延伸部分(列在下面)
附加的(定制属性)
动画(关键帧、形态键及蒙皮)
网格
glTF 的内部结构模拟了图形芯片在实时渲染时常用的内存缓冲区,这样资产可以交付到桌面、网页或移动终端,并以最少的处理进行迅速显示。因此,当导出为 glTF 时,四边形和多边形会自动转换为三角形。与 Blender 相比,不连续的 UV 和平直着色的边可能导致 glTF 中的顶点数适度增多,因为这样的顶点会被分开以导出。同样,曲线和其他非网格数据不会保留,必须在导出之前转换为网格。
材质
glTF 中的核心材质系统通过以下信息通道支持金属度/粗糙度 PBR 工作流:
基础色
金属度
粗糙度
烘焙的环境光遮蔽
法线图(切线空间,+Y 向上)
自发光
Some additional material properties or types of materials can be expressed using glTF extensions. The complete is can be found in _Extensions_ part of this documentation.
导入的材质
glTF 材质系统与 Blender 自己的材质不同。导入 glTF 文件时,此插件将构造一组 Blender 节点,以尽可能接近地复制每个 glTF 材质。
The importer supports Metal/Rough PBR (core glTF), Spec/Gloss PBR (KHR_materials_pbrSpecularGlossiness
)
and some extension materials. The complete is can be found in _Extensions_ part of this documentation.
Tip
检查材质导入过程的结果,是查看可以导出到 glTF 的材质节点和设置类型的示例的好方法。
导出的材质
这个导出器支持金属/粗糙PBR(核心 glTF)和无阴影(KHR_materials_unlit
)材质。它将基于它在 Blender 材质中识别的节点构建 glTF 材质。材质导出过程处理如下描述的设置。
Note
当材质中使用图像纹理时,glTF 要求格式图像为 PNG 或 JPEG。此插件将自动转换其他格式的图像,从而增加导出时间。
基础色
通过在原理化 BSDF 节点上查找基础色输入来确定 glTF 基础色。如果输入未连接,则输入的默认颜色(未连接插口旁边的颜色字段)将用作 glTF 材质的基础色。
如果发现图像纹理节点连接到基色输入,则该图像将用作 glTF 基础色。
金属度与粗糙度
这些值从原理化 BSDF 节点读取。如果这两个输入都未连接,节点将显示滑块以控制它们各自的值在 0.0 和 1.0 之间,并且这些值将被复制到 glTF 中。
当使用图像时,glTF 期望金属度的值在蓝色 (B
) 通道中编码,粗糙度在同一图像的绿色 (G
) 通道中编码。如果图像以不遵循此约定的方式连接到 Blender 节点,则插件可能会尝试在导出期间使图像适应正确的形式(导出时间会增加)。
在 Blender 节点树中,建议使用单独的 RGB 节点将通道与图像纹理节点分开,并将绿色 (G
) 通道连接到粗糙度,将蓝色 (B
) 通道连接到金属度。glTF 导出器会将此排列识别为与 glTF 标准匹配,这将允许它在导出期间把图像纹理简单地复制到 glTF 文件中。
此图像纹理节点应将其 色彩空间 设置为非颜色。
烘焙的环境光遮蔽
glTF 能够存储一个烘焙的环境光遮蔽贴图。目前,还没有任何节点安排可以让 Blender 以与 glTF 完全相同的方式使用这种贴图。但是,如果导出器找到一个名为 glTF Material Output
的自定义节点组,并在该节点组上找到一个名为 Occlusion
的输入,它就会寻找一个附着在那里的图像纹理,作为 glTF 中的遮蔽贴图。这个效果不需要在 Blender 中显示,因为 Blender 有其他显示环境遮蔽的方法,但这个方法将允许导出器将遮蔽图像写入 glTF。这对于实时的 glTF 查看器来说是很有用的,特别是在那些在渲染时可能没有多余的能力来计算这些东西的平台。
Tip
The easiest way to create the custom node group is to import an existing glTF model that contains an occlusion map, such as the water bottle or another existing model. A manually created custom node group can also be used.
glTF 将遮蔽贴图存储在红色 (R
) 通道中,允许它选择与粗糙度和金属度通道共享同一图像。
Tip
Cycles 渲染引擎有一个烘焙面板,可以用来烘焙环境遮蔽贴图。产生的图像可以被保存并直接连接到 glTF Material Output
节点。
法线贴图
要在 glTF 中使用法线贴图,请将图像纹理节点的颜色输出连接到法线贴图节点的颜色输入,然后将法线贴图法线输出连接到原理化 BSDF 节点的法向输入。此图像纹理节点应将其 色彩空间 属性设置为非色彩。
法线贴图节点必须保留其切线空间的默认属性,因为这是 glTF 当前支持的唯一类型的法线贴图。可以在此节点上调整法线贴图的强度。导出器不直接导出这些节点,但会使用它们来定位正确的图像,并将强度设置复制到 glTF 中。
Tip
Cycles 渲染引擎有一个烘焙面板,可用于从几乎任何其他法向量节点排列中烘焙切线空间法线贴图。将烘焙类型切换为法向。将此烘焙面板用于 glTF 时,请保留默认空间设置(空间:切向,R: +X, G: +Y, B: +Z)。如上所述,可以保存生成的烘焙图像,并将其用于使用上述法线贴图节点的新材质,从而使其可以正确导出。
参见:Cycles 渲染烘焙
自发光
一个图像纹理节点可以连接到原理化 BSDF 节点上的自发光输入,以作为 glTF 材质的自发光贴图。或者,图像纹理节点可以连接到一个自发光着色器节点,并通过相加着色器节点与原理化 BSDF 节点的属性相结合。
如果自发光贴图在材质中是单独存在的,最好将基础色默认设置为黑色,粗糙度默认设置为 1.0。如果不需要其他通道,这样可以将它们的影响降到最低。
如果任何部分的自发光强度大于 1.0,KHR_materials_emissive_strength
扩展将被使用。
清漆
当原理化 BSDF 节点上的 清漆 输入有一个非零的默认值或连接图像纹理节点时,KHR_materials_clearcoat
glTF 扩展将被包含在输出中。这个扩展也将包括 清漆粗糙度 输入的值或图像纹理(如果有)。
如果使用图像纹理,glTF 要求将清漆值写入红色(R
)通道,而 清漆粗糙度 写入绿色(G
)通道。如果连接的是单色图像,导出器会将它们重新映射到这些颜色通道。
清漆法线 输入接受与基础法线输入相同的输入,特别是一个带有 +Y 向上的切线空间法线贴图,以及一个用户定义的强度。这个输入可以重复使用基础材质正在使用的法线贴图,也可以分配它自己的法线贴图,或者可以不连接以获得光滑的涂层。
所有用于清漆着色的图像纹理节点都应将其 色彩空间 设置为非色彩。
光泽
When the Velvet BSDF node is used in addition to Principled BSDF node, the KHR_materials_sheen
glTF
extension will be included in the export. The Sheen Color will be exported from Color socket of Vevlet node.
Sheen Roughness will be exported from Sigma socket.
If a Sheen Rougness Texture is used, glTF requires the values be written to the alpha (A
) channel.
Tip
Velvet BSDF node is only available on Cycles render engine. You may have to temporary switch to Cycles to add this node, and get back to Eevee.
Note
Because the node tree is adding 2 Shaders (Principled and Sheen), the resulting shader is not fully energy conservative. You may find some difference between Blender render, and glTF render. Sheen models are not fully compatible between Blender and glTF. This trick about adding Velvet Shader is the most accurate approximation (better that using Sheen Principled sockets).
镜面反射
When the Specular or Specular Tint input of Principled BSDF node have a non default value or
Image Texture node connected, the KHR_materials_specular
glTF extension will be
included in the export.
Note
Specular models are not fully compatible between Blender and glTF. By default, Blender data are converted to glTF at export, with a possible loss of information. Some conversion are also performed at import, will a possible loss of information too.
At import, a custom node group is created, to store original Specular data, not converted.
At export, by default, Specular data are converted from Principled BSDF node.
You can export original Specular data, enabling the option at export. If enabled, Principled Specular data are ignored, only data from custom node are used.
Tip
如果您在偏好设置中启用了“着色器编辑器插件”,即可在此菜单中启用自定义节点组:添加 > 输出 > glTF 材质输出
透射
当原理化 BSDF 节点上的透射输入有一个非零的默认值或连接了图像纹理节点时,KHR_materials_transmission
glTF 扩展将被包含在导出中。当使用纹理时,glTF 将数值存储在红色(R
)通道中。色彩空间 应该被设置为非色彩。
透射与 Alpha 混合不同,因为透射允许全强度的镜面反射。在 glTF 中,alpha 混合的目的是表示在指定的几何体中部分缺失的物理材料,比如医用纱布包。透射的目的是代表实体的物理材料,但允许非镜面反射的光线透过材料,比如玻璃。
glTF does not offer a separate "Transmission Roughness", but the material's base roughness can be used to blur the transmission, like frosted glass.
Tip
通常情况下,透射型材质的 alpha 混合模式应该保持为 “不透明”,也就是默认设置,除非该材质只是部分覆盖指定的几何体。
Note
在支持透射的实时引擎中,引擎中的各种技术限制可能会决定场景的哪些部分可以通过透射表面看到。特别是,透射性材料在其他透射性材料后面可能不可见。这些限制会影响基于物理的透射,但不会影响 alpha 混合的非透射材料。
Warning
对于实时渲染引擎来说,传输的实现很复杂,而且对 KHR_materials_transmission
glTF 扩展的支持还不普遍。
IOR
导入时,有两种不同的情况:
如果没有设置
KHR_materials_ior
,原理化 BSDF 节点的 IOR 值被设置为 1.5,这是 glTF 的默认 IOR 值。如果设置,
KHR_materials_ior
用于设置原理性 BSDF 的 IOR 值。
在导出时,只有当这些扩展之一也被使用时,IOR 才会被包括在导出中:
KHR_materials_transmission
KHR_materials_volume
KHR_materials_specular
1.5 的 IOR 不包括在输出中,因为这是默认的 glTF IOR 值。
体积/音量
体积可以通过使用体积吸收节点导出,与输出节点的体积接口相连接。数据将使用 KHR_materials_volume
扩展来导出。
为了导出体积,必须在原理化 BSDF 节点上设置 透射。
体积吸收节点的颜色被用作 glTF 的衰减颜色。此属性不允许使用纹理。
体积吸收节点的密度被用来作为 glTF 衰减距离的倒数。
Thickess can be plugged into the Thickess socket of custom group node
glTF Material Output
.如果纹理用于厚度,它必须接在图像的绿(
G
)通道上。
glTF 变体
Note
要获得完整的变体体验,您必须在插件首选项中启用用户界面
在 Blender 中有两个位置可以管理 glTF 变体
在3D视图中,在
glTF变体
选项卡上有关高级设置,请参阅网格材质属性(请参阅高级 glTF 变体检查)
要理解使用变体的主要概念是,每个材质槽将被用作 glTF 基元的等效物。
glTF 变量切换
导入包含 KHR_MATERIAL_VARIANTS
扩展名的 glTF 文件后,可以显示所有变体。
您可以通过 选择 要显示的变体,然后单击 显示变体 来切换变体。
您可以通过单击 重置为默认 切换到默认材质(当没有使用变体时)。
glTF 变体创建
你可以点击变体菜单右侧的 +
号来添加一个新的变体。然后你可以双击来改名。
更改材质槽中的材质后,您可以使用 分配到变体 将当前材质分配到活动变体。
您还可以使用 分配为原始 设置默认材质。这些材质将在 glTF 中导出为默认材质。这是任何不管理 KHR_MATERIALS_VARIANTS
扩展的查看者将显示的材质。
高级 glTF 变体检查
如果要按原始检查原始,使用什么变体,可以转到网格材质属性。
glTF 材质变体 标签指的是活动材质槽和该槽使用的材质。你可以看到在给定的 插槽/原件 中使用该材质的所有变体。
You can also assign material to Variants from this tab, but recommandation is to perform it from 3D View tab.
双面/背面剔除
For materials where only the front faces will be visible, turn on Backface Culling in the Settings panel of an Eevee material. When using other engines (Cycles, Workbench) you can temporarily switch to Eevee to configure this setting, then switch back.
对于双面材质,请不要勾选此框。
混合模式
The Base Color input can optionally supply alpha values. How these values are treated by glTF depends on the selected blend mode.
With the Eevee render engine selected, each material has a Blend Mode on the material settings panel. Use this setting to define how alpha values from the Base Color channel are treated in glTF. Three settings are supported by glTF:
- 不透明
Alpha values are ignored.
- Alpha Blend
Lower alpha values cause blending with background objects.
- Alpha Clip
Alpha values below the Clip Threshold setting will cause portions of the material to not be rendered at all. Everything else is rendered as opaque.
Note
Be aware that transparency (or Alpha Blend mode) is complex for real-time engines to render, and may behave in unexpected ways after export. Where possible, use Alpha Clip mode instead, or place Opaque polygons behind only a single layer of Alpha Blend polygons.
UV 映射
通过将 UV 贴图节点和映射节点连接到任何图像纹理节点,可以控制 UV 贴图选择和转换。
映射节点中的设置使用名为 KHR_texture_transform
的 glTF 扩展导出。顶部有一个映射类型选择器。推荐使用 点 导出。也支持 纹理 和 矢量。支持的偏移量是:
位置 - X 和 Y
旋转 - 仅限 Z
缩放 - X 和 Y
对于 纹理 类型,缩放 X 和 Y 必须相等(均匀缩放)。
Tip
这些节点是可选的。并非所有 glTF 阅读器都支持多个 UV 贴图或纹理变换。
系数
任何图像纹理节点可以选择性地乘以恒定颜色或标量。它们将被写为 glTF 文件中的系数,这些数字将与指定的图像纹理相乘。这并不常见。
例子
如果需要,单一材质可以同时使用所有上述节点。此图显示了一次性应用上述多个选项时的典型节点结构:
导出无阴影(不发光)材质
要导出无光材质,用摄像机射线混合,并避免使用原理化 BSDF 节点。
扩展
使用 glTF 扩展可以使用附加信息扩展核心 glTF 2.0 格式。这允许文件格式保存在最初发布时非通用的细节。并非所有的 glTF 阅读器都支持所有扩展,但有些是相当常见的。
Certain Blender features can only be exported to glTF via these extensions. The following glTF 2.0 extensions are supported directly by this add-on:
导入
KHR_materials_pbrSpecularGlossiness
KHR_materials_clearcoat
KHR_materials_transmission
KHR_materials_unlit
KHR_materials_emissive_strength
KHR_materials_volume
KHR_materials_sheen
KHR_materials_specular
KHR_materials_ior
KHR_materials_variants
KHR_lights_punctual
KHR_texture_transform
KHR_mesh_quantization
导出
KHR_draco_mesh_compression
KHR_lights_punctual
KHR_materials_clearcoat
KHR_materials_transmission
KHR_materials_unlit
KHR_materials_emissive_strength
KHR_materials_volume
KHR_materials_sheen
KHR_materials_specular
KHR_materials_ior
KHR_materials_variants
KHR_texture_transform
第三方 glTF 扩展
It is possible for Python developers to add Blender support for additional glTF extensions by writing their own third-party add-on, without modifying this glTF add-on. For more information, see the example on GitHub and if needed, register an extension prefix.
自定义属性
自定义属性总是被导入的,如果在导出前选择了 extras
字段中。
与 glTF 扩展不同,自定义属性(额外项)没有定义命名空间,可以用于任何用户特定或应用程序特定的目的。
动画
glTF 动画会更改对象或姿态骨骼的转换或形态键的值。一个动画可以影响多个对象,并且在 glTF 文件中可以有多个动画。
导入
已设置导入的模型,以使文件中的第一个动画自动播放。擦拭时间线以观看其播放。
当文件包含多个动画时,其余的将使用非线性动画编辑器来组织。每个动画都会变成一个动作藏在一个 NLA 轨道上。轨道的名称是 glTF 动画的名称。要使该轨道内的动画可见,点击你想播放的轨道旁边的 Solo(星形图标)。
如果一个动画影响到多个对象,它将被分解成多个部分。影响一个对象的动画部分会变成一个动作,藏在那个对象上。使用轨道名称来分辨哪些动作是同一个动画的一部分。要播放整个动画,你需要为其所有轨道启用 Solo(星形图标)。
Note
目前没有办法看到一个有动画的模型的非动画姿态。
导出
You can export animations by creating actions. How glTF animations are made from actions is controlled by the
export option.Group by NLA Track on (default)
An action will be exported if it is the active action on an object, or it is stashed to an NLA track (e.g. with the Stash or Push Down buttons in the Action Editor). Actions which are not associated with an object in one of these ways are not exported. If you have multiple actions you want to export, make sure they are stashed!
一个 glTF 动画可以有一个名字,默认是动作名称。你可以通过将其 NLA 轨道从 NLATrack
/ [Action Stash]
重命名为你想使用的名称来覆盖它。例如,示例图 狐狸模型 将导出三个动画,“观望” 、“行走” 和 “跑” 。如果你把两个不同对象上的两个轨道重命名为同一个名字,它们将成为同一个 glTF 动画的一部分,并一起播放。
导入器会组织动作,以便它们在这种模式下被正确导出。
Group by NLA Track off
在这种模式下,不使用 NLA 组织,只使用所有对象上的活动动作导出一个动画。
Note
For both modes, remember only certain types of animation are supported:
对象转换(位置、旋转、缩放)
姿态骨骼
形态键值
其他属性的动画,如物理、灯光或材质,将被忽略。
Note
为了采样由驱动器使用骨骼变换控制的形态键动画,它们必须位于作为骨骼骨架直接子级的网格对象上。
文件格式变体
glTF 规范确定了数据存储的不同方式。导入器可处理所有存储方式。导出器将要求用户选择以下几种形式之一:
glTF 二进制(.glb
)
这将生成一个 .glb
文件,其中所有网格数据、图像纹理和相关信息都打包到一个二进制文件中。
Tip
使用单个文件可以轻松地将模型共享或复制到其他系统和服务。
glTF 分离式(.gltf
+ .bin
+ textures)
这将生成一个基于 JSON 文本的描述整体结构的 .gltf
文件,一个包含网格和矢量数据的 .bin
文件,以及引用在 .gltf
文件中的多个可选的 .png
或 .jpg
文件。
Tip
拥有各种单独的文件使用户在导出完成后,返回与编辑任何 JSON 或图像变得更加容易。
Note
请注意,共享此格式是需要将所有这些单独的文件作为一个群组共享。
glTF 嵌入式(.gltf
)
这将生成一个基于 JSON 文本的``.gltf``文件,其中所有网格数据和图像数据都在文件中进行编码(使用 Base64)。 如果资产必须通过纯文本连接共享,则此格式很有用。
Warning
This is the least efficient of the available forms, and should only be used when required.
属性
导入
- 打包图像
打包所有图像到 blend 文件中。
- 着色
如何在导入期间计算法线。
- 猜测原始绑定姿态
确定编辑模式下骨骼(以及蒙皮网格)的姿态。打开时,尝试猜测用于计算反向绑定矩阵的姿态。
- 骨骼方向
Changes the heuristic the importer uses to decide where to place bone tips. Note that the Fortune setting may cause inaccuracies in models that use non-uniform scaling. Otherwise this is purely aesthetic.
导出
- 格式
参见:文件格式变体。
- 纹理
Folder to place texture files in. Relative to the gltf-file.
- 版权符号
该模型的法律权利和条件。
- 记住导出设置
将导出设置存储在 blend 文件中,以便下次打开文件时调用它们。
包括
- 选定的物体
仅导出选定的物体。
- 可见物体
仅导出可见的物体。
- 可渲染物体
仅导出可渲染的物体。
- 活动集合
只导出活动集合中的物体。
- 活动场景
只导出活动场景。
- 自定义属性
将自定义属性导出为 glTF 附加信息。
- 摄像机
导出摄像机。
- 精确灯光
导出定向光、点光和聚光。使用
KHR_lights_punctual
glTF 扩展。
变换
- Y 向上
使用 glTF 约定导出,+Y 向上。
几何数据
- 应用修改器
使用评估后的网格导出物体,即所有修改器被计算后的网格。
- UV
导出网格 UV(纹理坐标)。
- 法向
导出网格顶点法向。
- 切向
导出网格顶点切向。
- 顶点色
Export Color Attributes with meshes.
- 松散边
将松散边以线条形式导出,使用材质槽中第一个材质。
- 松散点
使用第一个材质槽中的材质导出松散点为 glTF 点。
- 材质
Export full materials, only placeholders (all primitives but without materials), or does not export materials. (In that last case, primitive are merged, lossing material slot information).
- 图像
Output format for images. PNG is lossless and generally preferred, but JPEG might be preferable for web applications due to the smaller file size. If None is chosen, materials are exported without textures.
压缩
使用 Google Draco 压缩网格。
- 压缩级别
压缩越高,编码和解码速度越慢。
- 量化位置
值越高,压缩率越高。
- 法向
值越高,压缩率越高。
- 纹理坐标
值越高,压缩率越高。
- 颜色
值越高,压缩率越高。
- 泛型
值越高,压缩率越高。
动画
- Use Current Frame
Export the scene in the current animation frame. For rigs, when off, rest pose is used as default pose for joints in glTF file. When on, the current frame is used as default pose for joints in glTF file.
动画
Exports active actions and NLA tracks as glTF animations.
- 限制回放范围
将动画剪辑到所选的播放范围。
- 采样率
评估动画值的频率(以帧为单位)。
- Always Sample Animations
Apply sampling to all animations.
- Group by NLA Track
Whether to export NLA strip animations.
- 优化动画大小
Reduce exported file-size by removing duplicate keyframes.
- Export Deformation Bones Only
Export deformation bones only.
形态键
导出形态键(形变目标)。
- 形态键法向
使用形状键(形变目标)导出顶点法线。
- 形态键切向
使用形状键(变形目标)导出顶点切线。
蒙皮
Export skinning (armature) data.
- 包含全部骨骼影响
Allow more than 4 joint vertex influences. Models may appear incorrectly in many viewers.
贡献
该导入器/导出器是通过 glTF-Blender-IO repository 开发的,您可以在其中提交错误报告,提交功能请求或提供代码。
关于 glTF 2.0 格式的讨论和开发,参见 glTF GitHub repository,欢迎提供反馈。