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)

  • 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

  • Emissive

  • Clearcoat (requires KHR_materials_clearcoat)

../../_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形式である必要があります。このアドオンは、他の形式の画像を自動的に変換し、書き出し時間を長くします。

ちなみに

Shadeless(Unlit)マテリアルを作成するには、Backgroundマテリアルタイプを使用します。

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ノードを直接使用する方がシンプルです。

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マテリアル。

拡張機能

コアとなる 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_unlit

  • KHR_texture_transform

アニメーション

glTFでは、エクスポート時に特定のオブジェクトをターゲットにしたアニメーションを使用して、1つのファイルに複数のアニメーションを作成することができます。アニメーションを確実に含めるには、(a)オブジェクト上でアクティブなActionにするか、(b)シングルストリップのNLAトラックを作成するか、(c)Actionを隠しておくかのいずれかを選択します。

サポート済み

特定の種類のアニメーションのみサポートされています。

  • キーフレーム (translation, rotation, scale)

  • シェイプキー

  • アーマチュア / スキニング

ライトやマテリアルなど、これ以外のプロパティのアニメーションは無視されます。

*NLA Strip animation*は、複数のオブジェクトに対して複数のアクションを同時に再生することで構成されます。My Animation "という名前のNLAストリップ・アニメーションを作成するには、"My Animation "という名前のオブジェクトのNLAトラックに、各オブジェクトを再生するアクションをプッシュします。

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

ConeActionがCone上で再生され、CubeActionがCube上で再生される"My Animation"というアニメーションとしてエクスポートされます。

Animation ‣ Group by NLA Track オプションが選択されている場合(デフォルトではオン)、NLA Stripアニメーションがエクスポートされます。すべてのglTFアニメーションはNLA Stripアニメーションとしてインポートされます。

このオプションを無効にすると、BlenderのNLAストリップアクションは無視されます。各オブジェクトのアクティブなアクションのみが考慮され、1つのglTFアニメーションにマージされます。

カスタムプロパティ

ほとんどのオブジェクトのカスタムプロパティは、glTFのexport/importで保存され、ユーザー固有の目的のために使用することができます。

ファイル形式のバリエーション

glTFの仕様では、データが保存されるさまざまな方法を特定しています。インポーターはこれらすべての方法を処理します。エクスポータは、以下の形式のいずれかを選択するようにユーザーに要求します。

glTFバイナリ (.glb)

これにより、すべてのメッシュデータ、イメージテクスチャ、関連する情報を一つのバイナリファイルに詰め込んだ .glb ファイルが作成されます。

ちなみに

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

glTF Separate (.gltf + .bin + textures)

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

ちなみに

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

注釈

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

glTF Embedded (.gltf)

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

警告

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

プロパティ

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

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

アニメーション

Use Current Frame

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

アニメーション

アクティブなアクションと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>`__で行われており、そこでのフィードバックは歓迎されています。