glTF 2.0
参照
- Category(カテゴリー)
Import-Export
- Menu(メニュー)
使用方法
glTF™ (GL Transmission Format) は、ウェブやネイティブアプリケーションでの3Dモデルの転送と読み込みに使用されます。 glTFは、3Dモデルの容量や、それらのモデルを解凍してレンダリングするために必要なランタイム処理を削減します。このフォーマットはウェブ上で一般的に使用されており、Unity3D、Unreal Engine 4、Godotなどの様々な3Dエンジンでサポートされています。
このインポーター/エクスポーターは、以下の glTF 2.0 の機能をサポートしています:
Meshes(メッシュ)
Materials (Principled BSDF) and Shadeless (Unlit)
Textures(テクスチャ)
Cameras(カメラ)
Punctual lights (point, spot, and directional)
Extensions (listed below)
Extras (custom properties)
Animation (keyframe, shape key, and skinning)
Meshes(メッシュ)
glTF の内部構造は、リアルタイムでレンダリングする際にグラフィック チップで一般的に使用されるメモリ バッファを模倣しているため、アセットをデスクトップ、ウェブ、モバイル クライアントに配信し、最小限の処理で迅速に表示することができます。その結果、glTFへのエクスポート時に、四角形やn角形は自動的に三角形に変換されます。不連続なUVやフラットシェードのエッジは、エクスポートによって頂点が分離されるため、glTFではBlenderと比較して頂点数がやや多くなることがあります。同様に、曲線やその他の非メッシュデータは保持されず、エクスポートする前にメッシュに変換しなければなりません。
Materials(マテリアル)
glTFのコアとなるマテリアルシステムは、以下の情報チャネルで metal/rough なPBRワークフローをサポートしています:
Base Color
Metallic
Roughness
Baked Ambient Occlusion
Normal Map (tangent space, +Y up)
Emissive
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.
Imported Materials
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 にエクスポートできるマテリアル ノードや設定の種類の例を見ることができます。
Exported Materials
エクスポータは、Metal/Rough PBR (core glTF) と Shadeless (KHR_materials_unlit
) マテリアルをサポートしています。Blenderマテリアルの中で認識したノードに基づいてglTFマテリアルを構築します。マテリアルのエクスポート処理では、以下に説明する設定を処理します。
注釈
マテリアルで画像テクスチャを使用する場合、glTFではその画像がPNGまたはJPEG形式である必要があります。このアドオンは、他の形式の画像を自動的に変換し、書き出し時間を長くします。
Base Color
glTFのベースカラーは、Principled BSDFノード上のBase Color入力を探すことで決定されます。入力が未接続の場合は、入力のデフォルトカラー(未接続ソケットの隣のカラーフィールド)がglTFマテリアルのベースカラーとして使用されます。
Image TextureノードがBase Color入力に接続されていることが判明した場合、その画像がglTFのベースカラーとして使用されます。
メタリックとラフネス
これらの値は、Principled BSDFノードから読み込まれます。これらの入力の両方が接続されていない場合、ノードは0.0から1.0の間でそれぞれの値を制御するためのスライダを表示し、これらの値はglTFにコピーされます。
画像を使用する際にglTFは、メタリックの値が青(B
)チャンネル、ラフネスが同じ画像の緑(G
)チャンネルでエンコードされることを期待しています。 もし画像がこの規則に従わない方法で Blender ノードに接続されている場合、アドオンはエクスポート中に画像を正しい形に適合させようとするかもしれません(エクスポート時間が長くなります)。
Blenderのノードツリーでは、Image Textureノードからチャンネルを分離するためにSeparate RGBノードを使用し、緑色(G
)のチャンネルをRoughnessに、青色(B``)のチャンネルをMetallicに接続することが推奨されます。glTF エクスポータは、この配置が glTF 標準に一致していると認識し、エクスポート中にイメージ テクスチャを glTF ファイルに単純にコピーすることができるようになります。
このためのImga Textureノードの Color Space は Non-Color に設定されている必要があります。
Baked Ambient Occlusion
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 Material Output
, 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
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
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 Material Output
node.
Normal Map
glTFでノーマルマップを使用するには、Image Texture ノードのcolor出力をNormal Mapノードのcolor入力に接続し、Normal Mapのnormal出力を Principled BSDF ノードのnormal入力に接続します。このためには、Image Texture ノードの Color Space プロパティが Non-Color に設定されている必要があります。
Normal Mapノードは、現在 glTF でサポートされているノーマルマップの唯一のタイプであるため、Tangent Spaceのデフォルト プロパティのままにしておく必要があります。ノーマルマップの強さは、このノードで調整できます。エクスポータはこれらのノードを直接エクスポートするのではなく、正しい画像を見つけるためにこれらのノードを使用し、Strengthの設定をglTFにコピーします。
Tip
Cycles レンダーエンジンにはベイクパネルがあり、法線ベクトルノードの他のほぼすべての配置から接線空間法線マップをベイクするために使用できます。Bake typeをNormalに切り替えます。glTF にこのベイクパネルを使用する場合は、デフォルトのスペース設定(スペース: Tangent、R: +X、G: +Y、B: +Z)を維持してください。結果として得られたベイク画像は、上記のようにNormal Mapノードを使用して保存し、新しいマテリアルに差し込むことができ、正しく書き出すことができます。
Emissive
glTFマテリアルに放射マップを含むために、Image Texture ノードをPrincipled BSDF ノードの放射 入力に接続することができます。あるいは、Image Texture ノードをEmissionシェーダーノードに接続し、Add Shader ノードを介して、Principled BSDFノードからのプロパティと組み合わせることもできます。
エミッシブマップがマテリアル内に単独で存在する場合、ベースカラーのデフォルトを黒に、ラフネスのデフォルトを1.0に設定するのがベストです。これにより、他のチャンネルが不要な場合の影響を最小限に抑えることができます。
If any component of emissiveFactor is > 1.0, KHR_materials_emissive_strength
extension will be used.
Clearcoat
When the Clearcoat input on the Principled BSDF node has a nonzero 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.
If Image Textures are used, glTF requires that the clearcoat values be written to
the red (R
) channel, and Clearcoat Roughness to the green (G
) channel.
If monochrome images are connected, the exporter will remap them to these color channels.
The Clearcoat Normal input accepts the same kinds of inputs as the base Normal input, specifically a tangent-space normal map with +Y up, and a user-defined strength. This input can reuse the same normal map that the base material is using, or can be assigned its own normal map, or can be left disconnected for a smooth coating.
All Image Texture nodes used for clearcoat shading should have their Color Space set to Non-Color.
Sheen
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.
注釈
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).
Specular(スペキュラー)
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.
注釈
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
If you enable Shader Editor Add-ons in preferences, you will be able to add this custom node group from Menu: Add > Output > glTF Material Output
Transmission
When the Transmission input on the Principled BSDF node has a nonzero 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.
Transmission is different from alpha blending, because transmission allows full-strength specular reflections. In glTF, alpha blending is intended to represent physical materials that are partially missing from the specified geometry, such as medical gauze wrap. Transmission is intended to represent physical materials that are solid but allow non-specularly-reflected light to transmit through the material, like glass.
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
Typically the alpha blend mode of a transmissive material should remain "Opaque", the default setting, unless the material only partially covers the specified geometry.
注釈
In real-time engines where transmission is supported, various technical limitations in the engine may determine which parts of the scene are visible through the transmissive surface. In particular, transmissive materials may not be visible behind other transmissive materials. These limitations affect physically-based transmission, but not alpha-blended non-transmissive materials.
警告
Transmission is complex for real-time rendering engines to implement,
and support for the KHR_materials_transmission
glTF extension is not yet widespread.
IOR
At import, there are two different situation:
if
KHR_materials_ior
is not set, IOR value of Principled BSDF node is set to 1.5, that is the glTF default value of IOR.If set, the
KHR_materials_ior
is used to set the IOR value of Principled BSDF.
At export, IOR is included in the export only if one of these extensions are also used:
KHR_materials_transmission
KHR_materials_volume
KHR_materials_specular
IOR of 1.5 are not included in the export, because this is the default glTF IOR value.
Volume(ボリューム)
Volume can be exported using a Volume Absorption node, linked to Volume socket of Output node.
Data will be exported using the KHR_materials_volume
extension.
For volume to be exported, some transmission must be set on Principled BSDF node.
Color of Volume Absorption node is used as glTF attenuation color. No texture is allowed for this property.
Density of Volume Absorption node is used as inverse of glTF attenuation distance.
Thickess can be plugged into the Thickess socket of custom group node
glTF Material Output
.If a texture is used for thickness, it must be plugged on (
G
) Green channel of the image.
glTF Variants
注釈
For a full Variants experience, you have to enable UI in Add-on preferences
There are two location to manage glTF Variants in Blender
In 3D View, on
glTF Variants
tabFor advanced settings, in Mesh Material Properties (see Advanced glTF Variant checks)
The main concept to understand for using Variants, is that each material slot will be used as equivalent of a glTF primitive.
glTF Variants switching
After importing a glTF file including KHR_materials_variants
extension, all variants can be displayed.
You can switch Variant, by selecting the variant you want to display, then clicking on Display Variant.
You can switch to default materials (when no Variant are used), by clicking on Reset to default.
glTF Variants creation
You can add a new Variant by clicking the +
at right of the Variant list. Then you can change the name by double-clicking.
After changing Materials in Material Slots, you can assign current materials to the active Variant using Assign to Variant.
You can also set default materials using Assign as Original. These materials will be exported as default material in glTF.
This are materials that will be displayed by any viewer that don't manage KHR_materials_variants
extension.
Advanced glTF Variant checks
If you want to check primitive by primitive, what are Variants used, you can go to Mesh Material Properties.
The glTF Material Variants tab refers to the active material Slot and Material used by this slot. You can see every Variants that are using this material for the given Slot/Primitive.
You can also assign material to Variants from this tab, but recommandation is to perform it from 3D View tab.
Double-Sided / Backface Culling
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.
double-sidedマテリアルの場合は、このボックスのチェックを外したままにしておきます。
ブレンドモード
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:
- Opaque(不透明)
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.
注釈
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 Map ノードと Mapping ノードを任意の Image Texture ノードに接続することで、UV マップの選択と変換の制御が可能になります。
Mappingノードからの設定は、 KHR_texture_transform
という名前のglTF拡張機能を使ってエクスポートされます。上の方にマッピングタイプセレクタがあります。 Point はエクスポートに推奨されるタイプです。 Texture と Vector もサポートされています。サポートされているオフセットは以下の通りです。
Location - X and Y
Rotation - Z only
Scale - X and Y
Texture タイプの場合、XとYの Scale は等しくなければなりません(一様なスケーリング)。
Tip
これらのノードはオプションです。すべてのglTFリーダーが複数のUVマップやテクスチャ変換をサポートしているわけではありません。
要因
任意のイメージ テクスチャ ノードには、オプションで定数の色またはスカラーを乗算することができます。これらは glTF ファイル内に因子として書き込まれ、指定された画像テクスチャに乗算された数値となります。これらは一般的ではありません。
例
必要に応じて、ひとつのマテリアルで上記のすべてを同時に使用することができます。この図は、上記のいくつかのオプションを一度に適用した場合の典型的なノード構造を示しています。
Exporting a Shadeless (Unlit) Material
To export an unlit material, mix in a camera ray, and avoid using the Principled BSDF node.
Extensions(エクステンション)
コアとなる glTF 2.0 フォーマットは、glTF の拡張子を使用して、追加情報で拡張することができます。これにより、最初の公開時にはユニバーサルではないと考えられていた詳細な情報をファイルフォーマットに保持することができます。すべての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:
Import(インポート)
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
Export(エクスポート)
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
Third-party glTF Extensions
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.
カスタムプロパティ
Custom properties are always imported, and will be exported from most objects
if the extras
field on the corresponding object in the glTF file.
Unlike glTF extensions, custom properties (extras) have no defined namespace, and may be used for any user-specific or application-specific purposes.
Animation(アニメーション)
A glTF animation changes the transforms of objects or pose bones, or the values of shape keys. One animation can affect multiple objects, and there can be multiple animations in a glTF file.
Import(インポート)
Imported models are set up so that the first animation in the file is playing automatically. Scrub the Timeline to see it play.
When the file contains multiple animations, the rest will be organized using the Nonlinear Animation editor. Each animation becomes an action stashed to an NLA track. The track name is the name of the glTF animation. To make the animation within that track visible, click Solo (star icon) next to the track you want to play.
If an animation affects multiple objects, it will be broken up into multiple parts. The part of the animation that affects one object becomes an action stashed on that object. Use the track names to tell which actions are part of the same animation. To play the whole animation, you need to enable Solo (star icon) for all its tracks.
注釈
There is currently no way to see the non-animated pose of a model that had animations.
Export(エクスポート)
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!
A glTF animation can have a name, which is the action name by default. You can override it
by renaming its NLA track from NLATrack
/[Action Stash]
to the name you want to use.
For example, the Fig. fox model will export with three animations,
"Survey", "Walk", and "Run".
If you rename two tracks on two different objects to the same name, they will become part
of the same glTF animation and will play together.
The importer organizes actions so they will be exported correctly with this mode.
Group by NLA Track off
In this mode, the NLA organization is not used, and only one animation is exported using the active actions on all objects.
注釈
For both modes, remember only certain types of animation are supported:
Object transform (location, rotation, scale)
Pose bones
Shape key values
Animation of other properties, like physics, lights, or materials, will be ignored.
注釈
In order to sample shape key animations controlled by drivers using bone transformations, they must be on a mesh object that is a direct child of the bones' armature.
ファイル形式のバリエーション
glTFの仕様では、データが保存されるさまざまな方法を特定しています。インポーターはこれらすべての方法を処理します。エクスポータは、以下の形式のいずれかを選択するようにユーザーに要求します。
glTFバイナリ (.glb
)
これにより、すべてのメッシュデータ、イメージテクスチャ、関連する情報を一つのバイナリファイルに詰め込んだ .glb
ファイルが作成されます。
Tip
1つのファイルを使用することで、モデルを他のシステムやサービスに簡単に共有したりコピーしたりすることができます。
glTF Separate (.gltf
+ .bin
+ textures)
これは全体の構造を記述したJSONテキストベースの .gltf
ファイルと、メッシュとベクトルデータを含む .bin
ファイル、そしてオプションで .gltf
ファイルで参照された画像テクスチャを含む .png`
または .jpg
ファイルを生成します。
Tip
別々のファイルを用意しておくと、エクスポートが完了した後、ユーザーが戻ってJSONや画像を編集するのが非常に簡単になります。
注釈
このフォーマットを共有するには、これらの別々のファイルをすべてグループとして共有する必要があることに注意してください。
glTF Embedded (.gltf
)
This produces a JSON text-based .gltf
file, with all mesh data and
image data encoded (using Base64) within the file. This form is useful if
the asset must be shared over a plain-text-only connection.
警告
This is the least efficient of the available forms, and should only be used when required.
Properties(プロパティ)
Import(インポート)
- Pack Images
すべての画像をblendファイルに詰め込みます。
- Shading(シェーディング)
インポート時の法線の計算方法です。
- Guess Original Bind Pose
編集モードでのボーン(結果としてスキンメッシュ)のポーズを決定します。オンにすると、逆バインド行列の計算に使われたポーズを推測しようとします。
- Bone Direction
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.
Export(エクスポート)
- Format(フォーマット)
- Textures(テクスチャ)
Folder to place texture files in. Relative to the gltf-file.
- Copyright
モデルの法的権利と条件です。
- Remember Export Settings
エクスポート設定をblendファイルに保存し、次回ファイルを開いたときに呼び出せるようにします。
Include(内容)
- Selected Objects
選択したオブジェクトのみをエクスポートします。
- Visible Objects
Export visible objects only.
- Renderable Objects
Export renderable objects only.
- Active Collection
Export objects from active collection only.
- Active Scene
Export active scene only.
- カスタムプロパティ
カスタム プロパティを glTF extrasとしてエクスポートします。
- Cameras(カメラ)
カメラをエクスポートします。
- Punctual Lights
ディレクショナルライト、ポイントライト、スポットライトをエクスポートします。KHR_lights_punctual`` glTF 拡張モジュールを使用します。
Transform(トランスフォーム)
- Y Up
glTFの規定に沿って、+Yが上でエクスポートします。
Geometry(ジオメトリ)
- Apply Modifiers
Export objects using the evaluated mesh, meaning the resulting mesh after all Modifiers have been calculated.
- UVs(UV)
UV(テクスチャ座標)をメッシュでエクスポートします。
- Normals(法線、ノーマル)
頂点の法線をメッシュでエクスポートします。
- Tangents
頂点の接線をメッシュでエクスポートします。
- Vertex Colors
Export Color Attributes with meshes.
- Loose Edges
Export loose edges as lines, using the material from the first material slot.
- Loose Points
Export loose points as glTF points, using the material from the first material slot.
- Materials(マテリアル)
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).
- Images
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.
Compression(圧縮)
Google Dracoを使ってメッシュを圧縮します。
- Compression Level
圧縮率が高くなると、エンコードやデコードが遅くなります。
- Quantization Position
値が大きいほど圧縮率が高くなります。
- Normal(ノーマル)
値が大きいほど圧縮率が高くなります。
- Texture Coordinates(テクスチャ座標)
値が大きいほど圧縮率が高くなります。
- Color(カラー)
値が大きいほど圧縮率が高くなります。
- Generic(汎用)
値が大きいほど圧縮率が高くなります。
Animation(アニメーション)
- 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.
Animation(アニメーション)
Exports active actions and NLA tracks as glTF animations.
- Limit to Playback Range
選択した再生範囲にアニメーションをクリップします。
- Sampling Rate
アニメーションの値を評価する頻度(フレーム数)です。
- Always Sample Animations
Apply sampling to all animations.
- Group by NLA Track
Whether to export NLA strip animations.
- Optimize Animation Size
Reduce exported file-size by removing duplicate keyframes.
- Export Deformation Bones Only
Export deformation bones only.
Shape Keys(シェイプキー)
シェイプキー(モーフターゲット)をエクスポートします。
- Shape Key Normals
シェイプキー(モーフターゲット)を使って頂点法線を書き出します。
- Shape Key Tangents
シェイプキー(モーフターゲット)を使って頂点の接線をエクスポートします。
Skinning
Export skinning (armature) data.
- Include All Bone Influences
Allow more than 4 joint vertex influences. Models may appear incorrectly in many viewers.
Contributing
このインポータ/エクスポータは glTF-Blender-IO リポジトリ を通じて開発されており、バグレポートの提出、機能要求の提出、コードの貢献が可能です。
glTF 2.0フォーマット自体の議論や開発はKhronos Groupの glTF GitHubリポジトリ で行われており、そこでのフィードバックは歓迎されています。