Skip to content

概述

Cesium 提供的样式规则系统,可对 3D Tiles 进行: 按属性着色, 显示隐藏元素等控制。

javascript
const osmBuildingsTileset = await Cesium.createOsmBuildingsAsync()
viewer.scene.primitives.add(osmBuildingsTileset)

osmBuildingsTileset.style = new Cesium.Cesium3DTileStyle({
  color: {
    conditions: [
      ["${feature['name']} === '兰生大厦'", "color('red')"],
      ["true", "color('white')"],
    ],
  },
  show: "${feature['building']} === 'apartments'"
})

viewer.camera.lookAt(
  Cesium.Cartesian3.fromDegrees(121.47, 31.23, 0),
  new Cesium.HeadingPitchRange(
    Cesium.Math.toRadians(0),
    Cesium.Math.toRadians(-45),
    10000
  )
)
javascript
osmBuildingsTileset.style = new Cesium.Cesium3DTileStyle({
  color: {
    conditions: [
      ["${distanceFromComplex} > 0.010", "color('green')"],
      ["${distanceFromComplex} > 0.006", "color('blue')"],
      ["${distanceFromComplex} > 0.002", "color('yellow')"],
      ["${distanceFromComplex} > 0.0001", "color('red')"],
    ]
  },
  // defines用于创建变量,vec2用于二维向量
  // distance为内置函数:https://github.com/CesiumGS/3d-tiles/tree/main/specification/Styling#built-in-functions
  defines: {
    distanceFromComplex:
      "distance(vec2(${feature['cesium#longitude']}, ${feature['cesium#latitude']}), vec2(121.47, 31.23))",
  },
})
/