Skip to content

概述

  • 性能更好:多个图元可以一起渲染,geometryInstances: [instance1, instance2]
  • 对模型的精细化控制:gltfCallback: gltf => {}
  • 更多的材质:Dot、Water等,Fabric定义,GLSL着色器
javascript
const rect = Cesium.Rectangle.fromDegrees(120.0, 20.0, 130.0, 25.0)
const point = Cesium.Cartesian3.fromDegrees(125.0, 22.5, 0)
const instance1 = new Cesium.GeometryInstance({
  geometry: new Cesium.RectangleGeometry({
    rectangle: rect,
    vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,
  }),
})

const instance2 = new Cesium.GeometryInstance({
  geometry: new Cesium.CylinderGeometry({
    length: 100000.0,
    topRadius: 20000.0,
    bottomRadius: 20000.0,
    vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,
  }),
  modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(point),
})

viewer.scene.primitives.add(
  new Cesium.Primitive({
    geometryInstances: [instance1, instance2],
    appearance: new Cesium.EllipsoidSurfaceAppearance({
      material: Cesium.Material.fromType('Color', {
        color: Cesium.Color.RED.withAlpha(0.5)
      }),
    }),
  })
)
javascript
const rect = Cesium.Rectangle.fromDegrees(120.0, 20.0, 130.0, 25.0)
const instance = new Cesium.GeometryInstance({
  geometry: new Cesium.RectangleGeometry({
    rectangle: rect,
    vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,
  }),
})
viewer.scene.primitives.add(
  new Cesium.Primitive({
    geometryInstances: instance,
    appearance: new Cesium.EllipsoidSurfaceAppearance({
      material: Cesium.Material.fromType('Dot', {
        lightColor: Cesium.Color.RED,
        darkColor: Cesium.Color.YELLOW,
      }),
    }),
  })
)
javascript
const lon = 121.47
const lat = 31.2
const position = Cesium.Cartesian3.fromDegrees(lon, lat, 5000.0)
const headingPositionRoll = new Cesium.HeadingPitchRoll()
const fixedFrameTransform = Cesium.Transforms.localFrameToFixedFrameGenerator(
  "north",
  "west"
)
const model = await Cesium.Model.fromGltfAsync({
  url: "/models/plane.glb",
  modelMatrix: Cesium.Transforms.headingPitchRollToFixedFrame(
    position,
    headingPositionRoll,
    Cesium.Ellipsoid.WGS84,
    fixedFrameTransform
  ),
  scale: 100,
  gltfCallback: gltf => {
    gltf.materials[0].pbrMetallicRoughness.baseColorFactor = [0.0, 0.0, 1.0, 1.0]
    delete gltf.nodes[7].mesh
  }
})
viewer.scene.primitives.add(model)
/