鑒於后續更新會越來越長,故決定分拆,見我的置頂博客。本文終止更新於 1.79.1 版本
1.79.1 發布時間:2021-03-01(北京時間)
問題修復 🔧
- 修復地形誇大的bug
1.79 發布時間:2021-03-01(北京時間 17點左右)
重大改動📣
- 移除了
Cesium3DTileset.url
,一個在上一個版本已經不推薦使用的屬性。使用Cesium3DTileset.resource.url
來代替。 - 移除了
EasingFunction.QUADRACTIC_IN
、EasingFunction.QUADRACTIC_OUT
、EasingFunction.QUADRACTIC_IN_OUT
三個在 1.77 版本中已經不推薦使用的常量,分別使用EasingFunction.QUADRATIC_IN
、EasingFunction.QUADRATIC_OUT
、EasingFunction.QUADRATIC_IN_OUT
三個代替(拼寫有略微不同)。 TaskProcessor
構造函數中maximumActiveTasks
選項默認設為無限大。
問題修復 🔧
- 修復了在 node 程序中使用完整的 Cesium ZIP 打包的問題
- 修復了在
EllipsoidGeodesic
類中,正確的輸入值會導致表面距離計算結果為NaN
的問題 - 修復了
ArcGISTiledElevationTerrainProvider
中全局函數sampleTerrain
、sampleTerrainMostDetailed
不運行的問題 - 為更規范,CZML 中的
polylineVolume
現在使用cartesian2
屬性來指定形狀坐標,之前的cartesian
屬性依舊保留,以便后向兼容。 - 移除了
Cesium3DTileset
每次 update 時沒有必要的矩陣復制動作。
1.78 發布時間:2021-02-02(北京時間)
新增功能 🎉
- 為
BillboardCollection
、EntityCluster
、LabelCollection
、PointPrimitiveCollection
、PolylineCollection
這幾個類添加show
屬性,以便快捷地將這些容器下的元素整體消失或顯示 TaskProcessor
類(私有類)除了接受一個worker的名稱外,還可以額外接受一個絕對路徑參數。這使得可以調用自定義的 WebWorker 了,而不必提前把代碼復制粘貼到Workers
目錄下。Cartesian2
類添加一個靜態方法:cross
,用以計算二維向量的叉積。Math
類添加一個靜態方法:previousPowerOfTwo
,它接受一個數字,並返回一個比這個數字小的且大於0、且為 2 的次方的數字。例如傳入29,返回16;傳入33,返回32.
修復 🔧
-
修復了
Math.mod
方法關於小數位數不准確的 BUG,原來調用Cesium.Math.mod(0.1, 1.0)
會輸出0.10000000000000009
,現在改用新算法后修復了這個問題。新算法在更新后補充。
即將過期 ⏳
Cesium3DTileset.url
即將廢棄,並且在下一版本(1.79)中正式移除,請使用Cesium3DTileset.resource.url
來獲取 url 參數。
1.77版本 北京時間 20210105
1.76更新較少,可以跳過
新增功能 🎉
添加了 ElevationBand
材質類型,能給指定范圍的海拔高度的地形映射對應的顏色(或漸變)
這個和之前的 [Globe Materials - Cesium Sandcastle](https://sandcastle.cesium.com/?src=Globe Materials.html) 很像,但是比 ElevationRamp
更靈活。
修復 🔧
修復了當改動模型或 3dtiles 的顏色、背面裁剪、輪廓寬度時的錯誤
主要是修改了 Model 類的 updateColor函數、updateBackFaceCulling函數、updateSilhouette函數的三處判斷
即將棄用的API ⏳
EasingFunction.QUADRACTIC_IN
、EasingFunction.QUADRACTIC_OUT
、EasingFunction.QUADRACTIC_IN_OUT
三個屬性將於 1.79 版本移除,
分別使用 EasingFunction.QUADRATIC_IN
、EasingFunction.QUADRATIC_OUT
和 EasingFunction.QUADRATIC_IN_OUT
代替。
1.75版本 北京時間 20201102
這個版本官方偷懶,沒什么更新
修復 🔧
- 修復了 glTF 模型有
KHR_materials_unlit
擴展時,PBR 材質會導致法線被禁用的問題; - 修復了API文檔:
writeTextToCanvas
的返回值類型 - 修復了API文檔:
Viewer.globe
的構造函數
1.74版本 北京時間 20201002
(1.73有事跳過了)
新增功能
-
新增:
Matrix3.inverseTranspose
方法 以及Matrix4.inverseTranspose
方法功能:提供矩陣的逆轉置計算功能:先計算逆矩陣,再轉置,最后返回。
問題修復
-
修復相機縮放時可能卡住的問題
-
修復平面幾何實體繞局部坐標軸旋轉不正確的問題
-
修復平面幾何實體(Plane Entity)的法線轉換問題
參考:https://www.cnblogs.com/flytrace/p/3379816.html
局部坐標到相機坐標使用 Model-View 矩陣即可,但是局部法線行不通,可能會出現不垂直原來切線的情況。相機坐標空間下的法線,其轉換矩陣是 Model-View 矩陣的逆轉置。
如果 Model-View 是正交矩陣,那么法線的矩陣也是 Model-View 矩陣。
-
修復Ground Primitive 對象在攝像機某些角度會被裁切的問題
-
修復了當設置
TerrainProvider
時,可能造成橢球一半消失的bug -
修復了OSM建築圖層的陰影模式打開時,可能會崩潰的問題
1.72版本 @20200803 北京時間
大改動
- Cesium 不再提供 Mapbox 的訪問令牌,並且
BaseLayerPicker
移除了 Mapbox 的影像圖層。如果你使用MapboxImageryProvider
或MapboxStyleImageryProvider
,請傳遞options.accessToken
參數。
功能添加
- 對
glTF
模型支持第二張紋理貼圖,其名稱是TEXCOORD_1
。
廢棄功能
MapboxApi.defaultAccessToken
將在 1.73 版本中丟棄。實例化有關 Mapbox 的 Provider 時,在構造方法傳遞你自己的 token。BingMapsApi
將在 1.73 版本中丟棄,實例化有關 BingMap 的對象時(例如BingMapsImageryProvider
、BingMapsGeocoderService
)在構造方法傳遞你的key.
BUG修復
- 修復了 3dTiles 空瓦片的替換優化
- 包括 GeoJSON 在內,存在垂直拐角的折線進行了修復。
- 修復了使用
Color.fromCssColorString
時,顏色字符串有空格會出問題的BUG。 - 修復了對地形瓦片可見性估算的bug
- 修復了地下模式的牆體渲染問題
- 修復了牆體第一個點和最后一個點相同時牆體一側會出問題的bug
- 修復了 標簽(label)輪廓線顏色
translucencyByDistance
屬性的bug - 修復了
SampledPositionProperty.removeSample
返回值的bug - 修復了牆體的坐標有重復時,紋理坐標不正常的問題
- 修復了在安卓設備上,裁剪平面無法正確進行裁剪的問題,這一般是
Mali
GPU 的設備上,它們的 WebGL 不支持浮點數紋理。
1.71版本 @20200702 北京時間 04:29
大改動
- 更新
WallGeometry
為點的順序,而不是原來的逆時針順序。有紋理貼圖的牆體的外觀會受到影響,如果這次更新的版本對牆體有變,那么請調整點的順序。
功能添加
-
Cesium3DTileset
和Model
類添加backFaceCulling
屬性,以支持觀察瓦片/模型的底面或者內部,解決了從模型里面看外面透視的問題。 -
Ellipsoid
類添加surfaceArea
屬性,用來計算貼地矩形的近似面積。 -
CZML 數據增加 PolylineVolume 形狀的支持。
-
Color
類添加toCssHexString
方法來獲取 CSS 中hex格式的顏色字符串。
功能修復
-
修復了當3dtiles沒有gltf動畫時的錯誤(意思就是當 i3dm 和 b3dm 內嵌的 gltf 有動畫時,將被支持)
-
修復了給定原點的情況下,
Ellipsoid.geodeticSurfaceNormal
除以 0 的計算錯誤,返回undefined
作為代替。 -
修復了
WallGeometry
在坐標很接近時的錯誤 -
修復了啟用對數緩存情況下的模型顯示的問題(模型穿透等)
-
修復了
Polyline
中ArcType.RHUMB
(恆向線,如果同緯度則是緯度圈上的線而不是大圓上的弧)繪制會崩潰的問題。 -
修復了標簽的背景色、內填充選項的處理問題
-
修復了幾個使用 WebGL2 渲染的問題
-
修復了從透視視圖切換到正交視圖時三角面相互重疊的錯誤(即穿模)
-
修復了首幀切換到正交視圖時導致縮放級別不正確的錯誤(例如畫面模糊等)
-
修復了
scene.pickFromRay
操作不正常的問題,之前容易獲取到模型內部的點位,而正確的點位應該在模型表面 -
修復了當構造
Entity
時沒有傳遞 name 屬性(傳遞 undefined 或者 null)拋異常的問題 -
文檔修復,
ScreenSpaceEventHandler.getInputAction
返回值的文檔已經修正。 -
修改了報錯面板的樣式。
-
修復動畫面板在 iOS 13.5.1 中 SVG圖標未顯示的問題。
1.70.1版本 @20200610 北京時間 22:15
(NMD突然更新)
這是一個小修補版本,主要改進 TypeScript 類型定義和 JSDoc 生成的文檔。
新增內容
- 為
Resource
類新增toString()
方法 Transforms.rotationMatrixFromPositionVelocity
方法由私有變為公開
BUG修復
- 修復了處理 PixelFormat 時 flipY 的錯誤。
- 修復了 3dTiles 數據在請求取消后仍駐留在內存中導致的內存泄漏問題。
- 修復了諸多 JSDoc 生成的文檔的問題,得益於 TypeScript
1.70版本 @20200601 北京時間 0702 05:09
重大公告
-
現在,所有 CesiumION用戶都可以使用 Cesium OSM 建築 -- 一個世界級別的三維建築白膜圖層,基於OSM的建築數據。當然,可以作為3dTiles加載。更多信息查看官方博客
- 在沙盒中探索Cesium OSM Buildings
- 用法:
viewer.scene.primitives.add(Cesium.createOsmBuildings())
- 包括每個建築要素的屬性,例如名稱、地址等。查看更多屬性
-
Cesium 現在支持 TypeScript 的類型定義了
- 如果使用 ES 模塊來導入 Cesium ,那么自動使用 ts 的有關工具
- 如果直接導入單個 CesiumJS 源文件,則需要在 tsconfig.json 文件中添加
"types":["cesium"]
屬性,以便使用定義 - 如果你有自己的定義,而且沒有准備好切換Cesium版本,可以在安裝后刪除
Source/Cesium.d.ts
文件 - 查看官方發布的博客來看更多的信息
-
Cesium 現在支持
Globe
半透明的地下渲染模式了!- 實例化
Globe
時,可傳遞GlobeTranslucency
可選項來控制globe
的透明度,這個GlobeTranslucency
包括表面透明、背面透明與半透明矩形等屬性。 - 為
Globe
添加Globe.undergroundColor
與Globe.undergroundColorAlphaByDistance
屬性,以控制當攝像機在地下或者globe
是半透明狀態時,globe
的背面如何渲染 - 增強地下時攝像機控制能力
- 沙盒新增三個示例:Globe Translucency、Globe Interior、Underground Color
- 實例化
新增功能
- API文檔接受了一大批修復與增強改進,歸功於TS!
- 添加屬性
Cesium3DTileset.extensions
,以便從tileset.json
中獲取擴展數據。 - 添加
frustumSplits
選項到DebugCameraPrimitive
(相機視錐體) - 添加了
Globe.undergroundColor
和Globe.undergroundColorAlphaByDistance
兩個屬性,用於控制當Camera在地下或Globe為半透明狀態時,Globe的背面如何渲染的功能。 - 添加
nightAlpha
和dayAlpha
屬性到ImageryLayer
中,以分別控制向日半球和背日半球的透明度。 - 添加了一個沙盒示例,用來展示使用
PostProcessStage
來添加霧效 - 對
Color.fromCssColorString
添加了#rgba
和#rrggbbaa
格式的支持 - 添加了
Camera.completeFlight
,這個東西會使得攝像機立刻結束運動,並立即跳轉到目的地,並返回回調。
BUG修復
- 修復了移除后的廣告牌(billboard)會改變地形的BUG
- 修復了DebugCameraPrimitve(相機視錐體)會忽略Camera的近平面和遠平面的bug
- 修復了3DTiles點雲樣式的問題,其中
${feature.propertyName}
和${feature["propertyName"]}
這樣的語法會讓程序崩潰,還解決了使用非字母和數字的字符來當屬性名稱會崩潰的問題 - 修復了渲染gltf模型時可能發生的崩壞。該Bug會在gltf模型外邊線添加新頂點時發生,這個過程索引緩沖區從Uint16切換到Uint32。
- 修復了2.5D視圖時的深度平面,改善地平線附近的polylines或其他primitives的顯示質量。
- 修復了2.5D時貼地primitive的一些問題
1.69版本 @20200501
新增功能
- 添加
Scene.cameraUnderground
屬性,以指示是否在地下 - 添加
RequestScheduler
到公共API中,以便用戶更好控制網絡請求 - 增強了glTF模型的邊緣顯示
重大更新
Scene.sunColor
被移除。使用Scene.light.color
和Scene.light.intensity
代替。- 移除
isArray
。使用JS原生的Array.isArray
函數代替。
BUG修復
- 修復啟用對數緩沖時,polyline的幾個問題。
- 修復了glTF的skin支持問題。考慮將其設為一個可選的屬性:
skeleton
。 - 修復了gltf非循環性動畫中不連續問題(最后一幀丟幀)。開發者希望在動畫停止時觸發另一個事件#issue7387。
- 修復了即使啟用對數緩沖,視野范圍也很廣的問題。
- 修復了等高線材質透明的不生效的問題
- 修復銷毀CesiumWidget對象時潛在的內存泄漏。
- 在較新的iOS設備上幾何實例支持高精度浮動
- 修復ios 安卓和uwp顯示Cesium ION圖標不正常的問題
1.68版本 @20200402 0:42[北京時間]
新增功能
- 添加了地下渲染支持。當相機在地下時,地球將被渲染為實體表面,而地下的Entity將不會被剔除。
- CesiumUnminified的打包版本現在包括SourceMap,以便進行調試。
- 借助SpectorJS Shader Editor(https://spector.babylonjs.com/),添加了實時編輯Cesium着色器的功能。
BUG修復
- 當前版本可以在帶有或不帶有
--experimental-modules
版本的NodeJS(12或者更高版本)中使用Cesium。早期的NodeJS版本依舊可用。 - 與Cesium的canvas進行交互時,現在將使先前聚焦的元素模糊。這樣可以防止在與Globe交互時意外修改輸入元素。(本段機翻,不知道這是什么功能,見 https://github.com/CesiumGS/cesium/pull/8662)
- 如果請求TMS數據服務的描述文檔
tilemapresource.xml
失敗並且對應瓦片等級的外界框rectangle
太大,TileMapServiceImageryProvider
會強制將minimalLevel
屬性設為0。 - 修復了使用較小的橢球(Ellipsoid)時渲染地面大氣的問題、Globe錯誤遮擋對象的問題。
- 修復了1.67版本中引入的一個功能BUG,該功能會使得重疊的、帶顏色的地表幾何圖形具有視覺錯誤。
- 修復了在啟用對數深度緩沖區(Logarithmic Depth Buffer)的情況下,近距離查看折線(Polyline)時的被裁剪問題,這是大多數系統的默認設置。
版權沒有,盜版隨你。