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:
Clearcoat, Clearcoat Roughness, Clearcoat Normal (uses
KHR_materials_clearcoat
)Transmission (uses
KHR_materials_transmission
)"Shadeless" materials (uses
KHR_materials_unlit
)
Imported Materials¶
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.
ちなみに
マテリアルのインポート処理の結果を調べることで、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 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.
ちなみに
カスタムノードグループを作成する最も簡単な方法は、オクルージョンマップを含む既存のglTFモデル、例えば`water bottle<https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/WaterBottle>`__や他の既存のモデルをインポートすることです。手動で作成したカスタムノードグループを使用することもできます。
glTFは、赤(R
)チャンネルにオクルージョンを格納し、ラフネスやメタリックチャンネルと同じ画像を共有することができます。
ちなみに
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.
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にコピーします。
ちなみに
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に設定するのがベストです。これにより、他のチャンネルが不要な場合の影響を最小限に抑えることができます。
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.
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マテリアルの場合は、このボックスのチェックを外したままにしておきます。
ブレンドモード¶
ベースカラー入力には、オプションでアルファ値を与えることができます。これらの値が glTF でどのように扱われるかは、選択されているブレンド モードに依存します。
Eevee レンダーエンジンが選択されている場合、各マテリアルにはマテリアル設定パネルのブレンドモードがあります。この設定を使用して、ベースカラーチャンネルからのアルファ値が glTF でどのように扱われるかを定義します。glTF では 3 つの設定がサポートされています:
- Opaque(不透明)
アルファ値は無視されます。
- Alpha Blend
アルファ値が低いと、背景オブジェクトとの混ざり合いが発生します。
- Alpha Clip(アルファクリップ)
クリップしきい値 設定以下のアルファ値は、マテリアルの一部が全くレンダリングされない原因となります。それ以外の部分はすべて不透明としてレンダリングされます。
注釈
透過(または 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 は等しくなければなりません(一様なスケーリング)。
ちなみに
これらのノードはオプションです。すべての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_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 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".
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.
注釈
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(フォーマット)
- Textures(テクスチャ)
Folder to place texture files in. Relative to the gltf-file.
- 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
Apply modifiers (excluding armatures) to mesh objects.
- UVs(UV)
UV(テクスチャ座標)をメッシュでエクスポートします。
- Normals(法線、ノーマル)
頂点の法線をメッシュでエクスポートします。
- Tangents
頂点の接線をメッシュでエクスポートします。
- Vertex Colors(頂点カラー)
Export vertex colors with meshes.
- Materials(マテリアル)
Export materials.
- 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.
Compression(圧縮)¶
Google Dracoを使ってメッシュを圧縮します。
- Compression Level
圧縮率が高くなると、エンコードやデコードが遅くなります。
- Quantization Position
値が大きいほど圧縮率が高くなります。
- Normal(ノーマル)
値が大きいほど圧縮率が高くなります。
- Texture Coordinates(テクスチャ座標)
値が大きいほど圧縮率が高くなります。
- Generic(汎用)
値が大きいほど圧縮率が高くなります。
Animation(アニメーション)¶
- Use Current Frame
Export the scene in the current animation frame.
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.
- Export Deformation Bones Only
Export deformation bones only (and needed bones for hierarchy).
Shape Keys(シェイプキー)¶
シェイプキー(モーフターゲット)をエクスポートします。
- Shape Key Normals
シェイプキー(モーフターゲット)を使って頂点法線を書き出します。
- Shape Key Tangents
シェイプキー(モーフターゲット)を使って頂点の接線をエクスポートします。
Skinning¶
Export skinning (armature) data.
- Include All Bone Influences
4つ以上のジョイント頂点の影響を許可します。多くのビューアでモデルが正しく表示されない場合があります。
Contributing¶
このインポータ/エクスポータは glTF-Blender-IO リポジトリ を通じて開発されており、バグレポートの提出、機能要求の提出、コードの貢献が可能です。
glTF 2.0フォーマット自体の議論や開発はKhronos Groupの glTF GitHubリポジトリ で行われており、そこでのフィードバックは歓迎されています。