Bootstrap

cesium学习

cesium学习

一、Cesium 初始化

C e s i u m W i d g e t 才是核心类 \color{red} CesiumWidget 才是核心类 CesiumWidget才是核心类

定义assessToken
Cesium.Ion.defaultAccessToken='在Cesium 官网中申请的token'
实例化cesium
 ArcGIS 影像图层
   const esri = new Cesium.ArcGisMapServerImageryProvider({
url:"https:services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
enablePickFeatures: false,
})
const viewer=new Cesium.Viewer('cesiumContainer',
{ baseLayerPicker:false,图层选择控件隐藏
  timeline:false,时间轴控件
  animation:false,动画控件
  geocoder:false,搜索控件
  homeButton:false,主页控件
  sceneModePicker:false,投影方式按钮
  baseLayerPicker:false,选择图层控件
  navigationHelpButton:false,帮助手势控件
  fullscreenButton:false,全屏控件
  imageryProvider:esri, 自定义图层,默认的是谷歌的影像图层
  terrainProvider:Cesium.createWorldTerrain({
     requestWaterMask:true 水面特效
     requestVertexNormal:true 地形法线,实现地势凹凸效果
  }
  ) 地形图层}) 创建有各种按钮和组件的地球
const viewer=new Cesium.cesiumWidget('cesiumContainer')创建纯地球

在这里插入图片描述

1.clock用来记录时间,毕竟三维场景需要进行动态展示,需要通过时间来确定某一帧的绘制内容

2.container则是构造函数的参数,也就是传入的div。

3.canvas则是在container上构建的Canvas类的对象,可以据此获取WebGL绘制的画笔。

4.screenSpaceEventHandler则是对Canvas对象上各种鼠标的交互事件的封装,方便传递给三维场景。之后可以据此改变相机姿态等。

5.scene则承载着整个三维场景中的对象。

二 scene 详解

Scene中有一些内置的图元对象:地球(globe)、skybox(天空盒)、sun(太阳)、moon(月亮)等等;另外还有两个用来由用户自行控制存放对象的数组:primitives和groundPrimitives。groundPrimitives创建的对象完全贴地,用户感知不到对象的存在。

三 primitives

图元是Cesium用来绘制三维对象的一个独立的结构,图元类有:Globe、Model、Primitive、Bilboardcolection、ViewportQuad等。
Globe绘制的是全球地形,它需要两个东西,一个是地形高程信息,另外一个是影像图层,也就是地球的表皮。影像图层可以叠加多个,但是地形高程只能有一个。整个地形的绘制也是渐进式的,即视线看到的地方才会去调度相关的地形高程信息,找到对应位置的地形影像贴上。然而Globe只是一个图元。由此可见一个图元可以相当复杂。

需要注意的地方:

1. 图元没有基类,但是所有的图元都会有 u p d a t e 的数 \color{red}1 .图元没有基类,但是所有的图元都会有update的数 1.图元没有基类,但是所有的图元都会有update的数

2. p r i m i t i v e 类直译过来是图元的意思,但是它不是基类,只是图元的一种,起作用是用来绘制各种几何体。 \color{red}2.primitive类直译过来是图元的意思,但是它不是基类,只是图元的一种,起作用是用来绘制各种几何体。 2.primitive类直译过来是图元的意思,但是它不是基类,只是图元的一种,起作用是用来绘制各种几何体。

3. 图元是一类对象绘制的集合,可以包含多个 W e b G l 的 d r a w c a l l 。 \color{red} 3.图元是一类对象绘制的集合,可以包含多个WebGl的drawcall。

;