3D引擎資料結構與glTF 4 BIN

2021-08-18 14:39:49 字數 1109 閱讀 5011

gltf 是一種面向實時渲染的內容標準格式,類似於頂點緩衝、index 緩衝這些資料它會以乙個二進位制檔案的形式儲存,這樣,應用程式載入 gltf 內容時就可以把這些 buffer 直接傳遞到圖形api,而不需要再對它們進行解析或者轉換,從而達到高效的目的。前面幾章我們主要是講 「.gltf」 檔案中的 json 物件的內容,這裡我們就介紹一下 gltf 中的 「.bin」 的使用。

如上圖所示 gltf 資源可以帶乙個或者多個 .bin 檔案,用來儲存幾何資料(頂點、索引),動畫資料,skin。 在前面一章,我們講 mesh 資料的時候,就講到 頂點資料對應的是乙個 index,下面我們就將一下具體怎麼從這個 index 找到對應的二進位制資料。

首先,我們需要找到對應的 「.bin」 檔案:

"buffers": [

]

這個 .bin 檔案可以將很多頂點緩衝、動畫資料都打包在乙個檔案中,那麼,接下來就需要 buffer view 和 accessor 來找到特定的資料了。

buffer view 就是指定 .bin 檔案中的一段二進位制資料,它可以對應乙個 vertex buffer 或者 index buffer 等,如下面這個例子所示。我們可以看到,每個 buffer view 還有乙個 target 字段,它可以是 gl_array_buffer 或者 gl_element_array_buffer。

"bufferviews": [

]

最後,頂點屬性或者 index 對應的是 accessor,它定義了對應的 buffer view,和一些資料型別資訊等,如下面這個 json 所示。

"accessors": [

]

mesh、animation 等對應的二進位制資料都是通過索引乙個 accessor 來定義的,而 accessor 定義裡資料型別資訊以及它所對應的 buffer view,然後 buffer view 定義裡自己對應的 buffer 中的哪一塊,最後 buffer 對應 .bin 檔案資料。:smile:

3D引擎資料結構與glTF(1) 簡介

不是有句老話講 程式 演算法 資料結構 嘛,對於3d引擎來說也是這樣。學習和掌握3d引擎中的核心資料有哪些,它們直接的關係是怎樣等等問題,對於理解3d引擎的架構和圖形渲染關係都有著非常大的幫助。然而,現在的商業3d引擎非常複雜,想要通過學習其源 嘛非常困難,那麼你就這樣放棄了嗎?wink 我們需要乙...

3D遊戲引擎設計與實現(3)

經過幾天編寫,3d遊戲引擎的架構 大體架構已經搭好。下面來每個模組說明 l 引導程式 engine mm3dmain.exe l dll管理模組 engine bin mm3drun.dll l 引擎管理模組 engine bin mm3dengine.dll l ui模組 engine bin m...

3D列印技術之切片引擎(4)

此系列文章基於熔融沉積 fused depostion modeling,fdm 成形工藝 這一篇文章我講一下多邊列印的問題,多邊列印是切片引擎的一項關鍵的技術。圖1 雙邊列印 首先,它可以保證列印實體表面免受內部填充的衝擊,保證外觀的真實度 其次,在上層在相對於下層傾斜較大時,多邊列印可以很好的起...