前言

学习cesium有一段时间了,也做了几个三维项目。但每次翻Api时感觉了解的还是不够深,只是基于上层Api的调用,感叹cesium水太深不愧是一群研究数学和图形的大佬写的,在此之前还真得把webgl好好补补。

Cesium原理篇

法克鸡丝博客园:https://www.cnblogs.com/fuckgiser/p/5706842.html

Cesium Api学习指南

vxtf简书: https://www.jianshu.com/p/9a71186edd5b

随笔

借图

学习cesium时可以根据这个结构去延伸

viewer :三维窗口元素集合,所有组件对象的入口。管理组件和api对象使用

cesiumWidget :三维窗口,创建所需有的元素包含scene管理三维场景对象,学习过webgl的想必不会陌生。canvas画布对象还有clock时钟对象等组成。container三维窗口创建挂载的容器。screenSpaceEvenHandler三维窗口的事件类,封装了鼠标,手势等基本事件。

dataSourceDisplayviewer向三维场景中添加三维对象的接口。所有外部数据源管理的入口。dataSourceDisplay添加完外部数据之后会关联到scene三维场景中,操作修改数据相应也会修改三维场景的关联对象。defaultDataSource相当于内置dataSource,添加实体只需要viewer.entities无需手动创建,底层是使用dataSourceDisplay.defaultDataSource.entities,其他数据源对象则需要另外添加。

UI组件 : 三维窗口的ui组件集合,都可以通过viewer.xx来调用管理。

scene :三维场景对象。三维场景包含globe地球类,地球表皮影像和地形数据的渲染。primitives表示加入三维场景中的各种三维对象。groundPrimitives用来表示贴地的三维对象。viewer.entities加入场景中的三维实体,大多会转化成primitivesgroundPrimitives

primitive:三维场景中的一个基本绘制图元对象。primitive提供更多的图形绘制功能,可以自定义图元类型和外观。使用着色器渲染图形对象,使用shader定制更好的效果。

entity : 三维实体,cesium基于数据的封装,对图形不是很了解的学习者很友善。基于entity的动态效果cesium提供了Property对象。

以上就是cesium的大体结构,具体的scene和dataSourceDisplay的数据关联可以参考vxtf的博客。