CesiumInspector控件並不是帶來太多功能上的,但對開發人員來說,對於了解Cesium的渲染效果以及性能調優,還是一個很有價值的控件,特別是一些渲染狀態下的問題,采用該控件,應該還是會有很多啟發性的收獲。
廢話不多說,直接上代碼:
簡單一句話,就會出現如下這個超級專業的控件:
里面的具體功能不多,但每一個都很專業,也間接說明了Cesium內部一個很出色的管理機制,下面就一一道來。
Show Frustums
地球半徑是6378137,處於精度的考慮,比如深度值和相機抖動等問題,Cesium根據當前區域的可視范圍的深度最大值和最小值,會動態的維護裁剪區域,在必要的情況下會由近及遠的分成多個裁剪區,這樣每個區域的深度區間不至於太大。我還沒有仔細看這塊的代碼,只能先說一個思路,后續涉及到原理篇時在深入研究。
而Show Frustums就是實時顯示當前的裁剪區,並會統計在不同裁剪區中Command(渲染對象)的個數。通常,在穩定的情況下,一個裁剪區就足夠了,除非存在兩個高度差距比較大的物體同時在場景內。當然,在快速縮放的時候,特別是拉平時,可能在瞬間,深度區間會比較大,所以需要多個裁剪區。
如圖,現實了不同的裁剪區間的分割,但可視范圍穩定后,會更新裁剪區間,盡可能的保持在一個裁剪區內,如下圖:
Performance Display
Scene中有一個Performance類,如果開啟,會update統計幀數和每一幀的時間,和Chrome的幀數統計對比了一下,還是比較准的。
Globe Depth & Pick Depth
下面來看看兩個深度的,大部分場景下,兩者的深度值是相同的,除非有模型,且模型在空中,和地面差距比較大的時候,就有一些不同之處了。
我們先打開地形,選擇STK影像,正常情況下效果如下:
查看深度效果如下:
可以看到越近則深度越小,越趨近於黑色(0),月原則深度值越大(255)。我們加載一架飛機到此處,再看看會有如何的變化:
由於這架飛機高度為5000,當我們靠近該飛機時,則會構造兩個裁剪區域,所以效果如下:
Primitive
我們在看看Primitive,選中該飛機,選擇如下選項:
如下圖所示,你會看到該模型的bounds,以及自身坐標系的xyz軸:
Terrain
這個功能很強大,選中一個Tile,可以看它的三角網,選擇如下屬性:
STK是Tin的三角網,基於特征點,同時還有裙邊的處理,通過Wireframe都可以清楚的看到。同時你也可以中斷LOD策略,這樣縮放時可以詳細的了解Tile的三角網信息。一目了然,可以充分的認識到STK地形的強大之處,后面講到地形篇時,我們會詳細的介紹STK和高度圖兩種方式,以及STK在數據層面上很多優化,水面等效果。
OK,Inspector的介紹到此結束,功能不多,但各個都很精致,能幫助我們很好的剖析Cesium的內部渲染機制,也能夠對一些復雜的渲染問題,提供一個整體的線索,方便我們對問題的分析定位。