3d-tiles中b3dm文件讀取
batched 3D Model(.b3dm)文件,是3d-tiles中單個(gè)模型文件,按照官方的文檔,是一些基本信息加上glb(Binary glTF)模型文件,參見下圖的官網(wǎng)文件說明。??

單個(gè)文件的讀取方式
文件的前4位是文件格式名稱b3dm,接下來4位是版本號,接下來4位是文件的總長度,后邊是featuretable和batchtable的信息,最后是glb文件和一些其他的信息,具體的內(nèi)容,參見官方的文檔。
清楚此文件的格式,就可以對文件進(jìn)行操作了。
這里使用nodejs語言進(jìn)行操作,關(guān)鍵的操作步驟如下:
//使用fs模塊,讀取b3dm文件
? ? ? ? const fs = require('fs');
fs.readFile('文件路徑', (err, filebuffer) => {
????
????if (err)
? ? ? ? ? ? ? ? ? ?return
? ? ? ? ? ?//讀取的為nodejs的Buffer類型,參見api進(jìn)行解析
? ? ? ? ? ?//格式說明頭讀取
? ? ??
const _headstr = filebuffer.toString(
'utf8'
, 0, 4);
?? ??//版本號和文件總長度讀取
??????
const _version = filebuffer.readUInt32LE(4);
??????
const _bytelen = filebuffer.readUInt32LE(8);
?? ??//按照以上方式,featuretable和batchtable等進(jìn)行讀取
?? ? ??.....
}
? ? ?按照此種方式,b3dm中包含的glb文件,也能夠單獨(dú)分離出來,直接可以保存成一個(gè)文件進(jìn)行查看。
引用內(nèi)容:
https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel
http://nodejs.cn/api/buffer.html