aspose.info
JA

GLB

更新日

.GLB オプション番号

GLB は、GL Transmission Format (glTF) で保存された 3D モデルのバイナリ ファイル形式表現です。バイナリ形式のノード階層、カメラ、マテリアル、アニメーション、メッシュなどの 3D モデルに関する情報。このバイナリ形式は、glTF アセット (JSON、.bin、および画像) をバイナリ BLOB に格納します。また、glTF の場合に発生するファイル サイズの増加の問題も回避されます。 GLB ファイル形式により、コンパクトなファイル サイズ、高速読み込み、完全な 3D シーン表現、およびさらなる開発のための拡張性が実現します。この形式は、MIME タイプとして model/gltf-binary を使用します。

GLB ファイル形式 - 詳細情報

glTF で使用されるコンテンツ配信方法では、base-64 でエンコードされたバイナリ データをデコードするための余分な処理が必要になり、ファイル サイズも 33% 増加します。 GLBファイル形式の形成に貢献したこれらの配信方法には、次のものがあります。

  • glTF JSON は、外部バイナリ データ (ジオメトリ、キー フレーム、スキン)、および画像を指します。
  • glTF JSON は、base64 でエンコードされたバイナリ データと、データ URI を使用してインラインで画像を埋め込みます。

コンテナー形式としての GLB は、glTF によって引き起こされる問題を回避するために、バイナリ BLOB で glTF アセットを表現するためのバイナリ ファイル形式として導入されました。 GLB ファイル形式の 仕様 は、アプリケーション開発用の同じリーダー/ライターの実装について参照する必要があります。 .

GLB ファイル構造

GLB ファイル形式はリトル エンディアンに基づいており、その構造は次の内容を示しています。

  • ヘッダーと呼ばれる 12 バイトのプリアンブル。
  • JSON コンテンツとバイナリ データを含む 1 つ以上のチャンク。

GLB ヘッダー

GLB ファイル形式のヘッダーは、次の 3 つの 4 バイト エントリで構成されます。

  • uint32 マジック - マジックは 0x46546C67 に等しい。これは ASCII 文字列の glTF であり、データをバイナリ glTF として識別するために使用できます。
  • uint32 バージョン - Binary glTF コンテナー形式のバージョンを示します
  • uin32 の長さ - ヘッダーとバイト単位のすべてのチャンクを含む Binary glTF の全長

チャンク

GLB ファイルの各チャンクには、次の構造があります。

uint32uint32ubyte[]
chunkLengthchunkTypechunkData
  • chunkLength - チャンクデータの長さ (バイト単位)
  • chunkType - チャンクのタイプを示します
  • chunkData - チャンクのバイナリ ペイロード

チャンクの種類は次のとおりです。

#チャンク タイプASCII説明オカレンス
1.0x4E4F534AJSON構造化された JSON コンテンツ1
2.0x004E4942BINバイナリバッファ0または1

各チャンクの開始と終了は 4 バイト境界に揃える必要があり、この目的のためにパディングを使用する必要があります。

構造化された JSON コンテンツ

これは Binary glTF アセットの最初のチャンクである必要があり、実装が後続のチャンクからリソースを段階的に取得できるようにします。これにより、メッシュの最も粗い LOD など、バイナリ glTF アセットから選択したリソースのサブセットのみを読み取る機能も提供されます。アラインメント要件を満たすために、このチャンクは末尾のスペース文字 (0x20) でパディングする必要があります。

バイナリバッファ

このチャンクには、ジオメトリ、アニメーション キー フレーム、スキン、および画像のバイナリ ペイロードが含まれています。これは、Binary glTF アセットの 2 番目のチャンクである必要があり、配置要件を満たすために、末尾にゼロ (0x00) を埋め込む必要があります。

参照

関連項目