glTF 2.0¶
参考
- 类别
导入 - 导出
- 菜单
用法¶
glTF™(GL传输格式)用于在 Web 和本机应用程序中传输和加载 3D 模型。glTF 减小了 3D 模型的大小以及解压缩和渲染这些模型所需的运行时处理。此格式通常用于网页上,并支持各种 3D 引擎,如 Unity3D、虚幻引擎 4 和Godot。
此导入器/导出器支持以下glTF2.0功能:
网格
材质(Principled BSDF)和无阴影(无光照)
纹理
相机
精确光源(点光,聚光和定向光源)
延伸部分(列在下面)
附加的 (定制属性)
动画(关键帧,形态键及蒙皮)
网格¶
glTF的内部结构模拟了图形芯片在实时渲染时常用的内存缓冲区,这样资产可以交付到桌面、网页或移动终端,并以最少的处理进行迅速显示。 因此,当导出为glTF时,四边形和多边形会自动转换为三角形。 与Blender相比,不连续的UV和平面阴影边缘可能导致glTF中的顶点数适度增多,因为这样的顶点会被分开以导出。 同样,曲线和其他非网格数据不会保留,必须在导出之前转换为网格。
材质¶
glTF中的核心材质系统通过一下信息通道支持金属/粗糙 PBR 工作流:
基础色
金属度
粗糙度
烘焙的环境光遮蔽
法线图(切线空间,+Y向上)。
发射
Some additional material properties or types of materials can be expressed using glTF extensions:
Clearcoat, Clearcoat Roughness, Clearcoat Normal (uses
KHR_materials_clearcoat
)Transmission (uses
KHR_materials_transmission
)"Shadeless" materials (uses
KHR_materials_unlit
)
导入的材质¶
glTF材质系统与Blender自己的材质不同。 导入glTF文件时,此插件将构造一组Blender节点,以尽可能接近地复制每个glTF材质。
The importer supports Metal/Rough PBR (core glTF), Spec/Gloss PBR (KHR_materials_pbrSpecularGlossiness
)
and Shadeless (KHR_materials_unlit
) materials.
Tip
检查材质导入过程的结果,是查看可以导出到glTF的材质节点和设置类型的示例的好方法。
导出的材质¶
这个导出器支持金属/粗糙PBR(核心glTF)和无阴影 (KHR_materials_unlit
) 材质。它将基于它在Blender材质中识别的节点构建glTF材质。 材质导出过程处理如下描述的设置。
Note
当材质中使用图像纹理时,glTF要求格式图像为PNG或JPEG。 此插件将自动转换其他格式的图像,从而增加导出时间。
基础色¶
通过在Principled BSDF节点上查找基础色输入来确定glTF基色。 如果输入未连接,则输入的默认颜色(未连接插口旁边的颜色字段)将用作glTF材质的基色。
如果发现图像纹理节点连接到基色输入,则该图像将用作glTF基础色。
金属度与粗糙度¶
这些值从Principled BSDF节点读取。 如果这两个输入都未连接,节点将显示滑块以控制它们各自的值在0.0和1.0之间,并且这些值将被复制到glTF中。
当使用图像时,glTF期望金属度的值在蓝色 (B
) 通道中编码,粗糙度在同一图像的绿色 (G
) 通道中编码。 如果图像以不遵循此约定的方式连接到Blender节点,则插件可能会尝试在导出期间使图像适应正确的形式(导出时间增加)。
在Blender节点树中,建议使用单独的RGB节点将通道与图像纹理节点分开,并将绿色 (G
) 通道连接到粗糙度,将蓝色 (B
) 通道连接到金属度。 glTF导出器会将此排列识别为与glTF标准匹配,这将允许它在导出期间把图像纹理简单地复制到glTF文件中。
此图像纹理节点应将其 颜色空间 设置为非颜色。
烘焙的环境光遮蔽¶
glTF is capable of storing a baked ambient occlusion map.
Currently there is no arrangement of nodes that causes Blender
to use such a map in exactly the same way as intended in glTF.
However, if the exporter finds a custom node group by the name of glTF Settings
, and
finds an input named Occlusion
on that node group,
it will look for an Image Texture attached there to use as the occlusion map in glTF.
The effect need not be shown in Blender, as Blender has other ways of showing ambient occlusion,
but this method will allow the exporter to write an occlusion image to the glTF.
This can be useful to real-time glTF viewers, particularly on platforms where there
may not be spare power for computing such things at render time.
Tip
创建自定义节点组的最简单方法是导入包含遮挡贴图的现有glTF模型,例如 水瓶 或其他现有的模型。也可以使用手动创建的自定义节点组。
glTF将遮蔽存储在红色 (R
) 通道中,允许它选择与粗糙度和金属度通道共享相同的图像。
Tip
The Cycles render engine has a Bake panel that can be used to bake
ambient occlusion maps. The resulting image can be saved and connected
directly to the glTF Settings
node.
法线贴图¶
要在glTF中使用法线贴图,请将图像纹理节点的颜色输出连接到法线贴图节点的颜色输入,然后将法线贴图法线输出连接到Principled BSDF节点的法向输入。 此图像纹理节点应将其 色彩空间 属性设置为Non-Color。
法线贴图节点必须保留其切线空间的默认属性,因为这是glTF当前支持的唯一类型的法线贴图。 可以在此节点上调整法线贴图的强度。 导出器不直接导出这些节点,但会使用它们来定位正确的图像,并将强度设置复制到glTF中。
Tip
Cycles渲染引擎有一个烘焙面板,可用于从几乎任何其他法向量节点排列中烘焙切线空间法线贴图。 将Bake类型切换为Normal。 将此烘焙面板用于glTF时,请保留默认空间设置(空间:切向,R: +X, G: +Y, B: +Z)。 如上所述,可以保存生成的烘焙图像,并将其用于使用上述法线贴图节点的新材质,从而使其可以正确导出。
参见: Cycles渲染烘焙
发射¶
一个图像纹理节点可以连接到原则性BSDF节点上的发射输入,以包括glTF材质的发射图。或者,图像纹理节点可以连接到一个发射着色器节点,并通过添加着色器节点与原则性BSDF节点的属性相结合。
如果发光贴图在材料中是单独存在的,最好将基色默认设置为黑色,粗糙度默认设置为1.0。如果不需要其他通道,这样可以将它们的影响降到最低。
清漆¶
When the Clearcoat input on the Principled BSDF node has a non-zero default value or
Image Texture node connected, the KHR_materials_clearcoat
glTF extension will be
included in the export. This extension will also include a value or Image Texture
from the Clearcoat Roughness input if available.
如果使用图像纹理,glTF要求将清漆值写入红色 (R
) 通道,而 清漆粗糙度 写入绿色 (G
) 通道。如果连接的是单色图像,导出器会将它们重新映射到这些颜色通道。
清漆法线 输入接受与基础法线输入相同的输入,特别是一个带有+Y向上的切线空间法线贴图,以及一个用户定义的强度。这个输入可以重复使用基础材质正在使用的法线贴图,也可以分配它自己的法线贴图,或者可以不连接以获得光滑的涂层。
所有用于清漆着色的图像纹理节点都应将其 颜色空间 设置为非彩色。
传递采样¶
When the Transmission input on the Principled BSDF node has a non-zero default value or
Image Texture node connected, the KHR_materials_transmission
glTF extension will be
included in the export. When a texture is used, glTF stores the values in the red (R
) channel.
The Color Space should be set to Non-Color.
透射与Alpha混合不同,因为透射允许全强度的镜面反射。在glTF中,alpha混合的目的是表示在指定的几何体中部分缺失的物理材料,比如医用纱布包。透射的目的是代表实体的物理材料,但允许非镜面反射的光线透过材料,比如玻璃。
glTF不提供单独的 传输粗糙度
,但材料的基础粗糙度可以用来模糊传输,就像磨砂玻璃一样。
Tip
通常情况下,透射型材质的alpha混合模式应该保持为 "不透明" ,也就是默认设置,除非该材质只是部分覆盖指定的几何体。
Note
在支持透射的实时引擎中,引擎中的各种技术限制可能会决定场景的哪些部分可以通过透射表面看到。特别是,透射性材料在其他透射性材料后面可能不可见。这些限制会影响基于物理的透射,但不会影响 α-混合 的非透射材料。
Warning
对于实时渲染引擎来说,传输的实现很复杂,而且对 KHR_materials_transmission
glTF扩展的支持还不普遍。
双面/背面剔除¶
对于只能看到正面的材质,在Eevee材质的 设置 面板中打开 背面剔除 。 使用其他引擎(Cycles,Workbench)时,您可以暂时切换到Eevee以配置此设置,然后切换回来。
对于双面材料,请不要勾选此框。
混合模式¶
基础色输入可以选择性地提供alpha值。 glTF如何处理这些值取决于所选的混合模式。
选择Eevee渲染引擎后,每种材质在材质设置面板上都有混合模式。 使用此设置可定义如何在glTF中处理基础色通道的Alpha值。 glTF支持三种设置:
- 不透明
忽略Alpha值(默认值)。
- Alpha混合
较低的alpha值会导致与背景对象混合。
- Alpha钳制
低于 "剪切阈值" 设置的Alpha值将导致部分材质根本不会被渲染。 其他一切都呈现为不透明。
Note
请注意,实时引擎渲染透明度(或 Alpha混合 模式)很复杂,并且在导出后可能会以意想不到的方式运行。 尽量使用 Alpha剪切(Alpha Clip) 模式,或者将 不透明 多边形放在仅有 Alpha混合 多边形的单层后面。
UV 映射¶
通过将UV贴图节点和映射节点连接到任何图像纹理节点,可以控制UV贴图选择和转换。
映射节点中的设置使用名为 KHR_texture_transform
的glTF扩展名导出。 顶部有一个映射类型选择器。推荐使用 点 导出。也支持 纹理 和 矢量 。 支持的偏移量是:
位置 - X和Y
旋转 - 仅限Z
缩放 - X和Y
对于 纹理 类型,缩放 X和Y必须相等(均匀缩放)。
Tip
这些节点是可选的。 并非所有glTF阅读器都支持多个UV贴图或纹理变换。
因子¶
任何图像纹理节点可以选择性地乘以恒定颜色或标量。 它们将被写为glTF文件中的因子,这些数字是与指定图像纹理相乘的数字。并不常见。
扩展(名)¶
使用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_lights_punctual
KHR_materials_unlit
KHR_texture_transform
KHR_materials_clearcoat
KHR_mesh_quantization
导出
KHR_draco_mesh_compression
KHR_lights_punctual
KHR_materials_clearcoat
KHR_materials_transmission
KHR_materials_unlit
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.
自定义属性¶
自定义属性总是被导入的,如果在导出前选择了 额外的
字段中。
与glTF扩展不同,自定义属性(额外项)没有定义命名空间,可以用于任何用户特定或应用程序特定的目的。
动画¶
glTF allows multiple animations per file, with animations targeted to particular objects at time of export. To ensure that an animation is included, either (a) make it the active Action on the object, (b) create a single-strip NLA track, or (c) stash the action.
Supported
Only certain types of animation are supported:
Keyframe (translation, rotation, scale)
形态键
Armatures / skinning
Animation of other properties, like lights or materials, will be ignored.
An NLA Strip animation consists of multiple actions on multiple objects that should play together. To create an NLA strip animation with the name "My Animation", push the action that should play each object onto an NLA track for that object with the name "My Animation".
NLA Strip animations will be exported if the
option is selected (on by default). All glTF animations are imported as NLA Strip animations.If option is disabled, Blender NLA strip actions will be ignored. Only active action of each objects will be taken into account, and merged into a single glTF animation.
Note
为了采样由驱动程序使用骨骼转换控制的形状关键动画,它们必须位于作为骨骼骨架直接子级的网格对象上。
文件格式变体¶
glTF规范确定了数据存储的不同方式。 导入器可处理所有存储方式。 导出器将要求用户选择以下几种形式之一:
glTF分离式(.gltf
+ .bin
+ textures)¶
这将生成一个基于JSON文本的描述整体结构的 .gltf
文件,一个包含网格和矢量数据的 .bin
文件,以及引用在 .gltf
文件中的多个可选的 .png
或 .jpg
文件。
Tip
拥有各种单独的文件使用户在导出完成后,返回与编辑任何JSON或图像变得更加容易。
Note
请注意,共享此格式是需要将所有这些单独的文件作为一个群组共享。
glTF嵌入式 (.gltf
)¶
这将生成一个基于JSON文本的``.gltf``文件,其中所有网格数据和图像数据都在文件中进行编码(使用Base64)。 如果资产必须通过纯文本连接共享,则此格式很有用。
Warning
这是可用格式中效率最低的,仅在需要时使用。
属性¶
导入¶
- 打包图像
打包所有图像到blend文件中。
- 着色
如何在导入期间计算法线。
- 猜测原始绑定姿态
确定 "编辑" 模式下骨骼(以及面板网格)的姿势。打开时,尝试猜测用于计算反向绑定矩阵的姿势。
- 骨骼方向
更改导入器用于决定放置骨骼提示的启发式。请注意,在使用不均匀缩放的模型中,命运设置可能会导致不准确。否则,这纯粹是美学。
导出¶
- 格式
参见: 文件格式变体。
- 纹理
Folder to place texture files in. Relative to the gltf-file.
- 版权符号
该模型的法律权利和条件。
- 记住导出设置
将导出设置存储在blend文件中,以便下次打开文件时调用它们。
包括¶
- 选定的物体
仅导出选定的物体。
- 自定义属性
将自定义属性导出为glTF附加信息。
- 相机
导出相机。
- 精确灯光
导出定向光、点光和聚光。 使用
KHR_lights_punctual
glTF扩展名。
变换¶
- Y 向上
使用glTF约定导出,+Y向上。
几何数据(Geometry)¶
- 应用修改器
Apply modifiers (excluding armatures) to mesh objects.
- UV
导出网格UV(纹理坐标)。
- 法向
导出网格顶点法向。
- 切向
导出网格顶点切向。
- 顶点颜色
Export vertex colors with meshes.
- 材质
Export materials.
- 图像
Output format for images. PNG is lossless and generally preferred, but JPEG might be preferable for web applications due to the smaller file size.
动画¶
- Use Current Frame
Export the scene in the current animation frame.
动画¶
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.
- Export Deformation Bones Only
Export deformation bones only (and needed bones for hierarchy).
贡献¶
该导入器/导出器是通过 glTF-Blender-IO repository 开发的,您可以在其中提交错误报告,提交功能请求或提供代码。
关于glTF 2.0格式的讨论和开发,参见 glTF GitHub repository ,欢迎提供反馈。