前言
上個(gè)月是西方人的圣誕節(jié)松嘶,老外們可能都出去happy了体谒,Cesium 1.53版的改動很少坑雅。。不過Bagnell大神筆耕不輟丁频,幾乎包攬1.53版的所有修改,而且給PBR材質(zhì)帶來了令人驚艷的IBL特性。
IBL接口
PBR指的是基于物理特性的渲染效果席里,讓Cesium渲染的物體更加接近真實(shí)世界叔磷。而IBL則是一種偽裝全局光照的方法.使用該方法可以獲得較好的視覺效果并且可以達(dá)到實(shí)時(shí)渲染的目的。
其實(shí)Cesium早在1.51版就已經(jīng)增加了PBR和IBL的支持奖磁,只是并未開放出IBL的定制接口出來改基,而Cesium自帶的環(huán)境貼圖效果又太差,導(dǎo)致渲染的效果實(shí)在沒法和Three.js或者ClayGL一較高下咖为。
直到今天增加了IBL的定制接口(specularEnvironmentMaps寥裂、sphericalHarmonicCoefficients)以后,才讓渲染效果可調(diào)節(jié)案疲,賦予了無限可能封恰。筆者在上一個(gè)版也曾嘗試修改源碼自行定制IBL效果,而且渲染效果感覺也還挺不錯(cuò)褐啡。沒想到這么快诺舔,Cesium自己就搞好了。想來我真是浪費(fèi)時(shí)間备畦,早知如此低飒,等等就好,哈哈懂盐。
然而Cesium官方給出的IBL示例還是差強(qiáng)人意褥赊。我在原有示例的基礎(chǔ)稍稍調(diào)整了一下,得到了這樣的效果莉恼。如果不考慮反走樣等因素的話拌喉,這個(gè)效果應(yīng)該很接近Three.js和ClayGL了。
自從做Cesium以來俐银,就一直被領(lǐng)導(dǎo)和客戶反復(fù)強(qiáng)調(diào)Cesium的渲染效果太差尿背,我想至少這可以證明Cesium還是很有潛力的。接下來再花時(shí)間把3dtiles數(shù)據(jù)好好調(diào)校一番捶惜,效果自然也不會差田藐。
其他改進(jìn)
Model類和Cesium3DTileset類上增加了luminanceAtZenith,用來調(diào)節(jié)程序紋理的亮度吱七。這里的程序紋理指的是不使用上述IBL接口自定義會自動生成的環(huán)境紋理汽久,言下之意是不能和上述IBL接口同時(shí)使用。
增加了雙擊取消對Entity的跟蹤狀態(tài)踊餐。Cesium的鼠標(biāo)雙擊操作可以跟蹤一個(gè)Entity對象景醇,讓Entity對象始終在屏幕中心且可以環(huán)繞視角查看。以前一旦雙擊跟蹤了以后市袖,再想取消啡直,往往不好找到方法烁涌。
修復(fù)了Cesium1.52版獨(dú)有的背景顏色不能透明的問題,我在之前的文章中曾經(jīng)說過Cesium可以做到背景透明且給出了示例酒觅,不過那個(gè)示例也沒法再Cesium1.52版本中使用撮执,除非關(guān)閉HDR特效。
修復(fù)影響圖層對比度不起作用的問題舷丹,也是上個(gè)版本新增的HDR來了的問題抒钱。
修復(fù)了3dtiles內(nèi)部的可見性檢查缺陷,可能會影響pickFromRay等操作颜凯。
附錄IBL修改后的示例
以上示例引用了github上的資源谋币,需要能夠跨域訪問,可以通過類似下面的命令行來運(yùn)行chrome解決跨域問題:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security --user-data-dir=C:/vtxf/Temp/ChromeUserData
歡迎關(guān)注 Cesium實(shí)驗(yàn)室 症概,QQ群號:595512567蕾额。