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("不存在更新对象,请勿重复删除!");
}
}