cmpt,即 Component
,組合模型的意思。app
這是前三種的一種更靈活的組織,容許一個瓦片使用 cmpt 形式,組合多種瓦片,cmpt瓦片能夠內嵌任意個、任意類型的瓦片,b3dm、i3dm、pnts都可。佈局
因此本文僅簡單介紹文件結構。ui
虛線意味着可選,也就是說,cmpt瓦片能夠是空瓦片。3d
字段名 | 數據類型 | 描述 |
---|---|---|
magic |
char[] , 4byte |
常量"cmpt" . 用來指示文件是cmpt瓦片。 |
version |
uint32 , 4byte |
cmpt的版本。目前是1 。 |
byteLength |
uint32 , 4byte |
整個瓦片文件的體積,byte爲單位。 |
tilesLength |
uint32 , 4byte |
cmpt中融合的瓦片數量。 |
不知道讀者一路看過來有沒有發現,不管是哪種瓦片,其文件頭前3個屬性都是 magic
、version
、byteLength
?code
因此,這就給 cmpt 這種套娃式瓦片有了可複用性。blog
請注意,cmpt是能夠繼續嵌套cmpt的(無限套娃),雖然我不是很建議你這麼搞。io
因此本篇其實僅僅介紹 cmpt 的組織結構便可,具體內嵌了什麼瓦片,那得繼續讀取每個瓦片的 magic
屬性,才能做分支判斷、解析。table
讀者回看 第二篇,介紹 tileset 概念的時候,我說過,tileset其實還能引用子一級的 tileset。cmpt在瓦片級別延續了這種靈活性。stream
文件擴展名:*.cmpt
擴展
MIME: application/octet-stream
擴展名不是必須的,由於magic
字段會指示瓦片是什麼。