目錄
- 不兼容式更新??
- 新增??
- 問題修復??
- 個人點評??
- ① MSAA
- ② 相機獲取射線
- ③ ModelExperimental
- ④ 逐漸 ES6
不兼容式更新??
- 在下一個版本,也就是 Cesium 1.92,第三方庫
when.js將被原生 Promise API 代替,Cesium.when將被廢棄,且于下個版本移除,關于如何升級,請參考下方個人點評,我轉載了官方指導檔案, - 修復了當 Scene 沒有渲染時(例如 css 樣式設為 none)相機物件的獲取射線方法(
camera.getPickRay())引發的例外,這個函式會回傳 undefined 了,
新增??
- 為 WebGL 2.0 添加 MSAA(多重采樣抗鋸齒)支持,你可以在創建 Viewer 時傳遞
msaaSamples選項,也可以用Scene.msaaSamples屬性控制, - 現在,glTF 模型默認使用
ModelExperimental架構處理, - 在
ModelExpertimental架構中支持切換背面裁剪, - 向 Viewer 和 Scene 類的構造引數中添加
depthPlaneEllipsoidOffset,以解決橢球體平面之下的奇怪渲染問題 - 在
ModelExperimental架構中支持了debugColorTiles - 在
ModelExperimental架構中支持了陰影 - 在所有的矩陣類中添加了
packArray和unpackArray方法 - 為矩陣類添加一些仿射變換幫助函式
- Matrix2:
setScale、setUniformScale、setRotation、getRotation、multiplyByUniformScale - Matrix3:
setScale、setUniformScale、setRotation、multiplyByUniformScale - Matrix4:
setUniformScale、setRotation、getRotation、fromRotation
- Matrix2:
- 為
AxisAlignedBoundBox類添加fromCorners方法 - 為
BoundingSphere類添加fromTransformation方法 - 為
OrientedBoundingBox類添加fromTransformation、computeCOrners、computeTransformation方法 - 為
Rectangle類添加subsection方法 - glTF 的著作權資訊會標注至著作權區域
- 為 3D Tiles 增加一個選項,它可以決定資料集的著作權資訊是否顯示在螢屏上
- 修改了著作權排序規則為出現的頻率
問題修復??
- 修復了使用
ModelExperimental架構的模型在更新其模型矩陣時不會更新范圍球的錯誤 - 修復了在 Safari 瀏覽器中 FeatureID 紋理的偽影
- 修復了使用
ModelExpertimental架構的不透明模型使用半透明著色器,但是未正確渲染的錯誤
個人點評??
① MSAA
MSAA 就不用說了,推薦條件不錯的機器都開,配合 FXAA 提升顯示效果,
const viewer = new Viewer('cesiumContainer', {
msaaSamples: 4 // 1, 2, 4, 8, 默認 1, 越高效果越好, 也越吃性能
})
viewer.postProcessStages.fxaa.enabled = true
二者有什么區別?
- msaa 發生在管線結束前,準確的說是光柵化階段對片元進行多重采樣,輸出到渲染緩沖,然后才繪制到螢屏上
- fxaa 發生在管線結束后的后處理階段,對渲染的結果進行影像演算法處理
MSAA 在 WebGL 2.0 才有,WebGPU 原生就支持,目前 WebGPU 尚不成熟,WebGL 2.0 前陣子才剛剛完全適配所有主流瀏覽器,所以 Cesium 對抗鋸齒效果的 MSAA 功能支持就比較慢,
② 相機獲取射線
獲取射線的函式現在回傳值型別發生了改變
const ray = viewer.camera.getPickRay() // Ray 或 undefined
③ ModelExperimental
即實驗中的 Model,是對原有 Model 類的架構升級,這是為了適配更強大的 glTF,以及為下一代 3D Tiles 準備的,
預計 2022 年這個新架構會轉正,
④ 逐漸 ES6
細心的朋友也許觀察到了,源代碼已經把 var 切換至 let/const 宣告變數了,在下一個版本(1.92),CesiumJS 有計劃地將第三方異步庫 when.js 替換為 ES6 原生 Promise 實作,不過,距離源代碼完全使用 async/await 估計還有一段路要走,
關于遷移 Cesium.when,官方是這么說的:
- 移除所有使用了
Cesium.when的代碼 Cesium.defer代替了when.deferPromise.all代替了when.join- 在 Promise 鏈式呼叫中,
catch代替了otherwise,finally代替了always;如果你用async/await而不是 Promise 鏈,那這里不需要改變
除此之外,還希望官方團隊完成 ES6 的 class、模板字串的轉換,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/442843.html
標籤:GIS
