cesium 我有10,000个实体,我怎么能不尝试循环方法来改变它们的material?
cesium I have 10,000 entities, how can I do not try a loop approach to change their material?
来自
new Cesium.PolylineGlowMaterialProperty({
glowPower: 0.15,
color: Cesium.Color.fromCssColorString("rgba(42,92,170, 0.15)")
});
到
new Cesium.PolylineGlowMaterialProperty({
glowPower: 0.3,
color: Cesium.Color.fromCssColorString("rgba(255,255,255, 0.15)")
});
有没有什么办法可以把所有材质都改成一个整体?
我认为您需要遍历所有实体,但您可能不想为每个实体分配一个新的 PolylingGlowMaterial
,因为那样可能很慢。相反,请尝试更改现有 material 上的值。假设这是一个“常数”(非时变)属性,如上所示,则有一个 setValue
可用。它是这样的:
entity.polyline.material.glowPower.setValue(0.3);
entity.polyline.material.color.setValue(Cesium.Color.WHITE.withAlpha(0.15));
我在这里还展示了一种不同的方法来获得相同的颜色,而无需要求 Cesium 解析 10000 个颜色字符串。如果所有 10000 个实体都是相同的颜色,你应该在循环开始之前分配这个颜色,并且只分发数千个对它的引用,而不是在循环中重做。
来自
new Cesium.PolylineGlowMaterialProperty({
glowPower: 0.15,
color: Cesium.Color.fromCssColorString("rgba(42,92,170, 0.15)")
});
到
new Cesium.PolylineGlowMaterialProperty({
glowPower: 0.3,
color: Cesium.Color.fromCssColorString("rgba(255,255,255, 0.15)")
});
有没有什么办法可以把所有材质都改成一个整体?
我认为您需要遍历所有实体,但您可能不想为每个实体分配一个新的 PolylingGlowMaterial
,因为那样可能很慢。相反,请尝试更改现有 material 上的值。假设这是一个“常数”(非时变)属性,如上所示,则有一个 setValue
可用。它是这样的:
entity.polyline.material.glowPower.setValue(0.3);
entity.polyline.material.color.setValue(Cesium.Color.WHITE.withAlpha(0.15));
我在这里还展示了一种不同的方法来获得相同的颜色,而无需要求 Cesium 解析 10000 个颜色字符串。如果所有 10000 个实体都是相同的颜色,你应该在循环开始之前分配这个颜色,并且只分发数千个对它的引用,而不是在循环中重做。