GLTF簡介
1.glTF(GL TransmissionFormat),即圖形語言交換格式,它是一種3D內容的格式標準,由Khronos Group管理(Khronos Group還管理著OpenGL系列、OpenCL等重要的行業標準);
2.glTF的設計是面向實時渲染應用的,盡量提供可以直接傳輸給圖形API的數據形式,不再需要二次轉換;
3.glTF對OpenGL ES、WebGL非常友好;
4.glTF的目標是:3D領域的JPEG;
5.作為一個標準,自2015年10月發布(glTF 1.0)以來,已經得到了業界廣泛的認可,你可以相信它的水平;
6.glTF目前最新版本為2.0已于2017年6月正式發布。
GLTF具體的數據存儲格式可以去官方網站上看:https://www.khronos.org/gltf/,大概就是相對于XML的JSON存儲方式。
文章關注的是GLTF給我們帶來的便利——節約存儲空間,減少帶寬壓力。
那么如何獲得GLTF格式文件?
目前已經有了很多的轉換工具:
其中Input代表輸入模型的格式,輸出為gltf格式。由于之前使用過Dae格式的文件(https://www.khronos.org/collada/),因此文章選取COLLADA2GLTF工具轉換文件:
千萬別糾結于工具源代碼的編譯,因為KhronosGroup已經給出了Release版本。這里說一些使用方法:
1.解壓zip文件,在根目錄新建dae文件夾——用于存放原始的dae文件
2.在根目錄新建gltf文件夾——用于存放轉換后的gltf文件
3.在根目錄按住Ctrl+Shift+Alt+鼠標右鍵,打開PowerShell窗口
4.在命令行中輸入:./collada2gltf-bin.exe input.dae output.gltf –i dae/input.dae –o gltf/output.gltf
其中input為dae文件的名稱,output為輸出gltf文件的名稱。
5.Enter開始轉換。
PS C:\Users\Ruby\Desktop\COLLADA2GLTF-v2.1.2-windows-Release-x64>./COLLADA2GLTF-bin.exe elf.dae elf.gltf -i dae/elf/elf.
dae -o gltf/elf.gltf
Convertingdae\elf\elf.dae -> gltf\elf.gltf
Time: 320 ms
原始dae文件包含4個jpg貼圖一共2.46M,轉換后為一個單獨的gltf文件約1.38M(含貼圖)。其實我很好奇那些貼圖文件去哪兒了,于是打開了gltf文件查看,發現在image數組下已經把這些貼圖文件用base 64編碼,變成一堆機器碼直接插在gltf文件中。
完成模型轉換以后,利用ThreeJS的LoadGLTF API導入網頁中瀏覽效果如下:
如何在GLTF格式中捕獲動畫?
上述過程展示了從Collada到gltf的轉換以及讓gltf模型展示在網頁上。下面將繼續研究如何獲取gltf模型的動畫("Talk is cheap,show me the code"——哈哈哈)
效果如圖所示:

至此,gltf從模型到動畫都run了一遍。
總結
GLTF格式號稱3D圖形界的JPEG,能夠實現快速的模型數據交換。在2017年中旬更新的2.0版本克服了一些低版本的功能缺陷,使得自身功能得到發展;同時,gltf解析及轉換Tool的快速發展,為GLTF的進一步推廣做出了很多的貢獻。文中也應證了,作為GLTF格式的用戶,能夠利用現有的工具對模型處理,減少模型的數據量,在WebGL的應用中在成倍地節省帶寬的同時能夠獲取同質量的模型以及動畫。
原文:https://cloud.tencent.com/developer/news/204942