cesium中 Primitive geometryInstances中多个GeometryInstance
时间: 2024-03-01 10:52:14 浏览: 186
在Cesium中,可以在Primitive的geometryInstances属性中添加多个GeometryInstance,实现多个几何体的渲染。每个GeometryInstance可以指定不同的几何体、材质、变换等属性。
以下是一个示例代码,演示了如何在一个Primitive中添加两个不同的BoxGeometry:
```javascript
//创建场景和相机
var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
var camera = viewer.camera;
//创建两个BoxGeometry
var box1 = new Cesium.BoxGeometry({
vertexFormat : Cesium.VertexFormat.POSITION_ONLY,
minimum : new Cesium.Cartesian3(-250000.0, -250000.0, -250000.0),
maximum : new Cesium.Cartesian3(250000.0, 250000.0, 250000.0)
});
var box2 = new Cesium.BoxGeometry({
vertexFormat : Cesium.VertexFormat.POSITION_ONLY,
minimum : new Cesium.Cartesian3(-1000000.0, -1000000.0, -1000000.0),
maximum : new Cesium.Cartesian3(1000000.0, 1000000.0, 1000000.0)
});
//创建两个GeometryInstance
var instance1 = new Cesium.GeometryInstance({
geometry : box1,
modelMatrix : Cesium.Matrix4.IDENTITY,
attributes : {
color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED)
}
});
var instance2 = new Cesium.GeometryInstance({
geometry : box2,
modelMatrix : Cesium.Matrix4.IDENTITY,
attributes : {
color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE)
}
});
//创建Primitive并添加两个GeometryInstance
var primitive = new Cesium.Primitive({
geometryInstances : [instance1, instance2],
appearance : new Cesium.PerInstanceColorAppearance({
flat : true,
translucent : false
})
});
//将Primitive添加到场景中
scene.primitives.add(primitive);
```
在上述代码中,我们先创建了两个BoxGeometry,然后分别创建了两个GeometryInstance,每个GeometryInstance指定了不同的BoxGeometry和颜色属性。最后,我们创建了一个Primitive,并将两个GeometryInstance添加到了它的geometryInstances属性中。在Primitive的appearance属性中,我们使用了PerInstanceColorAppearance,并指定了flat和translucent属性。最后将Primitive添加到场景中即可。
阅读全文