cesium设置plane面贴地属性的代码
时间: 2024-01-11 18:02:00 浏览: 144
在 Cesium 中,要设置 plane 面贴地属性,可以在创建 `GeometryInstance` 对象时设置 `modelMatrix` 属性。具体代码如下:
```
var planeGeometry = new Cesium.PlaneGeometry({
vertexFormat: Cesium.VertexFormat.POSITION_ONLY,
});
var planeInstance = new Cesium.GeometryInstance({
geometry: planeGeometry,
modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(position),
});
var planePrimitive = new Cesium.Primitive({
geometryInstances: planeInstance,
appearance: new Cesium.MaterialAppearance({
translucent: true,
material: new Cesium.Material({
fabric: {
type: "Color",
uniforms: {
color: new Cesium.Color(1.0, 0.0, 0.0, 0.5),
},
},
}),
}),
});
viewer.scene.primitives.add(planePrimitive);
```
在上面的代码中,`modelMatrix` 属性使用 `Cesium.Transforms.eastNorthUpToFixedFrame(position)` 方法设置为 `position` 的东北天坐标系。这样,创建的 plane 对象就会自动贴在地形表面上。同时,`appearance` 属性使用 `Cesium.MaterialAppearance` 类型,并设置 `translucent` 属性为 `true`,表示可以透视渲染,实现半透明效果。
如果需要调整 plane 的高度,可以在 `modelMatrix` 中通过 `Cesium.Matrix4.multiplyByTranslation` 方法添加一个偏移矩阵来实现。例如,将 `position` 坐标的高度增加 100 米,代码如下:
```
var planeInstance = new Cesium.GeometryInstance({
geometry: planeGeometry,
modelMatrix: Cesium.Matrix4.multiplyByTranslation(
Cesium.Transforms.eastNorthUpToFixedFrame(position),
new Cesium.Cartesian3(0.0, 0.0, 100.0),
new Cesium.Matrix4()
),
});
```
上述代码中,将 `Cesium.Transforms.eastNorthUpToFixedFrame(position)` 方法返回的矩阵与一个偏移量 `(0.0, 0.0, 100.0)` 相乘,得到新的 `modelMatrix` 矩阵。这样创建的 plane 对象就会高出地形表面 100 米。
阅读全文