【Cesium 安装+Cesium 加载b3dm】

Cesium 安装

一、安装的方式大致有三种:
1、引入ceisum源码包使用;
2、安装cesium插件;
3、安装Vue-cesium插件
我这里只尝试了第一种和第二种。
引入ceisum源码包使用

  1. 可以使用直接下载官方压缩包来引入
  2. 也可以npm i cesium包,把build文件夹下的文件拿来引入(需要把build文件下的文件放到pubilc文件夹下)

安装cesium插件

  1. 首先npm i cesium,然后对webpack进行一系列处理。
  2. 直接引入vue-template-compiler(推荐)

关于具体操作,我也找到一些博客,感谢各位博主:
vue2 使用 cesium 篇 【第一篇】
vue项目引入cesium,创建3d地球,快速上手~
【在Vue项目上使用cesium】

重点

当然需要注意,cesium的版本不同,api可能会有些变化,下载的时候需要注意一点,我使用的是
在这里插入图片描述

Cesium 加载b3dm

let viewer = new Cesium.Viewer('cesiumContainer', {
      animation: false, //是否显示动画控件
      shouldAnimate: true,
      homeButton: false, //是否显示Home按钮
      fullscreenButton: false, //是否显示全屏按钮
      baseLayerPicker: false, //是否显示图层选择控件
      geocoder: false, //是否显示地名查找控件
      timeline: false, //是否显示时间线控件
      sceneModePicker: false, //是否显示投影方式控件
      navigationHelpButton: false, //是否显示帮助信息控件
      infoBox: true, //是否显示点击要素之后显示的信息
      requestRenderMode: true, //启用请求渲染模式
      // scene3DOnly: false, //每个几何实例将只能以3D渲染以节省GPU内存
      sceneMode: 3, //初始场景模式 1 2D模式 2 2D循环模式 3 3D模式  Cesium.SceneMode
      fullscreenElement: document.body, //全屏时渲染的HTML元素 暂时没发现用处
      // 地形
      terrainProvider: new Cesium.createWorldTerrain({
        requestVertexNormals: true,
        requestWaterMask: true
      })
    });
    //加载3DTiles
    function tilesetload() {
      let tileset = new Cesium.Cesium3DTileset({
       // url: '/data/b3dm/Production_3.json',//本地瓦片数据
        url: 'http://xxx.xxx.xxx.xxx/data/b3dm/Production_3.json',//在线瓦片数据
        show: true,
        skipLevelOfDetail: true,
        baseScreenSpaceError: 1024,
        skipScreenSpaceErrorFactor: 16,
        skipLevels: 1,
        immediatelyLoadDesiredLevelOfDetail: false,
        loadSiblings: false,
        cullWithChildrenBounds: true
      });
      viewer.scene.primitives.add(tileset);
      //定位到模型的位置
      (async () => {
        try {
          await tileset.readyPromise;
          await viewer.zoomTo(tileset);
          // Apply the default style if it exists
          let extras = tileset.asset.extras;
          if (
              Cesium.defined(extras) &&
              Cesium.defined(extras.ion) &&
              Cesium.defined(extras.ion.defaultStyle)
          ) {
            tileset.style = new Cesium.Cesium3DTileStyle(
                extras.ion.defaultStyle
            );
          }
        } catch (error) {
          console.log(error);
        }
      })();
    }
    tilesetload();

效果图:
![](https://img-blog.csdnimg.cn/0c04882c774d4b03955187ab57920d68.png

Cesium加载 `.b3dm`(Batched 3D Model)瓦片文件,通常使用 `Cesium3DTileset` 类来实现。`.b3dm` 是 3D Tiles 格式的一部分,它允许高效地流式传输和渲染大规模 3D 模型。 以下是一个完整的示例代码,展示如何在 Cesium加载 `.b3dm` 瓦片模型: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Cesium 加载 B3DM 瓦片模型</title> <script src="https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Cesium.js"></script> <link href="https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Widgets/widgets.css" rel="stylesheet"> <style> html, body, #cesiumContainer { width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden; } </style> </head> <body> <div id="cesiumContainer"></div> <script> // 初始化 Cesium Viewer const viewer = new Cesium.Viewer(&#39;cesiumContainer&#39;, { terrain: Cesium.Terrain.fromWorldTerrain() }); // 创建 3D Tileset 实例,加载 .b3dm 文件 const tileset = new Cesium.Cesium3DTileset({ url: &#39;path/to/your/tileset.b3dm&#39; // 替换为你的 .b3dm 文件路径 }); // 添加到场景中 viewer.scene.primitives.add(tileset); // 设置相机视角以查看模型 tileset.readyPromise.then(function(tileset) { viewer.camera.flyTo({ destination: Cesium.Rectangle.fromDegrees(-115.0, 20.0, -114.0, 30.0) // 根据模型实际范围调整 }); }).catch(function(error) { console.error(&#39;加载 tileset 出错:&#39;, error); }); </script> </body> </html> ``` ### 代码解释: 1. **引入 Cesium 库**: - 使用 `<script>` 和 `<link>` 标签引入 Cesium 的 JS 和 CSS 文件。 - 这里使用的是 Cesium 官方 CDN 地址(版本 1.111)。 2. **初始化 Viewer**: - 创建一个 `Cesium.Viewer` 实例,传入容器 `#cesiumContainer`。 - 启用世界地形 `Cesium.Terrain.fromWorldTerrain()`。 3. **创建 Cesium3DTileset 实例**: - 使用 `Cesium.Cesium3DTileset` 构造函数加载 `.b3dm` 文件。 - `url` 参数指定 `.b3dm` 文件的路径(可以是本地路径或网络路径)。 4. **将模型添加到场景中**: - 使用 `viewer.scene.primitives.add(tileset)` 将模型添加到 Cesium 场景中。 5. **设置相机视角**: - 在模型加载完成后(通过 `readyPromise`),调用 `viewer.camera.flyTo()` 飞向模型所在区域。 - 注意:实际使用中应根据模型的实际经纬度范围调整 `destination`。 6. **错误处理**: - 使用 `.catch()` 捕获加载错误并输出到控制台。 --- ### 相关问题:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言只 石皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值