类名 Fluid

# new Fluid(options)

流体模拟对象

参数:

名称 类型 默认值 描述
options Object

实例化流体模拟对象所需的参数

viewer Cesium.Viewer

场景视图对象

rectangle Cesium.Rectangle

流体模拟的地理范围

samplePrecision Number

模拟精度,单位米,表示间隔多少米采样一个点模拟。当用户不指定时,内部会根据模拟区域的范围大小自动计算一个模拟精度。理论上采样精度越高,模拟结果越精细,但模拟性能也会随之降低。同时受限于浏览器限制,纹理大小有上限,采样间隔不能太小

sampleMode String

流体可视化的采样模式,可取值有两个:'linear'、'nearest',分别为线性采样和临近采样,对于模拟区域内存在类似建筑物等垂直突变物体的情况,建议采用临近采样模式,默认值为临近采样'nearest'

color Object

流体模拟的色表(使用方法详见下方示例)

flowParticle FlowParticle new FlowParticle()

流体模拟的粒子效果对象

fluidReflection FluidReflection new FluidReflection()

流体模拟的反射效果对象

fluidShadow FluidShadow new FluidShadow()

流体模拟的阴影效果对象

fluidSpecular FluidSpecular new FluidSpecular()

流体模拟的高光效果对象

fluidFoam FluidFoam new FluidFoam()

流体模拟的白浪效果对象

show Boolean false

是否显示流体模拟

返回根据参数实例化的流体模拟对象

Object
示例

流体色表的格式规则

// 流体模拟色表是一个简单JavaScript对象,通过对象属性的key和value值表示不同深度的过渡颜色值
// 其中key表示流体深度(单位米),value表示在此深度下的流体颜色,如:
const singleColorTable = {
  0: new Cesium.Color.BLUE,
}
// 上述色表描述的是深度在小于0,等于0,大于0时流体的颜色为蓝色,即将流体的所有颜色一致设置为蓝色

// 除此之外还可以给不同高度区间设置颜色过渡效果,如:
const multipleColorTable = {
  0: new Cesium.Color.RED,
  5: new Cesium.Color.GREEN,
  10: new Cesium.Color.BLUE,
}
// 上述色表的解读如下:
//   1. 深度小于0时,显示红色;
//   2. 深度处于0到5之间时,根据值的大小,显示在红色和绿色之间的插值颜色;
//   3. 深度处于5到10之间时,根据值的大小,显示在绿色和蓝色之间的插值颜色;
//   4. 深度大于10时,显示蓝色;

创建流体模拟对象

// ES5引入方式
const { Fluid } = zondy
// ES6引入方式
import { Fluid } from "@mapgis/webclient-cesium-plugin"

// 创建流体模拟对象
const fluid = new Fluid({
  show: true,
  samplePrecision: 10,
})

成员变量

Object

# color

流体模拟渲染的色表(使用方法详见上方示例)

FlowParticle

# flowParticle

流体模拟的粒子对象

FluidSourceCollection

# fluidSources

流体模拟的源集合对象

FluidFoam

# foam

白浪特效对象

Array

# objectsToExclude

不参与流体模拟的对象

Boolean

# readonly ready

流体模拟对象是否创建准备就绪

Promise

# readonly readyPromise

流体模拟对象是否创建准备就绪的回调方法

Cesium.Rectangle

# rectangle

流体模拟的范围

FluidReflection

# reflection

流体反射特效对象

Number

# readonly samplePrecision

流体模拟的采样精度

FluidShadow

# shadow

阴影特效对象

Boolean

# show

是否显示流体模拟结果

FluidSpecular

# specular

高光特效对象

Number

# speed

流体模拟流动速度

方法

# addObjects(options)

添加刚体到流体模拟中

参数:

名称 类型 描述
options Object

添加流体模拟刚体的参数

objects Array

需要添加到流体模拟的刚体对象数组

heightMapUpdateCallback function

添加刚体成功后的回调

示例
// 创建刚体对象,如创建一个Entity Box
const blueBox = new Cesium.Entity({
  name: "Blue box",
  position: Cesium.Cartesian3.fromDegrees(-114.0, 40.0, 300000.0),
  box: {
    dimensions: new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
    material: Cesium.Color.BLUE,
  }
})

// 创建上述刚体对象的透明形式,由于刚体添加到流体模拟中有延迟,因此可以创建一个透明刚体
// 用于展示添加刚体的位置,可以在添加刚体成功的回调方法中将其移除,其目的是优化可视化效果
const blueBoxTransparent = new Cesium.Entity({
  name: "Blue box",
  position: Cesium.Cartesian3.fromDegrees(-114.0, 40.0, 300000.0),
  box: {
    dimensions: new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
    material: Cesium.Color.BLUE.withAlpha(0.5),
  }
})
// 将透明刚体添加到场景中
viewer.entities.add(blueBoxTransparent)

// 将刚体添加到流体模拟对象中
fluid.addObjects({
  objects: [blueBox], // 添加刚体到流体模拟中
  heightMapUpdateCallback: () => {
    // 将刚体添加到场景中
    viewer.entities.add(blueBox);
    // 移除场景中用于优化可视化效果的透明刚体
    viewer.entities.remove(blueBoxTransparent);
  },
});

# destroy()

销毁流体模拟对象

示例
fluid.destroy()

# pause()

暂停流体模拟

示例
fluid.pause()

# removeObjects(options)

从流体模拟中移除刚体

参数:

名称 类型 描述
options Object

移除流体模拟刚体的参数

objects Array

需要从流体模拟中删除的刚体对象数组

heightMapUpdateCallback function

移除刚体成功后的回调

示例
// 将刚体从流体模拟中移除
fluid.removeObjects({
  objects: [blueBox],
  heightMapUpdateCallback: () => {
    // 将刚体从场景中移除
    viewer.entities.remove(blueBox);
  },
});

# start()

开始流体模拟

示例
fluid.start()

# update(options)

触发更新高度图的接口,当场景有变化需要做同步时需要调用

参数:

名称 类型 描述
options Object

更新流体模拟的参数

heightMapUpdateCallback function

添加流体模拟成功后的回调

构造函数
成员变量
方法
事件