一个简单实用的cesium三维开发工具包

WebGL近几年越来越被人们所关注,但是二三维开发难度也比普通web要高出许多,不管我们是在在开发或者是学习过程中,往往需要耗费大量的时间去查阅资料和研究官方案例;让本来就非常紧张的而宝贵的精力卷到了不关紧要的地方

而大多二三维的包(openlayersjs,cesiumjs、threejs)都是外国的,如果英语水平好还行,否则读起来真是连蒙带猜甚是难受;正式因为经历过所以结合自身经验和网络资料整理了一套cesium相关案例的开发包,供大家参考,希望对各路小伙伴有所帮助。


废话不多说,卷起来😅。


@[TOC]

一、源码目录

├── public # 静态资源
│ ├── config.js # 配置文件
| └── favicon.ico # favicon 图标
├── src # 源代码
| ├── utils  # api 请求
| ├── utils # 工具目录
| | ├── cesiumPluginsExtends # cesium_dev_kit工具包
| |  |   ├──libs # 工具包组件模块
| |  |   |  ├──plot.js # 标会模块
| |  |   |  ├──radar.js #  相控雷达模块
| |  |   |  ├──cesium-plugin.js # 三方插件模块
| |  |   |  ├──Base.js #  公共基础模块
| |  |   |  ├──Analysis.js #  分析模块
| |  |   |  ├──ChartLayer.js # chart插件模块
| |  |   |  ├──Control.js # 面板控件模块
| |  |   |  ├──Graphics.js #  图形操作模块
| |  |   |  ├──Material.js #  材质操作模块
| |  |   |  ├──Shaders.js # 着色器模块
| |  |   |  ├──ThreeJs.js #  ThreeJs扩展模块
| |  |   |  ├──Math3d.js # 三维数学工具模块
| |  |   |  ├──DomUtil.js # dom操作模块
| |  |   |  ├──Math2d.js #  二维数学工具模块
| |  |   |  ├──Math3d.js # 三维数学工具模块
| |  |   |  ├──Primitive.js #  配合shader的图元操作模块
| |  |   |  ├──Draw.js #  绘制模块
| |  |   |  ├──CustomCesiumPlugin.js #  自定义相控扩展模块
| |  |   |  ├──PassEffect.js #  后期特效模块
| |  |   |  ├──Plugin.js #  扩展模块
| |  |   |  ├──index.js #  集中导出模块
| |  |   ├──singleImport # 按需导入模块
| |  |   |  ├──Analysis.js #  分析模块
| |  |   |  ├──Graphics.js #  图形操作模块
| |  |   |  ├──Material.js #  材质操作模块
| |  |   |  ├──Primitive.js #  配合shader的图元操作模块
| |  |   |  ├──Draw.js #  绘制模块
| |  |   |  ├──CustomCesiumPlugin.js #  自定义相控扩展模块
| |  |   |  ├──PassEffect.js #  后期特效模块
| |  |   |  ├──Plugin.js #  扩展模块
| |  |   |  ├──index.js #  集中导出模块
| |  |   ├──common.js  # 公共工具模块
| |  |   ├──indexOld.js  # 全量导出模块
| |  |   ├──initConf .js # 初始化Cesium配置模块
| |  |   ├──ColorDeal.js # 颜色转换模块
| |  |   └──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
  • 导入所有模块
import { initCesium } from 'cesium_dev_kit'
   const {
        viewer,   // viewer
        material, // 材质模块(修改实体材质)
        graphics, // 图形模块(如创建PolygonGraphics对象等)
        math3d, // 三维数学工具
        primitive, // 图元操作对象(如使用primivite创建polygon等)
        draw, // 绘制模块(如多边形,矩形)
        passEffect, // 后置处理模块
        customCesiumPlugin,
        control, // 控制模块(如模型位置调整,拖拽等)
        plugin, // 额外插件(如拓展css3的动画 ,地形裁剪)
        base, // 基础模块(如坐标转换,图层初始化等)
        analysis, // 分析模块(如坡度,坡向,可视域,通视分析)
        attackArrowObj, // 标绘(攻击)
        straightArrowObj,// 标绘(直击)
        pincerArrowObj, // 标绘(钳击)
      } = new initCesium(
          {
            cesiumGlobal: Cesium,
            containerId: 'cesiumContainer',
            viewerConfig: {
              infoBox: false,
              shouldAnimate: true,
            },
            extraConfig: {},
            MapImageryList: []
          })
  • 导入单个模块
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 // 默认服务器地址以及材质等基础信息配置,具体请参考src\views\example\defaultStaticConf\index.js
      })
  • 2、使用script引入

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

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

三、运行效果

案例截图

材质案例
三维分析
河流案例
物体拖拽

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


案例目前可能还有许多待优化和不足之处欢迎大家提出宝贵意见,同时也欢迎大家收藏点赞转发😀

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容