3dTiles 數據規範詳解[4.4] cmpt瓦片二進制數據文件結構

cmpt,即 Component,組合模型的意思。app

這是前三種的一種更靈活的組織,容許一個瓦片使用 cmpt 形式,組合多種瓦片,cmpt瓦片能夠內嵌任意個、任意類型的瓦片,b3dm、i3dm、pnts都可。佈局

因此本文僅簡單介紹文件結構。ui

文件二進制佈局

虛線意味着可選,也就是說,cmpt瓦片能夠是空瓦片。3d

① 文件頭:16byte

字段名 數據類型 描述
magic char[], 4byte 常量"cmpt". 用來指示文件是cmpt瓦片。
version uint32, 4byte cmpt的版本。目前是1
byteLength uint32, 4byte 整個瓦片文件的體積,byte爲單位。
tilesLength uint32, 4byte cmpt中融合的瓦片數量。

② 內嵌的瓦片

不知道讀者一路看過來有沒有發現,不管是哪種瓦片,其文件頭前3個屬性都是 magicversionbyteLengthcode

因此,這就給 cmpt 這種套娃式瓦片有了可複用性。blog

請注意,cmpt是能夠繼續嵌套cmpt的(無限套娃),雖然我不是很建議你這麼搞。io

因此本篇其實僅僅介紹 cmpt 的組織結構便可,具體內嵌了什麼瓦片,那得繼續讀取每個瓦片的 magic 屬性,才能做分支判斷、解析。table

讀者回看 第二篇,介紹 tileset 概念的時候,我說過,tileset其實還能引用子一級的 tileset。cmpt在瓦片級別延續了這種靈活性。stream

文件擴展名和MIME

文件擴展名:*.cmpt擴展

MIME: application/octet-stream

擴展名不是必須的,由於magic字段會指示瓦片是什麼。

相關文章
相關標籤/搜索