Ceiusm设置特定范围显示primitive元素 及 primitve在不使用webgl下的个性化设置

实现功能:特定的距离,如100-10000米范围显示所创建要素,其他距离隐藏。

#基础用法,创建一个BoxGeometry,赋予指定的坐标位置上空,赋予指定的显示范围。

var viewer = new Cesium.Viewer("cesiumContainer",{
    baseLayerPicker:false,
    imageryProvider:goo,//goo为地图底层url
    terrainProvider:new Cesium.createWorldTerrain()
     });
//#创建geometryInstance实例
var instance = new Cesium.GeometryInstance({ geometry:new Cesium.BoxGeometry({
    //根据需要选择BoxGeometry类的创建方法,cesium提供了非常多的实用方法供选择 minimum:
new Cesium.Cartesian3(0,0,0), maximum:new Cesium.Cartesian3(100000,100000,100000),
    //顶点构成方式,几何还没有回去看书,现在只能照搬,暂时是这么理解:
    //ALL方式: 用全部属性构建with well-known attributes: position, normal, st, tangent, and bitangent.
    //DEFAULT:用这些属性构建position, normal, and st attributes
    //
POSITION_ONLY:只用点属性
    //这里用的POSITION_AND_NORMAL,因为api这么说兼容PerInstanceColorAppearance
vertexFormat:Cesium.VertexFormat.POSITION_AND_NORMAL }),
  //#模型转换矩阵,直白说就是将模型转至真实空间的转换,这是见到的最容易使用的Matix4,将模型转到相应的经纬度和高
  //属性{1、颜色要用ColorGeometryInstanceAttribute几何图形实例,这里是几何图形了
  //   2、distanceDisplayCondition:距离显示条件,英文命名很容易理解
  
modelMatrix : Cesium.Matrix4.multiplyByTranslation(Cesium.Transforms.eastNorthUpToFixedFrame( Cesium.Cartesian3.fromDegrees(
111, 33.03883)), new Cesium.Cartesian3(0.0, 0.0, 0), new Cesium.Matrix4()), id:"modelbox",
  } attributes:{
      color:Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED),
  distanceDisplayCondition : new Cesium.DistanceDisplayConditionGeometryInstanceAttribute(100, 100000.0)   }   });
//#添加到viewer.scene.primitives中,进入viewer.scene就能显示
var box_primitive = viewer.scene.primitives.add(new Cesium.Primitive({ geometryInstances:instance,   appearance:new Cesium.PerInstanceColorAppearance({ //外形使用perInstanceColorAppearance方式,应该要主要与vertexFormat兼容,今后使用时要注意 translucent:false, closed:true })})); alert(box_primitive);//#提醒object说明创建成功,如果看不见,那么这个问题不会很大,在材料,位置,颜色等上找


 #更多的个性化设置(真的是更多的个性化设置)

api的地址:http://127.0.0.1:8081/Build/Documentation/Material.html,后面就不一一贴了。

#继续上面的case,设置materail为棋盘,棋盘的格式横竖10与5,颜色为红色和白色。

&使用更个性化的vertexFormat,这里更改vertexFormat : Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT

    vertexFormat : Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT 名字中是有ellipsioid,但是api写的很清楚“which supports all materials”,这种模式不考虑材质阴影,所以会加载生成加载快一些;

   同样,也可以使用MaterialAppearance,考虑阴影,会有些重影。

&个性化材质,这里要去Cesium.Material的api查设置,刚开始去了CheckerboardMaterialProperty的api,

  后者api是evenColor、oddColor,前者是lightColor、daraColor!

 同样的,设置其他材质也要一起materail里面使用响应的参数
 appearance:new Cesium.EllipsoidSurfaceAppearance({
        material:Cesium.Material.fromType("Checkerboard",{
        lightColor:new Cesium.Color(1000.5),
        darkColor:new Cesium.Color(0100.5),
        repeat:new Cesium.Cartesian2(5.010.0)
        })})
 
MaterialAppearance下生成的模式
原文地址:https://www.cnblogs.com/xiaoguniang0204/p/11747881.html