glTF 2.0

Reference

Category

Import-Export

Menu

File ‣ Import/Export ‣ glTF 2.0 (.glb, .gltf)

使用方法

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と比較して頂点数がやや多くなることがあります。同様に、曲線やその他の非メッシュデータは保持されず、エクスポートする前にメッシュに変換しなければなりません。

マテリアル

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:

  • Clearcoat, Clearcoat Roughness, Clearcoat Normal (uses KHR_materials_clearcoat)

  • Transmission (uses KHR_materials_transmission)

  • "Shadeless" materials (uses KHR_materials_unlit)

../../_images/addons_import-export_scene-gltf2_material-channels.jpg

glTF 2.0コアフォーマットで利用可能な様々な画像マップの例です。これは、`water bottle sample model <https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/WaterBottle>`__を様々な画像マップのスライスと一緒に表示したものです。

Imported Materials

glTFのマテリアルシステムはBlender独自のマテリアルとは異なります。glTF ファイルがインポートされると、アドオンは Blender ノードのセットを構築して、それぞれの glTF マテリアルを可能な限り忠実に複製します。

インポーターは、Metal/Rough PBR(core glTF)、Spec/Gloss PBR(KHR_materials_pbrSpecularGlossiness)、Shadeless(KHR_materials_unlit)マテリアルをサポートしています。

ちなみに

マテリアルのインポート処理の結果を調べることで、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マテリアルのベースカラーとして使用されます。

../../_images/addons_import-export_scene-gltf2_material-base-color-solid-green.png

ソリッドベースの色をノード上で直接指定することができます。

Image TextureノードがBase Color入力に接続されていることが判明した場合、その画像がglTFのベースカラーとして使用されます。

../../_images/addons_import-export_scene-gltf2_material-base-color-image-hookup.png

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 に設定されている必要があります。

../../_images/addons_import-export_scene-gltf2_material-metal-rough.png

メタリック/ラフネスの画像をglTF標準に準拠した方法で接続し、エクスポートされたglTFファイル内でその通りに使用できるようにします。

Baked Ambient Occlusion

glTFは、ベイクされたアンビエントオクルージョンマップを保存することができます。現在のところ、BlenderがこのようなマップをglTFで意図されているのと全く同じ方法で使用するようなノードの配置はありません。しかし、もしエクスポータが glTF Settings という名前のカスタムノードグループを見つけ、そのノードグループに Occlusion という名前の入力を見つけると、glTFのオクルージョンマップとして使用するために、そこに添付されているImage Textureを探します。Blenderにはアンビエントオクルージョンを表示する他の方法があるので、この効果をBlenderで表示する必要はありませんが、この方法ではエクスポーターがオクルージョンイメージをglTFに書き込むことができます。これはリアルタイムのglTFビューア、特にレンダリング時にそのようなことを計算するためのパワーに余裕がないプラットフォームでは有用です。

../../_images/addons_import-export_scene-gltf2_material-occlusion-only.png

プリベイクされたアンビエントオクルージョンマップで、レンダリングはしないがglTFにエクスポートされるノードに接続されています。

ちなみに

カスタムノードグループを作成する最も簡単な方法は、オクルージョンマップを含む既存のglTFモデル、例えば`water bottle<https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/WaterBottle>`__や他の既存のモデルをインポートすることです。手動で作成したカスタムノードグループを使用することもできます。

glTFは、赤(R)チャンネルにオクルージョンを格納し、ラフネスやメタリックチャンネルと同じ画像を共有することができます。

../../_images/addons_import-export_scene-gltf2_material-orm-hookup.png

このノードの組み合わせは、glTFがオクルージョン、ラフネス、およびメタリック値を単一の画像にまとめる方法を模倣しています。

ちなみに

Cyclesレンダーエンジンにはベイクパネルがあり、これを使ってアンビエントオクルージョンマップをベイクすることができます。出来上がった画像は保存して、 glTF Settings ノードに直接接続することができます。

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にコピーします。

../../_images/addons_import-export_scene-gltf2_material-normal.png

エクスポータに認識されglTFファイルにコピーされるように接続されたノーマルマップの画像。

ちなみに

Cycles レンダーエンジンにはベイクパネルがあり、法線ベクトルノードの他のほぼすべての配置から接線空間法線マップをベイクするために使用できます。Bake typeをNormalに切り替えます。glTF にこのベイクパネルを使用する場合は、デフォルトのスペース設定(スペース: Tangent、R: +X、G: +Y、B: +Z)を維持してください。結果として得られたベイク画像は、上記のようにNormal Mapノードを使用して保存し、新しいマテリアルに差し込むことができ、正しく書き出すことができます。

関連: Cycles Render Baking

Emissive

glTFマテリアルに放射マップを含むために、Image Texture ノードをPrincipled BSDF ノードの放射 入力に接続することができます。あるいは、Image Texture ノードをEmissionシェーダーノードに接続し、Add Shader ノードを介して、Principled BSDFノードからのプロパティと組み合わせることもできます。

エミッシブマップがマテリアル内に単独で存在する場合、ベースカラーのデフォルトを黒に、ラフネスのデフォルトを1.0に設定するのがベストです。これにより、他のチャンネルが不要な場合の影響を最小限に抑えることができます。

../../_images/addons_import-export_scene-gltf2_material-emissive.png

この配置は後方互換性のためにサポートされています。Principled BSDFノードを直接使用する方がシンプルです。

Clearcoat

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.

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.

../../_images/addons_import-export_scene-gltf2_material-clearcoat.png

An example of a complex clearcoat application that will export correctly to glTF. A much simpler, smooth coating can be applied from just the Principled BSDF node alone.

Transmission

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.

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.

ちなみに

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.

Double-Sided / Backface Culling

正面のみが見えるマテリアルの場合は、Eeveeマテリアルの*Settings*パネルで*Backface Culling*をオンにしてください。他のエンジン(Cycles、Workbench)を使用している場合、一時的にEeveeに切り替えてこの設定を設定した後、元に戻すことができます。

double-sidedマテリアルの場合は、このボックスのチェックを外したままにしておきます。

../../_images/addons_import-export_scene-gltf2_material-backface-culling.png

この設定のinverseは glTFの DoubleSided フラグを制御します。

ブレンドモード

ベースカラー入力には、オプションでアルファ値を与えることができます。これらの値が glTF でどのように扱われるかは、選択されているブレンド モードに依存します。

Eevee レンダーエンジンが選択されている場合、各マテリアルにはマテリアル設定パネルのブレンドモードがあります。この設定を使用して、ベースカラーチャンネルからのアルファ値が glTF でどのように扱われるかを定義します。glTF では 3 つの設定がサポートされています。

Opaque

アルファ値は無視されます。

Alpha Blend

アルファ値が低いと、背景オブジェクトとの混ざり合いが発生します。

Alpha Clip

クリップしきい値 設定以下のアルファ値は、マテリアルの一部が全くレンダリングされない原因となります。それ以外の部分はすべて不透明としてレンダリングされます。

../../_images/addons_import-export_scene-gltf2_material-alpha-blend.png

Eeveeエンジンを選択すると、マテリアルのブレンドモードを設定することができます。

注釈

透過(または Alpha Blend モード)は、リアルタイムエンジンがレンダリングするには複雑で、エクスポート後に予期せぬ挙動を示す可能性があることに注意してください。可能であれば、代わりに Alpha Clip モードを使用するか、Opaque ポリゴンを Alpha Blend ポリゴンの 1 つのレイヤーだけの後ろに配置してください。

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*は等しくなければなりません(一様なスケーリング)。

../../_images/addons_import-export_scene-gltf2_material-mapping.png

意図的に選んだUVマッピング。

ちなみに

これらのノードはオプションです。すべてのglTFリーダーが複数のUVマップやテクスチャ変換をサポートしているわけではありません。

要因

任意のイメージ テクスチャ ノードには、オプションで定数の色またはスカラーを乗算することができます。これらは glTF ファイル内に因子として書き込まれ、指定された画像テクスチャに乗算された数値となります。これらは一般的ではありません。

必要に応じて、ひとつのマテリアルで上記のすべてを同時に使用することができます。この図は、上記のいくつかのオプションを一度に適用した場合の典型的なノード構造を示しています。

../../_images/addons_import-export_scene-gltf2_material-principled.png

発光性のあるテクスチャーのPrincipled BSDFマテリアル。

Exporting a Shadeless (Unlit) Material

To export an unlit material, mix in a camera ray, and avoid using the Principled BSDF node.

../../_images/addons_import-export_scene-gltf2_material-unlit.png

One of several similar node arrangements that will export KHR_materials_unlit and render shadeless in Blender.

拡張機能

コアとなる glTF 2.0 フォーマットは、glTF の拡張子を使用して、追加情報で拡張することができます。これにより、最初の公開時にはユニバーサルではないと考えられていた詳細な情報をファイルフォーマットに保持することができます。すべてのglTFリーダーがすべての拡張子をサポートしているわけではありませんが、かなり一般的なものもあります。

Blender の特定の機能は、これらの拡張機能を介してのみ glTF にエクスポートすることができます。以下の glTF 2.0 拡張モジュール は、このアドオンで直接サポートされています。

Import

  • KHR_materials_pbrSpecularGlossiness

  • KHR_lights_punctual

  • KHR_materials_unlit

  • KHR_texture_transform

  • KHR_materials_clearcoat

  • KHR_mesh_quantization

Export

  • KHR_draco_mesh_compression

  • KHR_lights_punctual

  • KHR_materials_clearcoat

  • KHR_materials_transmission

  • KHR_materials_unlit

  • 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 Include ‣ Custom Properties option is selected before export. These are stored in 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

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".

../../_images/addons_import-export_scene-gltf2_nla-strip-animation-example.png

Will be exported as an animation called "My Animation" with ConeAction playing on the Cone and CubeAction playing on the Cube.

NLA Strip animations will be exported if the Animation ‣ Group by NLA Track 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.

注釈

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 ファイルが作成されます。

ちなみに

1つのファイルを使用することで、モデルを他のシステムやサービスに簡単に共有したりコピーしたりすることができます。

glTF Separate (.gltf + .bin + textures)

これは全体の構造を記述したJSONテキストベースの .gltf ファイルと、メッシュとベクトルデータを含む .bin ファイル、そしてオプションで .gltf ファイルで参照された画像テクスチャを含む .png` または .jpg ファイルを生成します。

ちなみに

別々のファイルを用意しておくと、エクスポートが完了した後、ユーザーが戻ってJSONや画像を編集するのが非常に簡単になります。

注釈

このフォーマットを共有するには、これらの別々のファイルをすべてグループとして共有する必要があることに注意してください。

glTF Embedded (.gltf)

これはJSONテキストベースの .gltf ファイルを生成し、すべてのメッシュデータと画像データはファイル内で(Base64を使用して)エンコードされます。この形式は、アセットをプレーンテキストのみの接続で共有しなければならない場合に便利です。

警告

これは、利用可能なフォームの中で最も効率が悪いので、必要な場合にのみ使用してください。

Properties

Import

Pack Images

すべての画像をblendファイルに詰め込みます。

Shading

インポート時の法線の計算方法です。

Guess Original Bind Pose

編集モードでのボーン(結果としてスキンメッシュ)のポーズを決定します。オンにすると、逆バインド行列の計算に使われたポーズを推測しようとします。

Bone Direction

インポーターがボーンチップをどこに配置するかを決定する際に使用するヒューリスティックを変更します。Fortune設定は、不均一なスケーリングを使用しているモデルでは不正確さを引き起こす可能性があることに注意してください。それ以外の場合は、これは純粋に美しいものです。

Export

Format

関連: File Format Variations.

Textures

テクスチャファイルを配置するフォルダ。glTFファイルを基準にしています。

Copyright

モデルの法的権利と条件です。

Remember Export Settings

エクスポート設定をblendファイルに保存し、次回ファイルを開いたときに呼び出せるようにします。

Include

Selected Objects

選択したオブジェクトのみをエクスポートします。

カスタムプロパティ

カスタム プロパティを glTF extrasとしてエクスポートします。

Cameras

カメラをエクスポートします。

Punctual Lights

ディレクショナルライト、ポイントライト、スポットライトをエクスポートします。KHR_lights_punctual`` glTF 拡張モジュールを使用します。

Transform

Y Up

glTFの規定に沿って、+Yが上でエクスポートします。

Geometry

Apply Modifiers

モディファイア(アーマチュアを除く)をメッシュオブジェクトに適用します。

UVs

UV(テクスチャ座標)をメッシュでエクスポートします。

Normals

頂点の法線をメッシュでエクスポートします。

Tangents

頂点の接線をメッシュでエクスポートします。

Vertex Colors

頂点カラーをメッシュでエクスポートします。

マテリアル

マテリアルをエクスポートします。

Images

画像の出力形式。一般的には損失の少ないPNGが好まれますが、ウェブアプリケーションではファイルサイズが小さいためJPEGの方が好まれるかもしれません。

Compression

Google Dracoを使ってメッシュを圧縮します。

Compression Level

圧縮率が高くなると、エンコードやデコードが遅くなります。

Quantization Position

値が大きいほど圧縮率が高くなります。

Normal

値が大きいほど圧縮率が高くなります。

Texture Coordinates

値が大きいほど圧縮率が高くなります。

Generic

値が大きいほど圧縮率が高くなります。

Animation

Use Current Frame

現在のアニメーションフレームでシーンをエクスポートします。

Animation

アクティブなアクションとNLAトラックをglTFアニメーションとしてエクスポートします。

Limit to Playback Range

選択した再生範囲にアニメーションをクリップします。

Sampling Rate

アニメーションの値を評価する頻度(フレーム数)です。

Always Sample Animations

すべてのアニメーションにサンプリングを適用します。

Group by NLA Track

NLAストリップアニメーションをエクスポートするかどうかです。

Export Deformation Bones Only

変形用のボーンのみをエクスポートします(階層に必要なボーンも含む)。

Shape Keys

シェイプキー(モーフターゲット)をエクスポートします。

Shape Key Normals

シェイプキー(モーフターゲット)を使って頂点法線を書き出します。

Shape Key Tangents

シェイプキー(モーフターゲット)を使って頂点の接線をエクスポートします。

Skinning

スキニング(アーマチュア)データをエクスポートします。

Include All Bone Influences

4つ以上のジョイント頂点の影響を許可します。多くのビューアでモデルが正しく表示されない場合があります。

Contributing

このインポータ/エクスポータは glTF-Blender-IO リポジトリ を通じて開発されており、バグレポートの提出、機能要求の提出、コードの貢献が可能です。

glTF 2.0フォーマット自体の議論や開発はKhronos Groupの `glTF GitHubリポジトリ <https://github.com/KhronosGroup/glTF>`__で行われており、そこでのフィードバックは歓迎されています。