CloudCollection

new Cesium.CloudCollection ( options )

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


积云示例


使用 CloudCollection#add CloudCollection#remove 从集合中添加和删除云。
Name Type Description
options Object 具有以下属性的 可选 对象:
姓名 类型 默认 描述
show 布尔值 true 可选 是否显示云。
noiseDetail 数字 16.0 可选 噪声纹理中所需的细节量。
noiseOffset 数字 Cartesian3.ZERO 可选 噪声纹理中数据的所需翻译。
debugBillboards 布尔值 false 可选 仅用于调试。确定广告牌是否以不透明颜色呈现。
debugEllipsoids 布尔值 false 可选 仅用于调试。确定云是否将被渲染为不透明的椭圆体。
Example:
// Create a cloud collection with two cumulus clouds
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 也为真,则椭圆体将绘制在广告牌的顶部。

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

控制在用于渲染积云的预计算噪声纹理中捕获的细节量。为了使纹理可以平铺,这必须是 2 的幂。为获得最佳结果,请将其设置为 8.0 32.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 可选 描述云属性的模板,如示例 1 所示。
Returns:
添加到集合中的云。
Throws:
Examples:
// Example 1:  Add a cumulus cloud, specifying all the default values.
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
});
// Example 2:  Specify only the cloud's cartographic position.
const c = clouds.add({
  position : Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
});
See:

contains ( cloud ) Boolean

检查此集合是否包含给定的云。
Name Type Description
cloud CumulusCloud 可选 要检查的云。
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:
// Toggle the show property of every cloud in the collection
const len = clouds.length;
for (let i = 0; i < len; ++i) {
  const c = clouds.get(i);
  c.show = !c.show;
}
See:

isDestroyed () Boolean

如果此对象被销毁,则返回 true;否则为假。

如果这个对象被破坏了,它就不应该被使用;调用 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);  // Returns true
See:
从集合中移除所有云。
Performance:

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

Throws:
Example:
clouds.add(...);
clouds.add(...);
clouds.removeAll();
See: