1. 程式人生 > >CesiumJs和SuperMap Desktop結合的三維顯示的優化

CesiumJs和SuperMap Desktop結合的三維顯示的優化

        前段時間要做一個三維相關的專案,側重三維場景的展示以及資料查詢,對三維場景中的空間分析並沒有涉及,而且甲方不想花幾十萬買套三維平臺進行二次開發,只能藉助開源的。所有針對需求,篩選了現有的三維引擎或三維平臺,OSG太過底層,babylonjs、threejs適用於資料量小的小場景,webglearth簡單實用,但是demo較少、更新慢,openwebglobe載入不流暢、效果不怎麼好,cesiumjs是以js編寫的webGL三維地圖渲染引擎,有較多的demo,詳細的api文件,有測試平臺,比較豐富的展示特性和擴充套件,所以最後就選定cesiumjs了。

          按照網上的環境搭建流程,將cesiumjs的執行環境搭建了起來,通過Sketchup建立了三維模型,並搭建了三維場景。然後就是將三維模型載入到Cesium中, 目前Cesium只支援gltf和bgltf格式,可以通過dae格式轉換過去。將三維模型全加進去後,問題出現了,缺少三維場景顯示的優化演算法,三維場景轉不起來。通過查詢資料,發現cesiumjs支援3D Tiles資料集,3DTiles資料集以分塊、分級渲染,將大資料量三維資料以分塊,分層的形式組織起來,可以大量減輕瀏覽器和GPU的負擔,將瓦片的位置資訊寫到了資料中的.b3dm和對應的json檔案中,json檔案是3dtiles資料集的元資料, boundingVolume節點是用來表示三維模型的範圍,它是以wgs84直角座標的方式儲存的,它不明文儲存資料的地理位置,但是可以從wgs84直角座標中反解出經緯度座標。refine節點有兩個屬性,add/replace屬性,其意義是在載入這個節點資料時,時在上級資料的基礎上add還是replace。

       怎麼將模型資料轉換成3Dtiles呢?目前 缺少免費好用的生成工具,並沒有形成一個成熟的解決方案,第三方推出的CesiumLab工具提供了生成3Dtiles的功能,但是要用完整功能是需要收費的。那到底有沒有免費、好用的轉換工具呢?

        SuperMap iClient 3D for WebGL 是基於CesiumJS擴充套件的一套三維引擎API,重要的是 它推出了三維切片快取(S3M)圖層,支援根節點過濾、裁剪,提高載入效能。還有它加入了剖面分析、視域分析、淹沒分析、通視分析等功能。

                                                                                           分析功能

       SuperMap iClient 3D for WebGL Api庫是免費的,但是需要SuperMap DeskTop、Iserver的支援,SuperMap DeskTop用於資料轉換、快取檔案生成,Iserver用於釋出三維服務。SuperMap DeskTop因為只是處理資料,可以申請試用版或下載那啥版(你懂的);因為不做基於服務端的空間分析,只是用來顯示三維場景,Iserver可以用webserver代替(我是用的Apache)釋出S3M服務。步驟如下:

  1. 建立三維模型,搭建三維場景,將模型轉換為dae、3ds、obj、fbx常用格式。
  2. 開啟SuperMap DeskTop,建立資料來源,匯入三維模型的資料集。
  3. 在加入的資料集上右鍵點選,生成場景快取,設定生成Lod的層級和瓦片大小,成功後會生成Osgb格式的快取。
  4. 在傾斜攝影模組中,將OSGB快取檔案轉成s3m格式的檔案。s3m檔案由scp和s3m實體資料夾組成,scp定義了資料的範圍、快取格式、快取實體檔案的路徑等。s3m則是分層、分塊的三維快取檔案。

   怎麼將s3m檔案加到Cesium中呢?需要去官網下載SuperMap iClient 3D for WebGL Api。通過scene 的“addS3MTilesLayerBySc”方法載入s3m服務,示例如下:

  var promise = scene.addS3MTilesLayerByScp("/Data/model/changjing/changjing.scp", {

                name: changjing

            }); 

    最後將自己的三維場景服務通過上面的方法載入進系統,因為全部場景不適合公開,截取了部分場景如下(三維場景還在修改)。

相關推薦

CesiumJsSuperMap Desktop結合顯示優化

        前段時間要做一個三維相關的專案,側重三維場景的展示以及資料查詢,對三維場景中的空間分析並沒有涉及,而且甲方不想花幾十萬買套三維平臺進行二次開發,只能藉助開源的。所有針對需求,篩選了現有的三維引擎或三維平臺,OSG太過底層,babylonjs、threejs適用

基於OpenGLOpenCV的顯示

        最近想用OpenCV+OpenGL+QT實現三維顯示,但是一直都麼有弄出來,今天看了一篇部落格,感覺很不錯,拿來分享下。 簡而言之,這段程式碼是如何從disparity image獲得點雲資料(Point cloud)並利用OpenGL顯示出來。 如果想

C++OpenGl實現的雷達波形函式模糊圖

模糊函式(Ambiguity Function,AF)是評價雷達波形優劣和進行波形分析的基本工具。它可以清晰直觀的描述波形與對應匹配濾波器的特徵。模糊函式在分析距離/速度解析度、距離/多普勒模糊和副瓣效能方面應用廣泛。 上面這句話粘自很多年前的碩士論文,在寫這篇部落格時,本

顯示真的會出現嗎

三維顯示器 概念圖 它是這樣的,我們在真實的世界中,透過這層介質,看到的虛擬世界,是真實的三維場景。 怎麼理解呢?我們在不同的位置,角度,看到的虛擬世界是存在變換的,而不是,像當前顯示器,不論那個角度都

SuperMap 平臺中模型的常見問題及解決辦法

在客戶使用 SuperMap 平臺進行三維模型場景配置時經常會遇見與模型相關的各種問 題的問題,在此將一些問題進行彙總和解答。 推薦三維模型製作軟體及版本 3ds Max 9,推薦匯出外掛 SuperMap MaxPlugin 8C。 一、模型貼圖消

插值的顯示

# -*- coding: utf-8 -*- """ 演示二維插值。 """ # -*- coding: utf-8 -*- import numpy as np from mpl_toolkits

ROS_PCL+Rviz建立點雲並顯示

1.程式包的配置等參照 第一個PCL程式 2.程式碼.cpp #include<ros/ros.h> #include<pcl/point_cloud.h> #include&

【視覺化-2】將影象當作DSM進行顯示

上一篇文章中,已經跳出顏色或者亮度的侷限,將影象視作一般化的柵格資料,並提供了四種利用顏色和亮度來直觀表示柵格間取值差異的視覺化方法。 柵格資料的四種視覺化方式 這一回,我們又要從一般化走向特殊化。柵格資料,究其本質其實是為了在相互垂直的兩個方向按照一定的取樣間隔記錄二維空間中各處的屬性值(可以是亮度、光

技術服務線上沙龍——效能優化線上問題整理

11月8日,超圖集團質控與支援中心組織了歲末衝刺技術服務福利第一彈——新一代三維效能優化,在講解過程中就不斷有朋友們在留言區提問,最後我們不得不延長沙龍時間來回答朋友們的問題,後面有朋友們提出將問題整理為文件,方便大家後續檢視。於是,技術支援的同事們打鐵趁熱,將線上關注度較高的問題整理出

Qt學習:繪圖之OpenGLQt的結合

        OpenGL是繪製三維圖形的標準API。Qt應用程式可以使用QtOpenGL模組繪製三維圖形,該模組依賴於系統的OpenGL庫。Qt OpenGL模組提供QGLWidget類,可以通過對它子類化,並使用OpenGL命令開發出自己的視窗部件。對許多三維應用程式

VTK 點雲重建讀取.txt文件顯示點雲

點雲重建 vtkSurfaceReconstructionFilter實現了一種隱式曲面重建的方法,即將曲面看作一個符號距離函式的等值面,曲面內外的距離值得符號函式相反,則零等值面即為所求的曲面。該方法需要對點雲資料進行網格劃分,然後估算每個點的切平面和方向,

基於supermap webgl樓層顯隱控制思路

find 基於 layers cpn fin 多個 var super blog supermap 9D 產品中,可以先獲取到模型的simd值,再調用setOnlyObjsVisible方法控制模型中單個物體的顯示和隱藏。 var smid = "94"; //樓層的s

CAD控件 出控件!手機CAD控件了,歡迎大家使用!

[email protected]控件 出三維控件!和手機CAD控件了,歡迎大家使用!(下載地址:百度搜索,夢、想。CAD控件) 支持文檔格式,igs,stl,dwg,m3d等通用標準的3d文件格式 支持常見的三維實體建模 支持,旋轉,沿路徑,拉伸,偏移等方式建模 支持bool運算方式建模

溫度圖顯示控件

range ali val show ins 5.5 led face 圖片 1 OpenFileDialog dlg = new OpenFileDialog(); 2 dlg.Filter = "Resul

GIS案例學習筆記-生成可視化表達

數字 .com 操作 ext p s 學習筆記 round src 邊界 GIS案例學習筆記-三維生成和可視化表達 聯系方式:謝老師,135-4855-4328,xiexiaokui#qq.com 目的:針對柵格或者矢量數值型數據,進行三維可視化表達 操作時間:15分

圖形 surfh mesh

clas com .com tlab sha src class orm int z=peaks(50); surfl(z) shading interp colormap copper   三維圖形 surfh 和 mesh

angularjsajax的結合使用 (

ESS 靈活運用 告訴 公司 紅色 success body 說了 spa 轉眼九月份了,忙忙碌碌 發現今年還沒開過張,寫一篇吧。 15年在空閑時就倒騰過angularjs那玩意兒 ,覺得還是挺好的,李金龍那厚厚的一本書,只不過沒有系統化應用。最主要的是原來有一個東西沒有

ArcGIS案例學習筆記2_2_等高線生成DEM景觀動畫

筆記 9.png 老師 基本 tex back 工具 學習筆記 工具箱 ArcGIS案例學習筆記2_2_等高線生成DEM和三維景觀動畫 計劃時間:第二天下午 教程:Pdf/405 數據:ch9/ex3 方法: 1. 創建DEM SA工具箱/插值分析/

3D Slicer Hide 3D Cube and Axis Labels Programmatically 使用程式碼隱藏檢視中的方框座標軸標籤

  在3D Slicer中,我們如果想在自己寫的外掛中來修改三維檢視中的預設設定的話,那麼首先就需要獲得三維檢視的結點,其型別為vtkMRMLViewNode,獲得了這個結點後,我們就可以用程式碼來修改一系列屬性了,比如隱藏方框和座標軸標籤等。這裡我們通過使用系統函式getNode()來獲得三維檢

光柵投影重建

光柵投影和三維重建 客觀物體在空間上是三維的,但是人們從客觀景物上得到的影象往往是二維的。光柵投影就是通過獲取的二維資訊來反映並還原物體的三維資訊。 一、三維形貌測量技術的發展 三維形貌測量技術又稱3D 輪廓術(3DProfilometry),是一種通過運用儀器獲取被測物體外部形