2.6.4 地形透明特效


地形透明特效

地形透明特效是指调整场景内的地形透明度的更新操作。该操作可以使地形半透明显示,让地形以下的数据显示出来。

地形透明特效主要包括添加(创建)、更新和删除3种操作。

注意: 地形无法做到全透明的效果。因此设置透明度为0.0时效果与1.0时一致。

下图是地形透明特效效果:

  

参数说明

地形透明特效可配置的参数如下表所示:

配置项 配置说明 值类型 备注
OptionsTypeName 操作配置项类名 string TerrainOption代表地形更新
Operation 操作类型 string 更新操作的类型。Opacity代表透明度操作
Opacity 透明度 float 地形的透明度。值在0.0-1.0之间。1.0代表不透明,其他值代表透明程度, 当值为0.0时,地形恢复不透明效果

代码调用示例

Javascript调用

//创建地形透明更新操作
var operationPtr = null;
function createTerriantOperation(){//创建更新操作
    if(operationPtr == null){
        var tlo = map.CreateOperationOptions("TerrainOption");//创建更新配置对象,任意名称
        tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新  
        tlo.AddConfig("Operation", "Opacity");//添加操作类型为透明度操作
        tlo.AddConfig("Opacity", 0.5);//透明度值(0.0~1.0) 
        operationPtr = map.CreateOperation("TerrainOperation", tlo);//创建更新对象,TerrainOperation代表地形更新
        map.AddOperation(operationPtr);//添加更新对象
    }else{
        alert("请勿重复创建更新操作!");
    }
}
//更新地形透明操作
function updateTerriantOperation(){                                                   
    if(operationPtr != null){
        var OpacityArrays = [0.0, 0.1, 0.2, 0.5, 0.8, 1.0];//透明度值数组
        var opacity = OpacityArrays[Math.floor(Math.random() * OpacityArrays.length)]; //从数组中获取透明度的值
        var tlo = map.CreateOperationOptions("TerrainOption");//创建更新配置对象,任意名称
        tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
        tlo.AddConfig("Opacity", opacity);//透明度值(0.0~1.0) 
        operationPtr.UpdateOperationOptions(tlo);//更新操作   
    }else{
        alert("不存在更新对象,无法更新!");
    }    
}
//移除地形透明更新操作
function removeOperation(){
    if(operationPtr != null){
        var tlo = map.CreateOperationOptions("TerrainOption");//创建更新配置对象,任意名称
        tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
        tlo.AddConfig("Opacity", "1");//添加透明度
        operationPtr.UpdateOperationOptions(tlo);//更新操作   
        map.RemoveOperation(operationPtr);//移除更新对象
        operationPtr = null;
    }else{
        alert("不存在更新对象,请勿重复删除!");
    }
}

C++调用

BaseObjectCOMLib::IOperationObjectPtr operationPtr;//更新对象

//创建地形透明更新操作
void Cf5c3TerrainOpacityDlg::OnBnClickedcreateterrainoperation()
{
    if(operationPtr)
    {
        return;
    }
    ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("TerrainOption");//创建配置类型,操作类型的配置
    tlo->AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新  
    tlo->AddConfig("Operation", "Opacity");//添加操作类型为透明度操作
    tlo->AddConfig("Opacity", "0.5");//透明度值(0.0~1.0) 
    operationPtr = map->CreateOperation("TerrainOperation", tlo);//创建更新对象,TerrainOperation代表地形更新
    map->AddOperation(operationPtr);//添加更新对象
}

//更新地形透明操作
void Cf5c3TerrainOpacityDlg::OnBnClickedupdateterrainoperation()
{
    if(!operationPtr)
    {
        return;
    }
    ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("TerrainOption");//创建配置类型,操作类型的配置
    tlo->AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
    tlo->AddConfig("Opacity", "0.1");//透明度值(0.0~1.0) 
    operationPtr->UpdateOperationOptions(tlo);//更新操作   
}

//移除地形透明更新操作
void Cf5c3TerrainOpacityDlg::OnBnClickedremoveterrainoperation()
{
    if(!operationPtr)
    {
        return;
    }
    ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("TerrainOption");//创建配置类型,操作类型的配置
    tlo->AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
    tlo->AddConfig("Opacity", "1");//添加透明度
    operationPtr->UpdateOperationOptions(tlo);//更新操作   
    map->RemoveOperation(operationPtr);//移除更新对象
    operationPtr = NULL;
}

C#调用

IOperationObject operationPtr;//更新对象
//开启地形透明操作
private void createTerriantOperation_Click(object sender, EventArgs e)
{
    if (operationPtr == null)
    {
        var tlo = map.CreateOperationOptions("TerrainOption");//创建更新配置对象,任意名称
        tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新  
        tlo.AddConfig("Operation", "Opacity");//添加操作类型为透明度操作
        tlo.AddConfig("Opacity", 0.5);//透明度值(0.0~1.0) 
        operationPtr = map.CreateOperation("TerrainOperation", tlo);//创建更新对象,TerrainOperation代表地形更新
        map.AddOperation(operationPtr);//添加更新对象
    }
    else
    {
        MessageBox.Show("请勿重复创建更新操作!");
    }
}
//更新地形透明操作
private void updateTerriantOperation_Click(object sender, EventArgs e)
{
    if(operationPtr != null){
        var tlo = map.CreateOperationOptions("TerrainOption");//创建更新配置对象,任意名称
        tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
        tlo.AddConfig("Opacity", 0.1);//透明度值(0.0~1.0) 
        operationPtr.UpdateOperationOptions(tlo);//更新操作   
    }else{
        MessageBox.Show("不存在更新对象,无法更新!");
    }    
}
//移除地形透明更新操作
private void removeOperation_Click(object sender, EventArgs e)
{
    if (operationPtr != null)
    {
        var tlo = map.CreateOperationOptions("TerrainOption");//创建更新配置对象,任意名称
        tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
        tlo.AddConfig("Opacity", "1");//添加透明度
        operationPtr.UpdateOperationOptions(tlo);//更新操作   
        map.RemoveOperation(operationPtr);//移除更新对象
        operationPtr = null;
    }
    else
    {
        MessageBox.Show("不存在更新对象,请勿重复删除!");
    }
}

results matching ""

    No results matching ""