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 雙邊列印 首先,它可以保證列印實體表面免受內部填充的衝擊,保證外觀的真實度 其次,在上層在相對於下層傾斜較大時,多邊列印可以很好的起...