前言
Cesium 在1.52版本中改進(jìn)了多個(gè)渲染問題,并且增加了HDR和3dtiles數(shù)據(jù)的精確求交方法。以下詳述。
增加了和3dtiles數(shù)據(jù)的精確求交方法
1.51版新增的sampleHeight和clampToHeight函數(shù)雖然能獲取3ditles數(shù)據(jù)指定位置的求交點(diǎn),但是有一個(gè)問題,它只是以當(dāng)前視角相機(jī)能看到的視野進(jìn)行計(jì)算,視野范圍之外,要么模型過于粗糙,要么就沒有調(diào)度,很可能求取不到數(shù)值。
此次版本更新,則增加同名函數(shù)的異步形式(sampleHeightMostDetailed等函數(shù))。這個(gè)改進(jìn)還是很重要的,Cesium為此特意增加了一個(gè)樣例:

異步是為了能從服務(wù)器上調(diào)度來最精細(xì)的3dtiles數(shù)據(jù)來進(jìn)行求交運(yùn)算,畢竟調(diào)度數(shù)據(jù)是緩慢的過程,如果同步來取,必然會(huì)導(dǎo)致瀏覽器卡頓。優(yōu)點(diǎn)是計(jì)算精度有了保證;不好的地方,則是反應(yīng)速度有點(diǎn)兒慢,也可能增加一點(diǎn)內(nèi)存開銷。
增加了HDR,繼續(xù)提升三維渲染效果
bagnell大神自今年五月份開始為Cesium增加HDR效果以來,歷時(shí)數(shù)月給所有的圖元增加了HDR特性,同時(shí)增加了若干tonemapping、bloom等后處理算法,終于在1.52版將分支合并至主干。
HDR可以保留更多的顏色細(xì)節(jié),更好地還原世界本來的模樣。但是恕我眼拙,1.52版的地球和圖元,除了相比前版會(huì)更暗一點(diǎn)以外,好像并沒有看出特別明顯改進(jìn)的效果。。

另外,因?yàn)镠DR的增加,還好像引入了一些額外的問題。有可能Cesium后期還會(huì)繼續(xù)改進(jìn)吧。
但是無論怎么說,Cesium把很多目前主流的三維渲染效果如PBR等都加到引擎中去了,并且在持續(xù)改進(jìn)中。未來三維渲染效果只會(huì)越來越好。
支持傾斜攝影創(chuàng)建出來的3dtiles數(shù)據(jù)的樣式設(shè)置
這個(gè)長久以來的問題終于得到了官方的修復(fù)!之前做樣式設(shè)置的時(shí)候,經(jīng)常會(huì)遇到設(shè)置完了style,不起作用的情況。大部分情況都是因?yàn)榕龅搅藘A斜攝影數(shù)據(jù)(沒有batchTable)。老版本的Cesium在代碼中通過featureLength是否為0,來硬生生將之從樣式設(shè)置中過濾出去。
這個(gè)問題終于在1.52版獲得修復(fù)。效果如下:

修復(fù)線段在不同視角下的顯示問題

Cesium中的線段,是可以設(shè)置線寬的。然而WebGL并不支持線條繪制的寬度設(shè)置,Cesium為了繞過此問題,將線段當(dāng)成三角面片來繪制,期間會(huì)計(jì)算direction來確定三角面的頂點(diǎn)位置。然而在近裁下的direction計(jì)算貌似有些問題,導(dǎo)致了顯示上的bug。好在這個(gè)版本bagnell大神已修復(fù)。
修復(fù)了Entity中動(dòng)態(tài)幾何體的透明顯示問題
貌似僅1.51版有此問題,之前的版本沒問題,新版中也已改進(jìn)。之所以出問題是PerInstanceColorApperance中的flat設(shè)置問題,flat表示物體顏色是否受光照影響。目前只有1.51版不帶光照效果,看起來幾何體會(huì)沒有層次感。


其他改進(jìn)
Cesium在地形加載上也做了一些改進(jìn),如果不用layer.json來獲取可用性信息,而且通過逐級(jí)加載可用信息的方式來加載地形,會(huì)提升地形加載的速度,并減少一些內(nèi)存占用。但是這一塊筆者沒仔細(xì)看。。有興趣可以自行研究。。