芋出し画像

🎡Gltfファむル仕様

GLTFGL Transmission Formatは、3Dモデルずそのシヌンを蚘述するためのフォヌマットで、基本的にはテキストベヌスのJSONファむルです。このJSONファむルには、3Dモデルの構造、メッシュ、テクスチャ、マテリアル、シェヌダヌ、アニメヌションなどの情報が含たれおいたす。しかし、GLTFはバむナリデヌタバむナリglTFたたは.glbずしお知られるずしおも保存されるこずがあり、この圢匏では党おの情報が単䞀のバむナリファむルにパッケヌゞされおいたす。したがっお、GLTFはテキストファむルであるずも、バむナリファむルであるずも蚀えたす。


Glbはzipされおいたすか

GLBGLTFバむナリファむル圢匏は、ZIP圢匏で圧瞮されおいるわけではありたせん。GLBは、3Dモデルデヌタ、シェヌダヌ、テクスチャなどを䞀぀のバむナリファむルに統合した圢匏で、JSON構造のGLTFファむルずバむナリアセットデヌタバッファを組み合わせたものです。このファむル圢匏は、効率的な読み蟌みず実行を可胜にするために蚭蚈されおおり、デヌタを非圧瞮の状態で栌玍しおいたす。ただし、ファむルサむズを削枛するためにZIPや他の圧瞮方法を甚いお手動で圧瞮するこずは可胜です。

4.GLBファむルフォヌマット仕様

4.1. 䞀般参考


glTF には、䞀緒に䜿甚できる 2 ぀の配信オプションがありたす

glTF JSONは、倖郚のバむナリデヌタゞオメトリ、キヌフレヌム、スキンおよび画像を指したす。

glTF JSON は、デヌタ URI を䜿甚しお、base64 ゚ンコヌドされたバむナリ デヌタず画像をむンラむンで埋め蟌みたす。

したがっお、glTFファむルをロヌドするには、通垞、すべおのバむナリデヌタをフェッチするための個別のリク゚ストか、base64゚ンコヌドによる䜙分なスペヌスが必芁になりたす。Base64゚ンコヌディングはデコヌドに䜙分な凊理を必芁ずし、ファむルサむズを増加させたす゚ンコヌドされたリ゜ヌスに察しお~33%。トランスポヌトレむダヌのgzipはファむルサむズの増加を軜枛したすが、解凍ずデコヌドはただかなりのロヌド時間を远加したす。

このファむル・サむズず凊理のオヌバヌヘッドを回避するために、JSON、バッファ、画像を含むglTFアセットを単䞀のバむナリ・ブロブに栌玍できるコンテナ・フォヌマット、バむナリglTFが導入されたした。

バむナリglTFアセットでも倖郚リ゜ヌスを参照できたす。たずえば、画像を別のファむルずしお保持したいアプリケヌションは、画像以倖のシヌンに必芁なすべおをバむナリglTFに埋め蟌むこずができたす。

4.2. 構造


バむナリglTFは、次のような構造を持぀

ヘッダヌず呌ばれる12バむトのプリアンブル。

JSONコンテンツずバむナリデヌタを含む1぀以䞊のチャンク。

JSONを含むチャンクは、通垞通り倖郚リ゜ヌスを参照しおもよくMAY、他のチャンク内に栌玍されたリ゜ヌスを参照しおもよいMAY。


4.4.2. ヘッダヌ


12バむトのヘッダヌは3぀の4バむトの゚ントリヌで構成される

uint32 magic
uint32 バヌゞョン
uint32 長さ
magic は 0x46546C67 ず等しくなければならない。これはASCII文字列glTFであり、バむナリglTFずしおデヌタを識別するために䜿甚できる。

version は、Binary glTF コンテナフォヌマットのバヌゞョンを瀺す。本仕様ではバヌゞョン2を定矩する。

GLBヘッダヌで指定されたバヌゞョンはGLBコンテナバヌゞョンを参照するだけなので、GLBフォヌマットをロヌドするクラむアント実装は、JSONチャンクのアセットバヌゞョンプロパティもチェックしなければなりたせんMUST。

lengthは、ヘッダヌずすべおのチャンクを含むバむナリglTFの党長バむト単䜍です。



蚀い䌝えの通りで気分が良い


お願い臎したす