2.6.10 水效


水效

水效是指在场景中模拟真实水面效果。水效是通过模版实现的,因此在创建水效图层时,需要传入需要显示水效区域的模型文件路径。

水效主要包括添加(创建)、更新和删除3种操作。

下图是水效效果:

  

参数说明

水效可配置的参数如下表所示:

配置项 配置说明 值类型 备注
LayerOptionsName 配置对象名称 string 水效图层配置为:WaterEffectLayerOptions
StencilUrl 模版路径 string 作为水效模版的数据绝对路径。数据后缀为.wrl
WindDirectionX 风力X double 水面上方X方向风力大小
WindDirectionY 风力Y double 水面上方Y方向风力大小
WindSpeed 风速 double 水面上方风速大小
Depth 深度 double 水域渲染深度
ReflectionDamp 反射阻尼 double 水面泡沫影响因子
ChoppyFactor 波浪影响因子 double 水面波浪影响因子
FoamBottomHeight 泡沫底部高度 double 泡沫底部高度
FoamTopHeight 泡沫顶部高度 double 泡沫顶部高度
LightColor 灯光颜色 R,G,B,A 灯光照射水面颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
WaveBottomColor 浪底颜色 R,G,B,A 波浪底面颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
WaveTopColor 浪顶颜色 R,G,B,A 波浪顶面颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
FogColor 水雾颜色 R,G,B,A 水雾颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
FogDensity 水雾强度 double 水雾强度。取值范围在0-1之间
IsChoppy 波浪开启状态 bool 波浪开启状态。默认false-不开启
IsCrestFoam 泡沫开启状态 bool 泡沫开启状态。默认false-不开启
IsReflection 倒影开启状态 bool 水面倒影开启状态。默认false-不开启
IsWaterFog 水雾开启状态 bool 水雾开启状态。默认false-不开启

代码调用示例

Javascript调用

var waterEffectLayer;
function CreateWaterEffectLayer() {
    var tlo = map.CreateLayerOptions("WaterEffectLayer");//创建水效图层配置,任意名称
    tlo.AddConfig("LayerOptionsName", "WaterEffectLayerOptions");//创建配置类型, WaterEffectLayerOptions代表水效数据配置
    tlo.AddConfig("StencilUrl", gModelDeviceFolderPath+"\\water.wrl");//模板路径

    tlo.AddConfig("WindDirectionX", "1.1");//风向X
    tlo.AddConfig("WindDirectionY", "1.1");//风向Y
    tlo.AddConfig("WindSpeed", "1");//风速
    tlo.AddConfig("Depth", "30");//深度
    tlo.AddConfig("ReflectionDamp", "0.35");//反射阻尼
    tlo.AddConfig("ChoppyFactor", "2.5");//波浪影响因子
    tlo.AddConfig("FoamBottomHeight", "2.2");//泡沫底部高度
    tlo.AddConfig("FoamTopHeight", "3.0");//泡沫顶部高度

    tlo.AddConfig("LightColor", "0.41,0.54,0.68,1.0");//灯光颜色
    tlo.AddConfig("WaveBottomColor", "0.1,0.2,0.4,1.0");//浪底颜色
    tlo.AddConfig("WaveTopColor", "0.2,0.3,0.4,1.0");//浪顶颜色
    tlo.AddConfig("FogColor", "0.7,0.8,1.0,1.0");//水面雾颜色
    tlo.AddConfig("FogDensity", "0.2");//水面雾强度
    tlo.AddConfig("IsChoppy", "true");//波浪开启状态
    tlo.AddConfig("IsCrestFoam", "true");//泡沫效应开启状态
    tlo.AddConfig("IsReflection", "true");//倒影开启状态
    tlo.AddConfig("IsWaterFog", "false");//水雾开启状态
    tlo.AddConfig("IsEndlessOcean", "false");//无尽海洋模式开启状态
    waterEffectLayer = map.CreateLayer("WaterEffectLayer", tlo);//创建图层
    map.AddLayer(waterEffectLayer);//添加图层
    waterEffectLayer.Locate();//图层定位
}

//更新图层
function UpdateWaterEffectLayer() {
    var tlo = map.CreateLayerOptions("WaterEffectLayer");//创建水效图层配置,任意名称
    tlo.AddConfig("LayerOptionsName", "WaterEffectLayerOptions");//创建配置类型,WaterEffectLayerOptions代表水效数据配置
    tlo.AddConfig("WindDirectionX", "1.1");//风向X
    tlo.AddConfig("WindDirectionY", "1.1");//风向Y
    tlo.AddConfig("WindSpeed", "2");//风速
    tlo.AddConfig("Depth", "1000");//深度
    tlo.AddConfig("ReflectionDamp", "0.35");//反射阻尼
    tlo.AddConfig("ChoppyFactor", "10.5");//波浪影响因子
    tlo.AddConfig("FoamBottomHeight", "2.2");//泡沫底部高度
    tlo.AddConfig("FoamTopHeight", "30.0");//泡沫顶部高度
    tlo.AddConfig("LightColor", "0.41,0.54,0.68,1.0");//灯光颜色
    tlo.AddConfig("WaveBottomColor", "0.1,0.2,0.4,1.0");//浪底颜色
    tlo.AddConfig("WaveTopColor", "0.2,0.3,0.3,1.0");//浪顶颜色
    tlo.AddConfig("FogColor", "0.7,0.8,1.0,1.0");//水面雾颜色
    tlo.AddConfig("FogDensity", "0.0002");//水面雾强度
    tlo.AddConfig("IsChoppy", "true");//波浪开启状态
    tlo.AddConfig("IsCrestFoam", "true");//泡沫效应开启状态
    tlo.AddConfig("IsReflection", "true");//倒影开启状态
    tlo.AddConfig("IsWaterFog", "false");//水雾开启状态
    tlo.AddConfig("IsEndlessOcean", "false");//无尽海洋模式开启状态
    waterEffectLayer.UpdateLayerOptions(tlo);//更新图层
}
//序列化图层
function SerialWaterEffectLayer() {
    if (waterEffectLayer != null) {
        waterEffectLayer.SerializeLayer("E:\\WaterEffect.xml");//图层序列化
    }
}

//反序列化图层
function DeserialWaterEffectLayer(){
    waterEffectLayer = map.DeserializeLayer("E:\\WaterEffect.xml");//图层反序列化
}

//移除图层
function RemoveWaterEffectLayer() {
    if (waterEffectLayer != null) {
        map.RemoveLayer(waterEffectLayer);//移除图层
        waterEffectLayer = null;
    }
}

C++调用

BaseObjectCOMLib::ILayerObjectPtr waterEffectLayer;//图层对象
void CWaterEffectLayerOptionsDlg::OnBnClickedCreatewatereffectlayer()
{
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = map->CreateLayerOptions("WaterEffectLayer");//创建水效图层配置
    tlo->AddConfig("LayerOptionsName", "WaterEffectLayerOptions");//创建配置类型, WaterEffectLayerOptions代表水效数据配置
    tlo->AddConfig("StencilUrl", (gModelDeviceFolderPath+"\\water.wrl").c_str());//模板路径

    tlo->AddConfig("WindDirectionX", "1.1");//风向X
    tlo->AddConfig("WindDirectionY", "1.1");//风向Y
    tlo->AddConfig("WindSpeed", "1");//风速
    tlo->AddConfig("Depth", "30");//深度
    tlo->AddConfig("ReflectionDamp", "0.35");//反射阻尼
    tlo->AddConfig("ChoppyFactor", "2.5");//波浪影响因子
    tlo->AddConfig("FoamBottomHeight", "2.2");//泡沫底部高度
    tlo->AddConfig("FoamTopHeight", "3.0");//泡沫顶部高度

    tlo->AddConfig("LightColor", "0.41,0.54,0.68,1.0");//灯光颜色
    tlo->AddConfig("WaveBottomColor", "0.1,0.2,0.4,1.0");//浪底颜色
    tlo->AddConfig("WaveTopColor", "0.2,0.3,0.4,1.0");//浪顶颜色
    tlo->AddConfig("FogColor", "0.7,0.8,1.0,1.0");//水面雾颜色
    tlo->AddConfig("FogDensity", "0.2");//水面雾强度
    tlo->AddConfig("IsChoppy", "true");//波浪开启状态
    tlo->AddConfig("IsCrestFoam", "true");//泡沫效应开启状态
    tlo->AddConfig("IsReflection", "true");//倒影开启状态
    tlo->AddConfig("IsWaterFog", "false");//水雾开启状态
    tlo->AddConfig("IsEndlessOcean", "false");//无尽海洋模式开启状态
    waterEffectLayer = map->CreateLayer("WaterEffectLayer", tlo);
    map->AddLayer(waterEffectLayer);
    waterEffectLayer->Locate();
}

void CWaterEffectLayerOptionsDlg::OnBnClickedUpdatewatereffectlayer()
{
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = map->CreateLayerOptions("WaterEffectLayer");//创建水效图层配置
    tlo->AddConfig("LayerOptionsName", "WaterEffectLayerOptions");//创建配置类型,WaterEffectLayerOptions代表水效数据配置
    tlo->AddConfig("WindDirectionX", "1.1");//风向X
    tlo->AddConfig("WindDirectionY", "1.1");//风向Y
    tlo->AddConfig("WindSpeed", "2");//风速
    tlo->AddConfig("Depth", "1000");//深度
    tlo->AddConfig("ReflectionDamp", "0.35");//反射阻尼
    tlo->AddConfig("ChoppyFactor", "10.5");//波浪影响因子
    tlo->AddConfig("FoamBottomHeight", "2.2");//泡沫底部高度
    tlo->AddConfig("FoamTopHeight", "30.0");//泡沫顶部高度
    tlo->AddConfig("LightColor", "0.41,0.54,0.68,1.0");//灯光颜色
    tlo->AddConfig("WaveBottomColor", "0.1,0.2,0.4,1.0");//浪底颜色
    tlo->AddConfig("WaveTopColor", "0.2,0.3,0.3,1.0");//浪顶颜色
    tlo->AddConfig("FogColor", "0.7,0.8,1.0,1.0");//水面雾颜色
    tlo->AddConfig("FogDensity", "0.0002");//水面雾强度
    tlo->AddConfig("IsChoppy", "true");//波浪开启状态
    tlo->AddConfig("IsCrestFoam", "true");//泡沫效应开启状态
    tlo->AddConfig("IsReflection", "true");//倒影开启状态
    tlo->AddConfig("IsWaterFog", "false");//水雾开启状态
    tlo->AddConfig("IsEndlessOcean", "false");//无尽海洋模式开启状态
    waterEffectLayer->UpdateLayerOptions(tlo);
}

void CWaterEffectLayerOptionsDlg::OnBnClickedRemovewatereffectlayer()
{
    if (waterEffectLayer != NULL) {
        map->RemoveLayer(waterEffectLayer);//移除水效图层
        waterEffectLayer = NULL;
    }
}

C#调用

ILayerObject waterEffectLayer;
private void CreateWaterEffectLayer_Click(object sender, EventArgs e)
{
    var tlo = map.CreateLayerOptions("WaterEffectLayer");//创建水效图层配置,任意名称
    tlo.AddConfig("LayerOptionsName", "WaterEffectLayerOptions");//创建配置类型, WaterEffectLayerOptions代表水效数据配置
    tlo.AddConfig("StencilUrl", "E:\\water.wrl");//模板路径

    tlo.AddConfig("WindDirectionX", "1.1");//风向X
    tlo.AddConfig("WindDirectionY", "1.1");//风向Y
    tlo.AddConfig("WindSpeed", "1");//风速
    tlo.AddConfig("Depth", "30");//深度
    tlo.AddConfig("ReflectionDamp", "0.35");//反射阻尼
    tlo.AddConfig("ChoppyFactor", "2.5");//波浪影响因子
    tlo.AddConfig("FoamBottomHeight", "2.2");//泡沫底部高度
    tlo.AddConfig("FoamTopHeight", "3.0");//泡沫顶部高度

    tlo.AddConfig("LightColor", "0.41,0.54,0.68,1.0");//灯光颜色
    tlo.AddConfig("WaveBottomColor", "0.1,0.2,0.4,1.0");//浪底颜色
    tlo.AddConfig("WaveTopColor", "0.2,0.3,0.4,1.0");//浪顶颜色
    tlo.AddConfig("FogColor", "0.7,0.8,1.0,1.0");//水面雾颜色
    tlo.AddConfig("FogDensity", "0.2");//水面雾强度
    tlo.AddConfig("IsChoppy", "true");//波浪开启状态
    tlo.AddConfig("IsCrestFoam", "true");//泡沫效应开启状态
    tlo.AddConfig("IsReflection", "true");//倒影开启状态
    tlo.AddConfig("IsWaterFog", "false");//水雾开启状态
    tlo.AddConfig("IsEndlessOcean", "false");//无尽海洋模式开启状态
    waterEffectLayer = map.CreateLayer("WaterEffectLayer", tlo);
    map.AddLayer(waterEffectLayer);
    waterEffectLayer.Locate();
}
//更新水效图层
private void UpdateWaterEffectLayerUpdateWaterEffectLayer_Click(object sender, EventArgs e)
{
    var tlo = map.CreateLayerOptions("WaterEffectLayer");//创建水效图层配置,任意名称
    tlo.AddConfig("LayerOptionsName", "WaterEffectLayerOptions");//创建配置类型,WaterEffectLayerOptions代表水效数据配置
    tlo.AddConfig("WindDirectionX", "1.1");//风向X
    tlo.AddConfig("WindDirectionY", "1.1");//风向Y
    tlo.AddConfig("WindSpeed", "2");//风速
    tlo.AddConfig("Depth", "1000");//深度
    tlo.AddConfig("ReflectionDamp", "0.35");//反射阻尼
    tlo.AddConfig("ChoppyFactor", "10.5");//波浪影响因子
    tlo.AddConfig("FoamBottomHeight", "2.2");//泡沫底部高度
    tlo.AddConfig("FoamTopHeight", "30.0");//泡沫顶部高度
    tlo.AddConfig("LightColor", "0.41,0.54,0.68,1.0");//灯光颜色
    tlo.AddConfig("WaveBottomColor", "0.1,0.2,0.4,1.0");//浪底颜色
    tlo.AddConfig("WaveTopColor", "0.2,0.3,0.3,1.0");//浪顶颜色
    tlo.AddConfig("FogColor", "0.7,0.8,1.0,1.0");//水面雾颜色
    tlo.AddConfig("FogDensity", "0.0002");//水面雾强度
    tlo.AddConfig("IsChoppy", "true");//波浪开启状态
    tlo.AddConfig("IsCrestFoam", "true");//泡沫效应开启状态
    tlo.AddConfig("IsReflection", "true");//倒影开启状态
    tlo.AddConfig("IsWaterFog", "false");//水雾开启状态
    tlo.AddConfig("IsEndlessOcean", "false");//无尽海洋模式开启状态
    waterEffectLayer.UpdateLayerOptions(tlo);
}
//序列化水效图层
private void SerialWaterEffectLayer_Click(object sender, EventArgs e)
{
    if (waterEffectLayer != null)
    {
        waterEffectLayer.SerializeLayer("E:\\WaterEffect.xml");
    }
}
//反序列化图层
private void DeserialWaterEffectLayer_Click(object sender, EventArgs e)
{
    waterEffectLayer = map.DeserializeLayer("E:\\WaterEffect.xml");
}
//移除水效图层
private void RemoveWaterEffectLayer_Click(object sender, EventArgs e)
{
    if (waterEffectLayer != null)
    {
        map.RemoveLayer(waterEffectLayer);//移除水效图层
        waterEffectLayer = null;
    }
}

results matching ""

    No results matching ""