在CesiumJS中,PostProcessStageCollection类定义了场景后处理阶段的集合。该集合是对场景中所有后处理阶段的引用,并控制它们的执行顺序。
要创建PostProcessStageCollection,只需调用 Scene
对象的 postProcessStages
属性即可获得默认的后处理阶段集合。您还可以通过调用 PostProcessStageCollection.fromScene
来创建新的后处理阶段集合。
var stageCollection = viewer.scene.postProcessStages; // 获取默认的后处理阶段集合
var newStageCollection = Cesium.PostProcessStageCollection.fromScene(viewer.scene); // 创建一个新的后处理阶段集合
为了添加后处理阶段,必须使用 add
方法将 post process stage
对象添加到集合中。要删除后处理阶段,可以使用 remove
方法。
var hdrEffect = new Cesium.HDREffect(); // 创建一个新的后处理阶段
var stage = stageCollection.add(Cesium.PostProcessStageLibrary.createHDRStage(hdrEffect)); // 将后处理阶段添加到集合中
stageCollection.remove(stage); // 从集合中删除后处理阶段
post process stage
对象可以根据需要进行配置,以更改其外观或行为。例如,为了更改后处理阶段的亮度,可以访问其 brightness 属性。
var bloomEffect = new Cesium.BloomEffect({
bias: 0.5,
blur: 10,
contrast: 1.0,
intensity: 0.8
});
var bloomStage = stageCollection.add(Cesium.PostProcessStageLibrary.createBloomStage(bloomEffect));
bloomStage.brightness = 5.0; // 将亮度更改为5
为了控制 post process stages
之间的执行顺序,可以使用 add
方法的 index
参数将其插入到特定位置。更改 post process stage
集合中处理的顺序,可以直接调整其顺序。
var hdrEffect = new Cesium.HDREffect();
var hdrStage = stageCollection.add(Cesium.PostProcessStageLibrary.createHDRStage(hdrEffect));
var bloomEffect = new Cesium.BloomEffect({
bias: 0.5,
blur: 10,
contrast: 1.0,
intensity: 0.8
});
var bloomStage = stageCollection.add(Cesium.PostProcessStageLibrary.createBloomStage(bloomEffect), 0); // 该后处理阶段将被插入到开始
stageCollection.reorder(bloomStage, 2); // 该后处理阶段将被移动到第三个位置
var viewer = new Cesium.Viewer('cesiumContainer');
var stageCollection = viewer.scene.postProcessStages;
var hdrEffect = new Cesium.HDREffect();
var hdrStage = stageCollection.add(Cesium.PostProcessStageLibrary.createHDRStage(hdrEffect));
var bloomEffect = new Cesium.BloomEffect({
bias: 0.5,
blur: 10,
contrast: 1.0,
intensity: 0.8
});
var bloomStage = stageCollection.add(Cesium.PostProcessStageLibrary.createBloomStage(bloomEffect), 0);
bloomStage.brightness = 5.0;
stageCollection.reorder(bloomStage, 2);
PostProcessStageCollection.add(stage, index) // 将后处理阶段添加到集合中,可以指定其插入位置。
PostProcessStageCollection.contains(stage) // 如果指定的后处理阶段存在于集合中,则返回 true。
PostProcessStageCollection.get(index) // 获取后处理阶段集合中指定位置的后处理阶段。
PostProcessStageCollection.indexOf(stage) // 获取指定后处理阶段的index,如果不存在则返回 -1。
PostProcessStageCollection.length // 获取当前 PostProcessStageCollection 中后处理阶段的数量。
PostProcessStageCollection.removeAll() // 从集合中删除所有后处理阶段。
PostProcessStageCollection.remove(stage) // 从集合中删除指定的后处理阶段。
PostProcessStageCollection.reorder(stage, newIndex) // 移动后处理阶段到新的位置。