天天看點

glTF格式簡介

glTF格式簡介

越來越多的應用程式和服務基于3D内容。線上商店提供帶有3D預覽的産品配置器。博物館通過3D掃描将其工件數字化,并允許通路者在虛拟畫廊中探索他們的館藏。城市規劃者使用3D城市模型進行規劃和資訊可視化。教育工作者建立人體的互動式動畫3D模型。其中許多應用程式直接在Web浏覽器中運作,這是可能的,因為所有現代浏覽器都支援使用WebGL進行高效渲染。

glTF格式簡介

圖1a:顯示3D模型的各種網站和應用程式的螢幕截圖。

各種應用中對3D内容的需求不斷增加。在許多情況下,3D内容必須通過Web傳輸,并且必須在用戶端有效地呈現。但到目前為止,3D内容建立與運作時應用程式中3D内容的高效呈現之間存在差距。

3D内容管道

在用戶端應用程式中呈現的3D内容來自不同的源,并以不同的檔案格式存儲。在對維基百科的3D圖形檔案格式清單中顯示了絕大多數,有超過70種不同的檔案格式的3D資料,服務于不同目的和應用案例。

例如,可以使用3D掃描器獲得原始3D資料。這些掃描器通常提供單個對象的幾何資料,該對象存儲在OBJ,PLY或STL檔案中。這些檔案格式不包含有關場景結構或對象應如何呈現的資訊。

可以使用創作工具建立更複雜的3D場景。這些工具允許人們編輯場景的結構,燈光設定,相機,動畫,當然還有場景中出現的對象的3D幾何圖形。應用程式以自己的自定義檔案格式存儲此資訊。例如,Blender将場景存儲在.blend檔案中,LightWave3D使用.lws檔案格式,3ds Max使用.max檔案格式,Maya使用.ma檔案。

為了呈現這樣的3D内容,運作時應用程式必須能夠讀取不同的輸入檔案格式。必須解析場景結構,并且必須将3D幾何資料轉換為圖形API所需的格式。必須将3D資料傳輸到圖形卡存儲器,然後可以使用圖形API調用序列來描述渲染過程。是以,每個運作時應用程式必須為它将支援的所有檔案格式建立導入器,加載器或轉換器,如圖1b所示。

glTF格式簡介

圖1b:今天的3D内容管道

glTF:3D場景的傳輸格式

glTF的目标是以适合在運作時應用程式中使用的形式定義用于表示3D内容的标準。現有的檔案格式不适合這種用例:有些不包含任何場景資訊,隻包含幾何資料; 其他設計用于在創作應用程式之間交換資料,其主要目标是盡可能多地保留有關3D場景的資訊,進而導緻檔案通常較大,複雜且難以解析。另外,可能必須預處理幾何資料,以便可以使用用戶端應用程式來呈現它。

現有的檔案格式都不是為在網上有效傳輸3D場景并盡可能高效地渲染它們的用例而設計的。但是glTF并不是“另一種檔案格式”。它是3D場景傳輸格式的定義:

場景結構用JSON描述,它非常緊湊,可以很容易地解析。

對象的3D資料以可以由公共圖形API直接使用的形式存儲,是以沒有用于解碼或預處理3D資料的開銷。

現在,不同的内容建立工具可以以glTF格式提供3D内容。越來越多的用戶端應用程式能夠使用和呈現glTF(其中一些應用程式如圖1a所示)。是以,glTF可以幫助彌合内容建立和渲染之間的差距,如圖1c所示。

glTF格式簡介

圖1c:帶有glTF的3D内容管道。

越來越多的内容建立工具将能夠直接提供glTF。或者可以使用Khronos glTF存儲庫中列出的開源轉換實用程式将其他檔案格式轉為glTF結構。例如,幾乎所有創作應用程式都可以以COLLADA格式導出其場景。是以,COLLADA2GLTF工具可用于将這些創作應用程式中的場景和模型轉換為glTF。OBJ可以使用obj2gltf将檔案轉換為glTF。對于其他檔案格式,可以使用自定義轉換器建立glTF結構,進而使3D内容可用于各種運作時應用程式。