CloudCollection

new Cesium.CloudCollection(options)

3D 场景中可渲染的云集合。


示例积云


使用 CloudCollection#addCloudCollection#remove 向集合添加和移除云。
Name Type Description
options object optional 具有以下属性的对象:
Name Type Default Description
show boolean true optional 是否显示云。
noiseDetail number 16.0 optional 噪声纹理中期望的 Detail 量。
noiseOffset number Cartesian3.ZERO optional 噪声纹理中数据的期望平移。
debugBillboards boolean false optional 仅用于调试。确定是否使用不透明颜色渲染广告牌。
debugEllipsoids boolean false optional 仅用于调试。确定是否将云渲染为不透明椭球体。
Example:
// 创建具有两个积云的云集合
const clouds = scene.primitives.add(new Cesium.CloudCollection());
clouds.add({
  position : new Cesium.Cartesian3(1.0, 2.0, 3.0),
  maximumSize: new Cesium.Cartesian3(20.0, 12.0, 8.0)
});
clouds.add({
  position : new Cesium.Cartesian3(4.0, 5.0, 6.0),
  maximumSize: new Cesium.Cartesian3(15.0, 9.0, 9.0),
  slice: 0.5
});
Demo:
See:

Members

debugBillboards : boolean

此属性仅用于调试;不用于生产环境且未进行优化。

使用一种不透明颜色渲染广告牌以进行调试。

Default Value: false

debugEllipsoids : boolean

此属性仅用于调试;不用于生产环境且未进行优化。

将云绘制为不透明的单色椭球体以进行调试。 如果 debugBillboards 也为 true,则椭球体将绘制在广告牌之上。

Default Value: false
返回此集合中云的数量。

控制在预计算噪声纹理中捕获的 Detail 量, 用于渲染积云。为了使纹理可平铺, 这必须是 2 的幂。为了获得最佳结果,将其设置为 8.032.0(含)之间的 2 的幂。

clouds.noiseDetail = 8.0;
clouds.noiseDetail = 32.0;
Default Value: 16.0

对噪声纹理坐标应用平移以生成不同的数据。 如果默认噪声不能生成美观的云,可以修改此项。

default
clouds.noiseOffset = new Cesium.Cartesian3(10, 20, 10);
Default Value: Cartesian3.ZERO
确定此集合中的广告牌是否将显示。
Default Value: true

Methods

创建具有指定初始属性的云并将其添加到集合中。 返回添加的云,以便稍后可以修改或从集合中移除。
Performance:

调用 add 预期为常数时间。但是,集合的顶点缓冲区 会被重写——这是一个 O(n) 操作,也会产生 CPU 到 GPU 的开销。为了 获得最佳性能,在调用 update 之前添加尽可能多的云。

Name Type Description
options object optional 描述云属性的模板,如示例 1 所示。
Returns:
添加到集合的云。
Throws:
Examples:
// 示例 1:添加积云,指定所有默认值。
const c = clouds.add({
  show : true,
  position : Cesium.Cartesian3.ZERO,
  scale : new Cesium.Cartesian2(20.0, 12.0),
  maximumSize: new Cesium.Cartesian3(20.0, 12.0, 12.0),
  slice: -1.0,
  cloudType : CloudType.CUMULUS
});
// 示例 2:仅指定云的笛卡尔位置。
const c = clouds.add({
  position : Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
});
See:

contains(cloud)boolean

检查此集合是否包含给定的云。
Name Type Description
cloud CumulusCloud optional 要检查的云。
Returns:
如果此集合包含云则返回 true,否则返回 false。
See:
销毁此对象持有的 WebGL 资源。销毁对象允许确定性 释放 WebGL 资源,而不是依赖垃圾回收器来销毁此对象。

对象销毁后不应再使用;调用除 isDestroyed 之外的任何函数都将导致 DeveloperError 异常。因此, 如示例所示,将返回值(undefined)赋给该对象。
Throws:
Example:
clouds = clouds && clouds.destroy();
See:
返回集合中指定索引处的云。索引从零开始 随着添加云而增加。移除云会将其后的所有云左移, 更改它们的索引。此函数通常与 CloudCollection#length 一起使用以遍历集合中的所有云。
Performance:

预期为常数时间。如果从集合中移除了云且 未调用 CloudCollection#update,则执行隐式的 O(n) 操作。

Name Type Description
index number 云的从零开始的索引。
Returns:
指定索引处的云。
Throws:
Example:
// 切换集合中每个云的显示属性
const len = clouds.length;
for (let i = 0; i < len; ++i) {
  const c = clouds.get(i);
  c.show = !c.show;
}
See:
如果此对象已被销毁则返回 true;否则返回 false。

如果此对象已被销毁,则不应使用它;调用除 isDestroyed 之外的任何函数都将导致 DeveloperError 异常。
Returns:
如果此对象已被销毁则返回 true;否则返回 false
See:

remove(cloud)boolean

从集合中移除云。
Name Type Description
cloud CumulusCloud 要移除的云。
Returns:
如果云被移除则返回 true;如果在集合中未找到云则返回 false
Throws:
Example:
const c = clouds.add(...);
clouds.remove(c);  // 返回 true
See:
从集合中移除所有云。
Performance:

O(n)。从集合中移除所有云 然后添加新云比完全创建新集合更高效。

Throws:
Example:
clouds.add(...);
clouds.add(...);
clouds.removeAll();
See:
Need help? The fastest way to get answers is from the community and team on the Cesium Forum.