glTF (GL Transmission Format) とは
glTFは、3Dモデルやシーンを形式で記述するためのオープンなファイルフォーマットです。その効率性から「3Dにおける
JPEG」とも称され、Khronos Groupによって開発されました。
WebGLなどのAPIを利用するアプリケーションでの実行時処理を最小化し、異なる環境間での相互運用性を高めることを目指しています。また、3Dコンテンツ制作ツールやサービス間で共通のフォーマットとして機能することを目指しています。
歴史
2012年3月、Khronosは
COLLADAと
WebGLの活用に関する会合を開催しました。この会合で、Fabrice Robinet氏が外部バイナリデータを参照する効率的なフォーマットの必要性を提唱しました。同年、
SIGGRAPH 2012の
WebGLミートアップでは、Brandon Jones氏とFabrice Robinet氏によって「
WebGL TF」という形式のデモが実施されました。
2013年3月には、Google Earth APIの代替となるCesiumが、独自のアセット形式ではなくglTFを採用することを発表しました。さらに、2015年8月には、3D TilesがglTFをベースに構築され、大規模な3D空間データセットの記述を可能にしました。
glTF 1.0
2015年8月19日、glTF 1.0の
仕様が正式に公開されました。2016年6月には、ジョン・カーマック氏がglTFの重要性について言及しています。同月、MicrosoftはKhronos Groupに参加し、glTFの開発に協力することを表明しました。また、同年12月には、ArchilogicがglTFでの3Dモデルの入出力機能をWebベースの3Dモデルエディタに追加しました。
glTF 2.0
2017年3月3日、MicrosoftはglTF 2.0を自社製品で共通のアセットフォーマットとして採用することを発表しました。同時に、フラウンホーファーIGDやペンシルバニア大学の研究者と協力し、
WebGL、DirectX、VulkanでglTF 2.0アセットをレンダリングするデモを実施しました。Sketchfabも同日、glTF 2.0のサポートを発表しました。
同年3月には、Googleが3Dメッシュ圧縮形式のDracoをglTFに統合する拡張を発表しました。glTF 2.0は、当初glTF 1.0.1(後のglTF 1.1)として開発が始まりましたが、物理ベースレンダリング(PBR)の急速な発展を受け、glTF 2.0として大幅に機能拡張されました。主な変更点は以下の通りです。
標準でメタリック・ラフネス、拡張でスペキュラ・発光のモデルに対応したPBRマテリアル。
表情アニメーションのためのモーフターゲットや差分データ。
glTF 1.0のバイナリ拡張(glb)のコア仕様への統合。
スキーマの微調整とパフォーマンス改善のための破壊的な変更。
glTF 2.0は2017年6月5日のWeb3D 2017 Conferenceで正式発表され、同年8月には
SIGGRAPHでMinecraftのglTF出力やAutodesk ForgeのglTF入力などがデモされました。Sketchfab上では10万を超えるglTFアセットが公開されました。
また、2017年9月には
BlenderがglTF出力プラグインの開発を発表し、Apple Watch Series 3のWebサイトでもglTFが使用されました。2018年2月には、
FacebookがglTF 2.0を使った3D Postsのベータテストを開始し、
レゴの3Dモデルをデモンストレーションしました。2013年以降、NORAD Tracks SantaではサンタとトナカイのモデルにglTFが採用されています。
さらに、Unityでの入出力対応や、複数のエンジンを搭載したビューワーとバリデータの開発も進んでいます。2018年6月にはOculus Homeがバージョン1.27でglTF 2.0に対応しました。
GLB
GLBはglTFのバイナリ形式で、テクスチャを外部ファイル参照なしで同梱できるのが特徴です。
Facebook 3D Postsの標準フォーマットとしても採用されています。
glTFのロードマップ
glTFの次の
仕様や拡張については、2017年6月30日からGitHubで議論が行われています。
批判
ベテランのエンジン開発者であるEric Lengyel氏は、glTFの柔軟性の欠如や設計の貧弱さを批判しています。特に、シーン構造、マテリアル適用、スキニング、照明に関する機能の不足、物理単位やグローバルアップ方向ベクトルの定義ができない点を指摘しています。また、アニメーションサポートに関しても、立方スプライン補間において時間軸が線形であることを要求されるため、一般的なモデリングソフトウェアでのアニメーションを正確に再現することが難しいと述べています。Godot Engineのリード開発者であるJuan Linietsky氏もこの意見に同意、または一部異なる意見を表明しています。
ソフトウェアエコシステム
glTFは多くのオープンソース
WebGLエンジン(Three.js、BabylonJS、Cesiumなど)に読み込み機能が搭載されています。また、
COLLADA、FBX、OBJなどのフォーマットからの変換を可能にするコンバータも存在します。AssimpはglTFの出力にも対応しています。
Blender、
3ds Max、
Mayaなどの主要な3DCG制作ソフトウェアもglTFの出力に対応しています。
オープンソースのglTFユーティリティライブラリは、
JavaScript、
Node.js、
C++、C#、
Java、Go、Rustなどの多様な言語で利用可能です。また、glTFの公式GitHub
リポジトリでは、対応ソフトウェアのリストが更新されています。さらに、glTFの
仕様に適合しているかどうかを検証するための公式バリデータも提供されています。
参考
COLLADA
OpenGEX
外部リンク
公式ウェブサイト
仕様