zoukankan      html  css  js  c++  java
  • 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下生成的模式
  • 相关阅读:
    (转 )Unity对Lua的编辑器拓展
    unity timeline
    unity拖尾粒子问题
    unity shader 波动圈
    linux教程
    Unity Shader 基础
    ugui拖拽
    unity shader 热扭曲 (屏幕后处理)
    英文取名神器
    lua正则表达式替换字符串
  • 原文地址:https://www.cnblogs.com/xiaoguniang0204/p/11747881.html
Copyright © 2011-2022 走看看