上一節(jié)介紹3D Tiles渲染調(diào)度的時候,我們提到目前Cesium支持的Cesium3DTileContent目前支持如下類型:
Batched3DModel3DTileContent
Instanced3DModel3DTileContent
PointCloud3DTileContent
Composite3DTileContent
其中Composite3DTileContent是復(fù)合數(shù)據(jù),PointCloud3DTileContent是只包含F(xiàn)eatureTable和BatchTable的點云數(shù)據(jù)(從官方給的數(shù)據(jù)結(jié)構(gòu)來看,我沒有親自測試)。本節(jié)主要以Batched3DModel3DTileContent和Instanced3DModel3DTileContent兩種類型,介紹一下3DTiles的數(shù)據(jù)結(jié)構(gòu)和核心技術(shù)點。
渲染
結(jié)合上一節(jié),先給出一個流程圖,建議大圖邊看邊思考。其中紅線是表明狀態(tài)變化。TileContent是一個抽象概念,具體是它的繼承類Batched3DModel或Instanced3DModel來完成具體的功能,而每一個具體的Content會根據(jù)自己的數(shù)據(jù)結(jié)構(gòu)的差異而有所差別。
3D Tiles也是基于狀態(tài),從UNLOADING開始,通過一系列的request,完成最初的數(shù)據(jù)加載過程,結(jié)束LOADING狀態(tài),進(jìn)入Pocessing過程,也就是數(shù)據(jù)解析。數(shù)據(jù)解析完后進(jìn)入READY狀態(tài),通過selectTile,最終調(diào)用Content對應(yīng)的update方法,構(gòu)造最終的drawcommand,加入渲染隊列。當(dāng)然,如果有需要釋放的Tile,則在unloadTiles中處理。細(xì)心的人會發(fā)現(xiàn)Pocessing和Ready狀態(tài)。最終調(diào)用的都是update方法。這里解釋一下:3D Tiles中主要的數(shù)據(jù)部分就是glTF,而glTF也是基于狀態(tài)管理的,無論是glTF的解析還是構(gòu)造DrawCommand,只是state不同,都是在update方法中完成的。如上圖,這里也用橙色箭頭做了說明。
如上給出了一個相對完整的過程,Content的內(nèi)容主要是glTF,這塊我們之前也介紹過,所以下面主要集中在b3dm中BatchTable和FeatureTable。
Batched3DModel3DTileContent
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26