一個簡單實用的cesium三維開發(fā)工具包

WebGL近幾年越來越被人們所關(guān)注躯舔,但是二三維開發(fā)難度也比普通web要高出許多,不管我們是在在開發(fā)或者是學(xué)習(xí)過程中往弓,往往需要耗費大量的時間去查閱資料和研究官方案例态兴;讓本來就非常緊張的而寶貴的精力卷到了不關(guān)緊要的地方

而大多二三維的包(openlayersjs,cesiumjs、threejs)都是外國的区转,如果英語水平好還行,否則讀起來真是連蒙帶猜甚是難受苔巨;正式因為經(jīng)歷過所以結(jié)合自身經(jīng)驗和網(wǎng)絡(luò)資料整理了一套cesium相關(guān)案例的開發(fā)包,供大家參考废离,希望對各路小伙伴有所幫助侄泽。


廢話不多說,卷起來??蜻韭。


@[TOC]

一悼尾、源碼目錄

├── public # 靜態(tài)資源
│ ├── config.js # 配置文件
| └── favicon.ico # favicon 圖標
├── src # 源代碼
| ├── utils  # api 請求
| ├── utils # 工具目錄
| | ├── cesiumPluginsExtends # cesium_dev_kit工具包
| |  |   ├──libs # 工具包組件模塊
| |  |   |  ├──plot.js # 標會模塊
| |  |   |  ├──radar.js #  相控雷達模塊
| |  |   |  ├──cesium-plugin.js # 三方插件模塊
| |  |   |  ├──Base.js #  公共基礎(chǔ)模塊
| |  |   |  ├──Analysis.js #  分析模塊
| |  |   |  ├──ChartLayer.js # chart插件模塊
| |  |   |  ├──Control.js # 面板控件模塊
| |  |   |  ├──Graphics.js #  圖形操作模塊
| |  |   |  ├──Material.js #  材質(zhì)操作模塊
| |  |   |  ├──Shaders.js # 著色器模塊
| |  |   |  ├──ThreeJs.js #  ThreeJs擴展模塊
| |  |   |  ├──Math3d.js # 三維數(shù)學(xué)工具模塊
| |  |   |  ├──DomUtil.js # dom操作模塊
| |  |   |  ├──Math2d.js #  二維數(shù)學(xué)工具模塊
| |  |   |  ├──Math3d.js # 三維數(shù)學(xué)工具模塊
| |  |   |  ├──Primitive.js #  配合shader的圖元操作模塊
| |  |   |  ├──Draw.js #  繪制模塊
| |  |   |  ├──CustomCesiumPlugin.js #  自定義相控擴展模塊
| |  |   |  ├──PassEffect.js #  后期特效模塊
| |  |   |  ├──Plugin.js #  擴展模塊
| |  |   |  ├──index.js #  集中導(dǎo)出模塊
| |  |   ├──singleImport # 按需導(dǎo)入模塊
| |  |   |  ├──Analysis.js #  分析模塊
| |  |   |  ├──Graphics.js #  圖形操作模塊
| |  |   |  ├──Material.js #  材質(zhì)操作模塊
| |  |   |  ├──Primitive.js #  配合shader的圖元操作模塊
| |  |   |  ├──Draw.js #  繪制模塊
| |  |   |  ├──CustomCesiumPlugin.js #  自定義相控擴展模塊
| |  |   |  ├──PassEffect.js #  后期特效模塊
| |  |   |  ├──Plugin.js #  擴展模塊
| |  |   |  ├──index.js #  集中導(dǎo)出模塊
| |  |   ├──common.js  # 公共工具模塊
| |  |   ├──indexOld.js  # 全量導(dǎo)出模塊
| |  |   ├──initConf .js # 初始化Cesium配置模塊
| |  |   ├──ColorDeal.js # 顏色轉(zhuǎn)換模塊
| |  |   └──index.js # 工具包入口模塊
├── index.html # html 模板
├── package.json # package.json
├── README.md # README
├── tsconfig.json # tsconfig
└── vite.config.ts # vite 配置文件
  • 所有功能均遵循ES6 模板化


    image.png
  • 采用原型繼承減少模塊冗余


    image.png
  • 采用primitive + shader 進行各種功能高效渲染


    image.png

二、 使用方式

  • 1肖方、 npm 安裝
 npm i cesium_dev_kit
  • 導(dǎo)入所有模塊
import { initCesium } from 'cesium_dev_kit'
   const {
        viewer,   // viewer
        material, // 材質(zhì)模塊(修改實體材質(zhì))
        graphics, // 圖形模塊(如創(chuàng)建PolygonGraphics對象等)
        math3d, // 三維數(shù)學(xué)工具
        primitive, // 圖元操作對象(如使用primivite創(chuàng)建polygon等)
        draw, // 繪制模塊(如多邊形闺魏,矩形)
        passEffect, // 后置處理模塊
        customCesiumPlugin,
        control, // 控制模塊(如模型位置調(diào)整,拖拽等)
        plugin, // 額外插件(如拓展css3的動畫 俯画,地形裁剪)
        base, // 基礎(chǔ)模塊(如坐標轉(zhuǎn)換析桥,圖層初始化等)
        analysis, // 分析模塊(如坡度,坡向艰垂,可視域泡仗,通視分析)
        attackArrowObj, // 標繪(攻擊)
        straightArrowObj,// 標繪(直擊)
        pincerArrowObj, // 標繪(鉗擊)
      } = new initCesium(
          {
            cesiumGlobal: Cesium,
            containerId: 'cesiumContainer',
            viewerConfig: {
              infoBox: false,
              shouldAnimate: true,
            },
            extraConfig: {},
            MapImageryList: []
          })
  • 導(dǎo)入單個模塊
import { Draw } from 'cesium_dev_kit'
   const drawObj = new Draw({
        cesiumGlobal: Cesium, // 全局Cesium對象
        containerId: 'cesiumContainer', // 容器id
        viewerConfig: { // 同官方的viewer配置相同
          infoBox: false,
          shouldAnimate: true,
        },
        extraConfig: {// 其他配置
          logo:true, // 是否顯示logo
          depthTest:true // 是否開啟深度測試
        },
        MapImageryList: tempData // 底圖配置
        defaultStatic // 默認服務(wù)器地址以及材質(zhì)等基礎(chǔ)信息配置,具體請參考src\views\example\defaultStaticConf\index.js
      })
  • 2猜憎、使用script引入

先到 npm 下載 index.umd.js 到本地然后引入即可

<script type="text/javascript" src="./libs/index.umd.js"></script>

三娩怎、運行效果

案例截圖

材質(zhì)案例
三維分析
河流案例
物體拖拽

cesium 整合 threejs 案例

光線投射

奔跑的士兵

圖形擠壓

案例在線地址 https://www.benpaodehenji.com/cesiumDevKit/
github源碼地址 https://github.com/dengxiaoning/cesium_dev_kit

嗶哩嗶哩使用介紹 >>> https://www.bilibili.com/video/BV1PKaEeeEmx/?share_source=copy_web&vd_source=fa1aa0302eb3667530ecc801e28d9687


案例目前可能還有許多待優(yōu)化和不足之處歡迎大家提出寶貴意見,同時也歡迎大家收藏點贊轉(zhuǎn)發(fā)??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胰柑,一起剝皮案震驚了整個濱河市截亦,隨后出現(xiàn)的幾起案子辣辫,更是在濱河造成了極大的恐慌,老刑警劉巖魁巩,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件急灭,死亡現(xiàn)場離奇詭異,居然都是意外死亡谷遂,警方通過查閱死者的電腦和手機葬馋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肾扰,“玉大人畴嘶,你說我怎么就攤上這事〖恚” “怎么了窗悯?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長偷拔。 經(jīng)常有香客問我蒋院,道長,這世上最難降的妖魔是什么莲绰? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任欺旧,我火速辦了婚禮,結(jié)果婚禮上蛤签,老公的妹妹穿的比我還像新娘辞友。我一直安慰自己,他們只是感情好震肮,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布称龙。 她就那樣靜靜地躺著,像睡著了一般戳晌。 火紅的嫁衣襯著肌膚如雪鲫尊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天躬厌,我揣著相機與錄音马昨,去河邊找鬼。 笑死扛施,一個胖子當著我的面吹牛鸿捧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疙渣,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼匙奴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妄荔?” 一聲冷哼從身側(cè)響起泼菌,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤谍肤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哗伯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荒揣,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年焊刹,在試婚紗的時候發(fā)現(xiàn)自己被綠了系任。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡虐块,死狀恐怖俩滥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贺奠,我是刑警寧澤霜旧,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站儡率,受9級特大地震影響挂据,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喉悴,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一棱貌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箕肃,春花似錦、人聲如沸今魔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽错森。三九已至吟宦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涩维,已是汗流浹背殃姓。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓦阐,地道東北人蜗侈。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像睡蟋,于是被迫代替她去往敵國和親踏幻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容