主頁 > 企業開發 > 近一年來再次重大更新:Cesium 1.83 來了

近一年來再次重大更新:Cesium 1.83 來了

2021-08-31 22:24:43 企業開發

概覽

動態地形夸大過傾光線時陰影漸隱效果增加 KTX2 和 Basis Universal 紋理格式的支持、自定義高程提供器、3D-Tiles 擴展檢查機制

提供 Windows *臺外邊線無效的提示檔案

修復舊式 tileset 頂級瓦片無幾何誤差的錯誤、修復相機互操作問題、修復后處理例外和閃屏問題

更新部分文字性描述(檔案類)

終結 IE11 的支持:1.83 是最后一個支持 IE11 的版本,

破壞式更新 ??

  • 不再支持 KTX1 和 Crunch 紋理;使用 ktx2ktx2 升級 ktx1 檔案

功能新增 ??

  • 新增 動態地形夸大功能,見 Globe.terrainExaggerationGlobe.terrainExaggerationRelativeHeight

    此更新是自 2015 年以來的再次優化,前者是夸大的倍數,后者是向上向下夸大的基準高度,

    地形夸大的舊 API Globe.terrainExaggeration 將在 1.85 中移除,

    原理:存盤每個頂點的 f32 型別的測地法線,并在著色器中將其添加到相對中心,它的效果即使不是 64 位仿真中也是不錯的,官方測驗中使用 32 位法線精度最多只有 10 厘米的誤差值,

    float newHeight = (height - relativeHeight) * exaggeration + relativeHeight;
    positionRTC += geodeticSurfaceNormal * (newHeight - height);
    // ... 從 positionRTC 坐標轉世界坐標
    

    當地形夸大數字不是 1.0 時(哪怕是 1.01)才存盤大地表面法線,所以,這是一個消耗記憶體的行為,靜態夸大(舊API)是類似于烘焙的效果直接寫入幾何中,所以記憶體是不變的,在 TerrainMesh 類中,大約會額外占用 30% 的記憶體(可參考 Chrome 開發者工具的 記憶體快照,查看具體類的記憶體占用),

    參考 pr

  • 新增 ShadowMap 引數:options.fadingEnabled 來當光源接*地*線時,控制陰影是否具有淡出的效果,此選項默認開啟,

image

  var shadowMap = viewer.shadowMap;
  shadowMap.maximumDistance = 100000.0; // 米為單位
  shadowMap.darkness = 0; // 月球上是黑色陰影
  // !!!
  // 新 API,這個屬性默認是 true,此處顯性設為 false
  shadowMap.fadingEnabled = false;
  • 新增對 KTX2 和 Basis Universal 紋理格式的支持;

    • 增加對 glTF 格式中 KHR_texture_basisu 擴展的支持
    • 添加了對 8 位、16 位浮點和 32 位浮點的 KTX2 鏡面反射環境貼圖的支持
    • Material 模塊中添加了對 KTX2 影像的支持
    • 對列舉模塊 PixelFormatWebGLConstants 添加了 EXT_texture_compression_bptcWEBGL_compressed_texture_etcWEBGL_compressed_texture_astc 擴展

    KHR_texture_basisu 紋理支持非 2次冪 尺寸的紋理貼圖,但是官方仍然建議使用長寬尺寸一樣的、且為 2次冪 的紋理貼圖,見 pr 9513

  • 新增自定義高度圖地形提供器,即新 API CustomHeightmapTerrainProvider,從一個回呼函式里獲取高程資料,從下列例子中可看出,只需指定能 回傳高度型別陣列 的回呼函式、寬度、高度三個屬性即可,

var width = 32;
var height = 32;
var viewer = new Cesium.Viewer("cesiumContainer", {
  terrainProvider: new Cesium.CustomHeightmapTerrainProvider({
    callback: function (x, y, level) {
      var buffer = new Float32Array(width * height);
      for (var yy = 0; yy < height; yy++) {
        for (var xx = 0; xx < width; xx++) {
          var v = (y + yy / (height - 1)) / Math.pow(2, level);
          var heightValue = https://www.cnblogs.com/onsummer/p/8000 * (Math.sin(4000 * v) * 0.5 + 0.5);
          var index = yy * width + xx;
          buffer[index] = heightValue;
        }
      }
      return buffer;
    },
    width: width,
    height: height,
  }),
});

有趣的是,這個雖然很靈活,但是官方仍然建議使用成熟的 TerrainProvider,因為這個沒有水面特效,

  • 3dTiles 擴展檢查器

    若一個 tileset 在 extensionsRequired 陣列中指定了一個非官方記錄的擴展,會直接彈出運行時錯誤:

    throw new RuntimeError("Unsupported 3D Tiles Extension: " + extension)
    

    參考 API Cesium3DTileset.checkSupportedExtensions(this._extensions),官方參考了 ModelUtility.js 模塊中對 glTF 的擴展的擴展檢查,

  • 終于!更新了檔案:在 Windows *臺上所有主流瀏覽器將忽略 outlineWidth 屬性(在Windows 的 WebGL 本身不支持外邊線線寬繪制),涉及到的模塊有:

    • BoxGraphics
    • CorridorGraphics
    • CylinderGraphics
    • EllipseGraphics
    • EllipsoidGraphics
    • PlaneGraphics
    • PolygonGraphics
    • RectangleGraphics
    • WallGraphics
    • PolylineVolumeGraphics

    屆時可以查看最新的幫助檔案,

  • KmlTour, KmlTourFlyTo, 和 KmlTourWait 模塊增加了檔案,為 KmlDataSource 模塊的 kmlTours 讀型別屬性添加檔案,并從 KmlTourSoundCues 類中移除檔案參考,

  • 對 OSM Buildings 以及其他在 glTF 模型中用到了 CESIUM_primitive_outline 擴展的 tileset 提供隱藏邊線的能力,

    主要是在 Model.jsBatched3DModel3DTileContent.jsCesium3DTileset.jsGltf3DTileContent.jsInstanced3DModel3DTileContent.jsModelInstanceCollection.jscreateOsmBuildings.jsModelSpec.js 作出了修改,部分模塊加入 showOutline 屬性, (參考 pr)

  • 對于 glTF 某些特定的紋理和 ImageBitmap 的色彩空間,提供了 ignore 選項,

修復??

  • 修復了一些舊式 tileset 中頂級瓦片因為沒有幾何誤差而不加載的錯誤

    以往有一些 3dtiles 的根屬性中沒有 geometricError,會導致 preprocess3DTileContent.js 模塊判斷錯誤,在 1.83 中已修復為判斷 root 屬性,

image

  • 修復了 WebMapTileServiceImageryProvider 這個模塊中若 URL 使用了子域(SubDomains)后,請求會因為查詢引數而失敗的情況(詳細問題見:9598)

  • 修復了 ScreenSpaceCameraController.tilt3DOnTerain API 中當搖晃相機視角時,會有偏移的小問題,精彩推理見:9562 似乎是國人

  • 當地球表面瓦片(GlobeSurfaceTile模塊)請求錯誤時,修復在控制臺中的報錯

  • 修復了沙盒示例中 KML 示例的縮略圖丟失

  • 修復了 GlobeFS 著色器中當自定義材質的 positionToEyeECtangentToEyeMatrix 屬性未設定的錯誤

    // GlobeFS.glsl
    void main() {
      // 其他部分略
      materialInput.positionToEyeEC = -v_positionEC;
      materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC));  
    }
    
  • 修復了 Matrix4 模塊中 inverseinverseTransformation 中使用 仿射變換 的誤導性檔案,已使用旋轉和*移替代,

  • 當 glTF 模型參考了外部影像資源且沒有被 preferImageBitmap 加載時,它會在主執行緒的解碼程序中造成幀率暴跌的問題,已經修復;通常 glTF 的影像資源都是內嵌的,也就是 glb 的形式,這個問題被官方發現并修復,針對的模塊:Scene/GltfImageLoader.jsScene/Model.js

  • 修復 Cesium3DTileStyle 中關于顏色、顯隱的誤導性 else 條件設定,邏輯上,如果沒有給定,那就應該使用默認值 true,主要針對的模塊:Scene/Cesium3DTileBatchTable.js

  • 修復后處理禁用后再啟用時發生崩潰的問題,這個修復同時能防止在第一次啟用后處理階段功能時閃屏的問題,原因似乎是如果沒有任何一個后處理階段被標記為活動的話,快取的紋理就不會創建 FBO,雖然這些后處理都啟用了,針對模塊:PostProcessStageCollection.js

功能廢棄?

  • CesiumWidget, Viewer, 及 Scene 模塊的 Scene.terrainExaggerationoptions.terrainExaggeration 將會在 1.85 版本中移除, 使用 Globe.terrainExaggeration API 來代替他們,
  • loadCRNloadKTX 函式被移除,
  • 對 IE11 的支持將在 1.84 正式停止

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/296332.html

標籤:GIS

上一篇:ArcGIS連接Postgres 資料庫

下一篇:vite 開發 Cesium 程式最佳配置實踐

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more