Cesium-Appearance(外观)

1.定义

Primitive由两个重要部分组成:几何图形实例、外观,一个Primitive只能有一个外观,而可以有多个实例。几何图形定义了结构,外观定义了每个像素被如何着色,外观可能使用材质(Material)。

// 使用Primitive API 实现一个斑点的矩形;
var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
 
scene.primitives.add(new Cesium.RectanglePrimitive({
    //绘制矩形
    rectangle : Cesium.Rectangle.fromDegrees(-100.0, 20.0, -90.0, 30.0),
    material : Cesium.Material.fromType('Dot')  //设置材质
}))
// 使用Geometry和Appearance改写
var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
//GeometryInstance是Geometry的一个容器
var instance = new Cesium.GeometryInstance({
  geometry : new Cesium.RectangleGeometry({
    rectangle : Cesium.Rectangle.fromDegrees(-100.0, 20.0, -90.0, 30.0),
    vertexFormat : Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT
  })
});
//使用抽象的Primitive而不是RectanglePrimitive
scene.primitives.add(new Cesium.Primitive({
  geometryInstances : instance,
  appearance : new Cesium.EllipsoidSurfaceAppearance({
    material : Cesium.Material.fromType('Dot')
  })
}));
  • 代码量增多;
  • 实现几何体与外观解耦,可以分别修改;
  • 可以将多个geometry合并为一个Primitive,提高性能。

2.分类

类型 说明
MaterialAppearance 支持各种Geometry类型的外观,支持使用材质来定义着色
EllipsoidSurfaceAppearance MaterialAppearance 的简化版本,假定几何体都和地球椭球体平行,就像多边形一样。使用这个可以在计算大量顶点属性的时候节省内存
PolylineMaterialAppearance 支持在折线上设置材质
PolylineColorAppearance 支持折线在每个顶点或者每一段设置不同颜色
PerInstanceColorAppearance 每个instance使用不同的颜色去着色

3.属性有无对比

4.注意点:

  • flat:平面着色,不考虑光线的作用,一个顶点用一个颜色,参考链接。
  • faceForward:我的理解:观察者面对物体时,调整光源方向,使物体更清晰好看,参考链接。
  • depthMask:用来改变深度缓冲的可写属性,false为只读,true为可写?没找到专门的文档。
  • depthTest:同一个区域存在不同的物体叠加,层次不同,哪个在上哪个在下?开启隐藏面消除功能。参考链接;
  • BlendingState:颜色、透明度混合方式的集合。参考链接;
  • CullFace:剔除掉组成外观的三角形的正面|背面|正面和背面,以节省性能。参考链接;
  • vertexFormat:用Boolean表示的各种顶点属性的组合;坐标、纹理、颜色
    法线、切线、副切线;
类型 说明
position 3维坐标
normal 法线
st 2维纹理
bitangent 副切线
tangent 切线
color 颜色

打包:对象=>数组;
解包: 数组=>对象;

  • EllipsoidSurfaceAppearance | MaterialAppearance | PolylineMaterialAppearance 可设置Material属性,
    PerInstanceColorAppearance | PolylineColorAppearance 不可设置Material属性,只可更改颜色;
  • 多个几何体合并为一个Primitive时,通过设置appearance 为PerInstanceColorAppearance,可以修改任意几何体的颜色,颜色类型得是ColorGeometryInstanceAttribute;
  • 两个形状必须具有匹配的vertexFormat,才能被合并到一个Primitive中;
  • 不是所有的外观与属性都能匹配,图形要有外观需要的顶点格式;

你可能感兴趣的:(Cesium-Appearance(外观))