前言
本文将继续讲解cesium的基础使用,主要内容为cesium中物体以及材质的使用
添加物体
初始化设置位置
1 | // 广州塔的经纬度 |
使用cesium添加3d建筑
1 | // 添加3D建筑 |
添加一个点
1 | // 创建一个点 |
添加文字标签和广告牌
1 | var label = viewer.entities.add({ |
添加3d模型
1 | // 添加3D模型 |
创建元素
使用entity创建矩形
1 | var rectangle = viewer.entities.add({ |
使用primivite创建矩形
1 | // primivite创建矩形 |
多个实体在一个primivite
可以创建多个图形,多个实例,然后统一放置在图元上
1 | // 使用entity创建矩形 |
修改primivite颜色
给实例添加id
1 | let instance2 = new Cesium.GeometryInstance({ |
根据id获取实例,动态修改颜色
1 | // 动态修改图元颜色 |
与primitive物体交互
- Cesium.ScreenSpaceEventType.LEFT_CLICK 鼠标左键事件
- setInputAction 鼠标事件监听
- viewer.scene.pick(movement.position); 根据位置获取物体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 拾取
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (movement) {
// console.log(movement);
// scene.pick选中物体
var pickedObject = viewer.scene.pick(movement.position);
console.log(pickedObject);
if (Cesium.defined(pickedObject) && typeof pickedObject.id == "string") {
// console.log(pickedObject.id);
let attributes = primitive.getGeometryInstanceAttributes(pickedObject.id);
attributes.color = Cesium.ColorGeometryInstanceAttribute.toValue(
Cesium.Color.YELLOW.withAlpha(0.5)
);
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
设置entity材质
设置材质
1 | var rectangle = viewer.entities.add({ |
普通颜色
1 | let material = new Cesium.ColorMaterialProperty( |
棋盘纹理
1 | let material = new Cesium.CheckerboardMaterialProperty({ |
条纹纹理
1 | let material = new Cesium.StripeMaterialProperty({ |
网格纹理
1 | let material = new Cesium.GridMaterialProperty({ |
设置entity折线材质
1 | const redLine = viewer.entities.add({ |
普通颜色
1 | let material = Cesium.Color.RED; |
虚线材质
1 | // 设置虚线材质 |
箭头材质
1 | // 设置箭头材质 |
发光飞线材质
1 | // 设置发光飞线效果 |
外观修改
1 | let material1 = new Cesium.Material.fromType("Color", { |
primitive材质
grid
1 | let material1 = new Cesium.Material.fromType("Grid", { |
water
1 | let material1 = new Cesium.Material.fromType("Water", { |
disffuseMap
1 | let material1 = new Cesium.Material.fromType("DiffuseMap", { |
image
1 | let material1 = new Cesium.Material.fromType("Image", { |
编写自定义材质
czm_material czm_getMaterial这个在老版本可使用,新版本文档已经没有了这个属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27// 编写着色器修改材质
// https://cesium.com/downloads/cesiumjs/releases/b28/Documentation/
let material1 = new Cesium.Material({
fabric: {
uniforms: {
uTime: 0,
},
source: `
czm_material czm_getMaterial(czm_materialInput materialInput)
{
// 生成默认的基础材质
czm_material material = czm_getDefaultMaterial(materialInput);
// material.diffuse = vec3(materialInput.st+uTime, 0.0);
float strength = mod((materialInput.s-uTime) * 10.0, 1.0);
material.diffuse = vec3(strength, 0.0, 0.0);
return material;
}
`,
},
});
gsap.to(material1.uniforms, {
uTime: 1,
duration: 2,
repeat: -1,
ease: "linear",
});
自定义外观
1 | let appearance = new Cesium.EllipsoidSurfaceAppearance({ |
自定义materialProperty材质
1 | class CustomMaterialPropery { |
结语
本文就介绍到这里,更多内容,敬请期待