GLB文件格式解析
一、GLB简介
GLB是以GL传输格式(gltf)保存3D模型的一种二进制文件格式。
-
GLTF文件结构图
参考文档:https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.pdf
参考手册: https://www.khronos.org/files/gltf20-reference-guide.pdf
-
GLB文件结构
包含头文件块和数据块两部分,其中头文件以
uint32
存储专用符magic
,版本号version
以及文件长度length
信息。数据块又分为
JSON
和BIN
两部分,JSON
主要存储一些数据说明,包含scenes
、nodes
、meshs
、accessors
、bufferView
、buffer
等信息说明,BIN
以base64编码存储数据。- 数据存储方式
- 数据存储内容
参考:https://docs.fileformat.com/3d/glb/
二、关键数据
解析GLB文件,可以先获取JSON
块,然后再依据说明依次解析里面的数据
-
meshes
-
primitives
表明
mesh
包含的数据内容,每个值以索引的方式指向buffer view-
attributes
POSITION
: accessors_ID (表示顶点坐标值)NORMAL
: accessors_ID (表示顶点归一化后坐标值) -
indices
: accessors_ID (表示索引)
-
-
-
accessors
访问器,可以理解成访问数据的一个接口,以数组形式存储,每个
item
内容如下:bufferView
: buffer_view_IDcomponentType
: 数据类型(如:unsigned short / float ...)count
: 数据个数type
: 数据存储类型 (如:``SCALAR标量 /
VEC3` 3D向量 ...)
-
bufferView
说明每个数据流的信息
buffer
: buffer_IDbyteOffset
: 数据起始位置byteLength
: 数据长度
-
buffer
base64编码的数据
byteLength
: 数据长度
三、GLB数据
在Windows下搜索3D查看器,点击文件 ==> 3D资源库 ==> 选择模型 ==> 文件另存为即可得到glb模型文件
四、GLB读取
借助JsonCPP
库可以读取头部JSON信息,然后解析出位置和索引的相关信息,然后分别进行解析其个数、存储类型等信息。
五、参考连接
https://zhuanlan.zhihu.com/p/65265611
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2021-06-20 分水岭
2021-06-20 处理mask图像为单通道彩色图
2018-06-20 pandas练习(三)------ 数据分组