GLB ファイル形式とは?
.glb は、Khronos Group によって開発・維持されている .gltf 形式(GL Transmission Format)のバイナリコンテナ版です。.gltf ファイルが外部の .bin ジオメトリファイルや個別の画像アセットを参照するプレーンな JSON であるのに対し、.glb ファイルはシーングラフの JSON、バイナリのジオメトリおよびアニメーションバッファ、埋め込みテクスチャのすべてを 1 つの自己完結型ファイルにまとめます。
ファイルは 12 バイトのリトルエンディアンヘッダーで始まります。ASCII マジック文字列 glTF(16 進数 67 6C 54 46)、uint32 のバージョンフィールド(glTF 2.0 の場合は値 2)、および uint32 のファイル総長です。ヘッダーに続いて、長さが指定されたチャンクが続きます。ノード、マテリアル、カメラ、アニメーションなどのシーン記述を含む JSON チャンクと、生のバイナリバッファデータを保持する BIN\ チャンクです。
.glb は、そのコンパクトなサイズ、幅広いサポート、Web 配信への適性から、「3D 界の JPEG」と呼ばれることもあります。Android の Scene Viewer や <model-viewer> Web コンポーネントを介した AR の標準アセット形式であり、three.js や Babylon.js などの WebGL エンジンで広く使用されています。.fbx や .obj と比較して、物理ベースのマテリアルが組み込まれたリアルタイムレンダリング専用に設計されています。
オプションの Khronos 拡張機能により、Draco メッシュ圧縮(KHR_draco_mesh_compression)や KTX2/Basis Universal テクスチャ圧縮(KHR_texture_basisu)を追加でき、大規模なシーンのファイルサイズを大幅に削減できます。
セキュリティと安全性
リスク: LOWGLB は実行ファイルではなく 3D データであるため、表示のために開くことは安全です。現実的な注意点は悪意のないものです。非常に高ポリゴンなスキャンデータや 4K テクスチャは読み込みが重くなる可能性があり、歴史的には一部の glTF/GLB ローダーにパーサーの脆弱性が存在したことがあります。3D ソフトウェアやブラウザベースのビューアを最新の状態に保ち、信頼できるソースからモデルをインポートしてください。いつものように、実際の拡張子を確認してください。「model.glb」を装った実行ファイルこそが本当のリスクであり、GLB 形式自体がリスクではありません。
形式の詳細
概要- Raptor: Call of the Shadows サポートファイル - 1994 年の DOS ゲーム «Raptor» 用のレガシーデータファイル。ソースデータベースはこのファイルを .glb の主要な意味として誤ってラベル付けしていますが、これは廃止されており、主流の glTF Binary 形式とは無関係です。
- Analytical Graphics STK globe/データファイル - 古い GIS/STK 補助ファイル。3D glTF Binary の意味と比較すると非常にニッチです。
GLB ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルマジック(シグネチャ) | バイトオフセット 0 の ASCII «glTF» (16進数: 67 6C 54 46) |
| バイト順序 | 全体を通してリトルエンディアン |
| ヘッダーサイズ | 12 バイト: 4 バイトのマジック + uint32 バージョン (値 2) + uint32 ファイル総長 |
| チャンク構造 | JSON チャンク (タイプ 0x4E4F534A) の後に BIN チャンク (タイプ 0x004E4942) が続く。各チャンクの前に uint32 のチャンク長と uint32 のチャンクタイプが付与される |
| MIME タイプ | model/gltf-binary (application/octet-stream としても提供される) |
| エンコーディング | UTF-8 JSON シーン記述 + 生のバイナリジオメトリ/アニメーションバッファを包むバイナリコンテナ |
| 圧縮 | デフォルトではなし。KHR_draco_mesh_compression によるオプションの Draco メッシュ圧縮、および KHR_texture_basisu による KTX2/Basis Universal テクスチャが可能 |
| PBR マテリアルモデル | JSON チャンクで定義された物理ベースの metallic-roughness シェーディング。KHR_materials_specular による specular-glossiness もサポート |
| アニメーションのサポート | 平行移動、回転、スケール、モーフターゲットのウェイトのキーフレームアニメーション。ジョイント階層によるスケルタル/スキンアニメーション |
| テクスチャの色深度 | 8 bpc (埋め込み JPEG または PNG による 24ビット RGB または 32ビット RGBA)。拡張機能による HDR 環境マップ |
| テクスチャサイズの制限 | 形式による制限はなし。実際には GPU に依存(一般的にテクスチャあたり最大 8192×8192 まで) |
| 自己完結性 | すべてのジオメトリ、テクスチャ、アニメーション、シーングラフが 1 つのファイルにバンドルされる。.gltf + .bin + 画像ファイルのような外部依存関係はない |
| バージョンフィールド | GLB ヘッダー内の uint32 が glTF 2.0 (値 2) を識別。JSON チャンク内にも asset.version = «2.0» が存在 |
| 一般的なファイルサイズ | 50 KB - 100 MB。ほとんどの Web および AR アセットは 1-30 MB の範囲に収まる |
| プラットフォームのサポート | Windows, macOS, Linux, Android, iOS および Web (three.js, Babylon.js, model-viewer を介した WebGL) |
| 暗号化 / 整合性 | 組み込みの暗号化やチェックサムはなし。ヘッダーのファイル総長フィールドのみ |
| リリース日 | 2017 (glTF 2.0; GLB binary container) |
| 最新バージョン | glTF 2.0 (GLB container, ratified by Khronos; ongoing extensions e.g. KHR_materials_*) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | registry.khronos.org |
GLB の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。GLB ファイルについて最初の質問をしてみましょう。