Cesium在三维模型中的应用

一、Cesium简介

1、Cesium介绍

  1. Cesium是一个跨平台,跨浏览器的展示三维地球和地图的javascript库
  2. Cesium使用WebGL 来进行硬件加速图形,使用时不需要任何插件支持,但是浏览器必须支持WebGL
  3. Cesium是基于Apache2.0许可的开源程序,它可以免费的用于商业和非商业用途/2、Cesium特点
  1. 支持2D,2.5D,3D 形式的地图展示
  2. 可以绘制各种几何图形,高亮区域,支持导入图片,甚至3D模型等多种数据可视化展示
  3. 可用于动态数据可视化并提供良好的触摸支持,支持绝大多数的浏览器和mobile
  4. Cesium还支持基于时间轴的动态数据展示

1、Cesium效果展示

Cesium在三维模型中的应用

二、Cesium环境搭建

1、Cesium基础环境

2、学习Cesium 网站

3、​Cesium目录详情

Cesium在三维模型中的应用

+-- Apps[目录]                      // 项目的DOM展示,用于预览项目
+-- Build[目录]                     // 项目使用的包目录,开发使用和上线使用的都在里边
|  +--  Cesium[目录]                //打包未编译的源代码
|  +-- CesiumUnminified[目录]        //打包编译的源代码
|  +-- Documentation[目录]        
|  +-- Specs[目录]    
|  +-- package.json
+--  Cesium[目录] 
+--  packages[目录]  
+--  Source[目录]  
+--  Specs[目录]  
+--  ThirdParty[目录]  
+-- .eslintignore
+-- .eslintrc.json
+-- .prettierignore
+-- build.js
+-- CHANGES.md
+-- favicon.ico                    // 项目的矢量图标
+-- gulpfile.js                   
+-- index.cjs
+-- index.html                     
+-- LICENSE.md                     // 开源的一些协议,官方文件
+-- package.json                    // 项目依赖包管理文件和Script文件,比如如何启动项目的命令
+-- README.md                       // 对项目的描述文件,markdown语法
+-- server.js                      
+-- web.config                             

三、原生Cesium项目搭建

  • 项目结构

Cesium在三维模型中的应用

  • 创建cesium_dom文件夹
  • 把文件复制到文件夹中
    • 在下载的Cesium 项目中的找到Build目录下,复制Cesium文件到cesium_dom目录下
  • 文件夹中创建.html文件
    • 在html 文件中输入 ! + tab 键 快速生成html格式代码
    • 在head 头部中 引入Cesium文件下的Cesium.js文件
    <script src="./Cesium/Cesium.js"></script>
    • 在head 头部中引入Cesium 文件下的Widgets目录下widgets.css文件
     <link rel="stylesheet" href="./Cesium/Widgets/widgets.css">
    • 在body 区域创建一个以ID为选择器的容器
      <div id="container"></div>
    • 在body区域创建script 标签
       <script>
            var viewer = new Cesium.Viewer("container", {})
       </script>
  • 代码结构
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
      <title>导入cesium文件</title>
      <script src="./Cesium/Cesium.js"></script>
      <link rel="stylesheet" href="./Cesium/Widgets/widgets.css">
      <style>
          html,
          body {
              width: 100%;
              height: 100%;
              padding: 0;
              margin: 0;
          }
      </style>
    </head>
    
    <body>
      <div id="container"></div>
    
      <script>
          var viewer = new Cesium.Viewer("container", {})
      </script>
    </body>
    
    </html>
  • 运行效果如下展示,

    注意:

    ​ 运行的时候要用网络地址打开,open with Live server ,不能使用绝对路径

Cesium在三维模型中的应用

四、Cesium与Vue集成

上方讲到了cesium 是什么,和在html搭建Cesium项目

接下来,我们来讲如何在vue 中搭建Cesium 项目,

因为vue框架 在大家日常开发中用的比较多

第一种静态文件引入方法

  • 在vue项目中找到public 目录下
  • 把前面中的Cesium文件夹放到public 目录下 全局引入

Cesium在三维模型中的应用

第二种安装依赖引入方法

​ 1.使用npm安装

​ npm install cesium

​ 2.使用yarn 安装

​ yarn add cesium

3.使用cnpm 安装

​ cpm install cesium

  • 用第二种安装的依赖的方法来使用Cesium的话,需要配置vue.config.js文件
  • 项目源码地址:https://gitee.com/ls870061011/vue_cesium
  • 在vue.config.js 中配置的时候需要安装webpack ,copy-webpack-plugin 这个两个依赖
  • vue.config.js中的配置
     /* eslint-disable no-param-reassign */
     const webpack = require('webpack');
     const CopyWebpackPlugin = require('copy-webpack-plugin');
     const path = require('path');
    
     function resolve(dir) {
       return path.join(__dirname, './', dir);
     }
    
     // The path to the CesiumJS source code
     const cesiumSource = 'node_modules/cesium/Source';
     const cesiumWorkers = '../Build/Cesium/Workers';
    
     module.exports = {
       publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
       outputDir: 'dist',
       lintOnSave: true,
       productionSourceMap: false,
       css: {
         loaderOptions: {
           scss: {
             additionalData: `
             @import "~@/styles/variables.scss";
             @import "~@/styles/mixin.scss";
             `,
           },
         },
       },
       configureWebpack: (config) => {
         if (process.env.NODE_ENV === 'production') {
           // 为生产环境修改配置...
           config.mode = 'production';
         } else {
           // 为开发环境修改配置...
           config.mode = 'development';
           config.devtool = 'source-map'; // 开发环境显示源码,方便调试
         }
    
         config.plugins = [
           ...config.plugins,
           // Copy Cesium Assets, Widgets, and Workers to a static directory
           new CopyWebpackPlugin({
             patterns: [
               { from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' },
               { from: path.join(cesiumSource, 'Assets'), to: 'Assets' },
               { from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' },
             ],
           }),
           new webpack.DefinePlugin({
             // Define relative base path in cesium for loading assets
             CESIUM_BASE_URL: JSON.stringify(''),
           }),
         ];
       },
       chainWebpack: (config) => {
         config.plugin('preload').tap(() => [
           {
             rel: 'preload',
             fileBlacklist: [/.map$/, /hot-update.js$/, /runtime..*.js$/],
             include: 'initial',
           },
         ]);
         // 修复HMR(热更新)失效
         config.resolve.symlinks(true);
    
         // 移除prefetch插件
         config.plugins.delete('prefetch');
    
         // 设置别名
         config.resolve.alias.set('cesium', resolve(cesiumSource));
       },
     };
  • 在src 目录下创建cesium 文件夹下
  • cesium文件夹创建Config.js 和SceneViewer.js文件
  • config.js的配置详情
    /**
    * 内部配置文件
    */
    
    class Config {
    static viewer;
    }
    
    export default Config;
    
  • SceneViewer.js的配置是 场景视图的配置
    import { Viewer } from 'cesium/Cesium';
    
    import Config from './Config';
    
    /**
    * 场景视图类
    */
    class SceneViewer extends Viewer {
    /**
     *
     * @param {Object} options
     *
     * @constructor
     */
    constructor(options) {
      super(options);
      Config.viewer = this;
    }
    }
    
    export default SceneViewer;
  • 在组件中使用

Cesium在三维模型中的应用

原创文章,作者:rheafarnsworth6,如若转载,请注明出处:https://www.wudianban.com/cesium.html

(1)
上一篇 2023年3月29日 上午10:53
下一篇 2023年3月30日 上午10:41

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注