三维场景中模型纹理按距离压缩方法
分享
三维场景中模型纹理按距离压缩方法,在ArcEngine中的接口为
pGlobeLayerProperties5.SetDistanceThresholdsExt(lodShift0, maxDistance0, lodShift1, maxDistance1, lodShift2);
具体的应用方式为
//获取要进行纹理压缩控制的图层,getLayerFromScene为遍历GlobeControl中所有图层的函数
ILayer layer = Common.GlobeUtil.getLayerFromScene(_globeCtrl3D.GlobeDisplay.Scene, "Buildings");
IGlobeDisplayLayers2 pGlobeDisplayLayers2 = _globeCtrl3D.GlobeDisplay as IGlobeDisplayLayers2;
IGlobeLayerProperties5 pGlobeLayerProperties5 = pGlobeDisplayLayers2.FindGlobeProperties(layer) as IGlobeLayerProperties5;
int lodShift0 = 0;
double maxDistance0 = 30;
int lodShift1 = 1;
double maxDistance1 = 50;
int lodShift2 = 0;
//double maxDistance2 = 0;
//获取压缩距离
pGlobeLayerProperties5.GetDistanceThresholdsExt(out lodShift0, out maxDistance0, out lodShift1, out maxDistance1, out lodShift2);
lodShift0 = 0;
maxDistance0 = (double)numericUpDown1.Value;
lodShift1 = 1;
maxDistance1 = (double)numericUpDown2.Value;
lodShift2 = 2;
//double maxDistance2 = 0;
//设置压缩距离
pGlobeLayerProperties5.SetDistanceThresholdsExt(lodShift0, maxDistance0, lodShift1, maxDistance1, lodShift2);
pGlobeLayerProperties5.ApplyDisplayProperties(layer);
_globeCtrl3D.GlobeDisplay.RefreshViewers();
可以设置为2级,即第一级距离内的为精模型,第一级和第二级之间的为经过纹理压缩的模型,第三极之外为白模型
如下图
30-50米
30-80米
60-80米
文章来源:http://blog.csdn.net/sydbc/article/details/17137351
pGlobeLayerProperties5.SetDistanceThresholdsExt(lodShift0, maxDistance0, lodShift1, maxDistance1, lodShift2);
具体的应用方式为
//获取要进行纹理压缩控制的图层,getLayerFromScene为遍历GlobeControl中所有图层的函数
ILayer layer = Common.GlobeUtil.getLayerFromScene(_globeCtrl3D.GlobeDisplay.Scene, "Buildings");
IGlobeDisplayLayers2 pGlobeDisplayLayers2 = _globeCtrl3D.GlobeDisplay as IGlobeDisplayLayers2;
IGlobeLayerProperties5 pGlobeLayerProperties5 = pGlobeDisplayLayers2.FindGlobeProperties(layer) as IGlobeLayerProperties5;
int lodShift0 = 0;
double maxDistance0 = 30;
int lodShift1 = 1;
double maxDistance1 = 50;
int lodShift2 = 0;
//double maxDistance2 = 0;
//获取压缩距离
pGlobeLayerProperties5.GetDistanceThresholdsExt(out lodShift0, out maxDistance0, out lodShift1, out maxDistance1, out lodShift2);
lodShift0 = 0;
maxDistance0 = (double)numericUpDown1.Value;
lodShift1 = 1;
maxDistance1 = (double)numericUpDown2.Value;
lodShift2 = 2;
//double maxDistance2 = 0;
//设置压缩距离
pGlobeLayerProperties5.SetDistanceThresholdsExt(lodShift0, maxDistance0, lodShift1, maxDistance1, lodShift2);
pGlobeLayerProperties5.ApplyDisplayProperties(layer);
_globeCtrl3D.GlobeDisplay.RefreshViewers();
可以设置为2级,即第一级距离内的为精模型,第一级和第二级之间的为经过纹理压缩的模型,第三极之外为白模型
如下图
30-50米
30-80米
60-80米
文章来源:http://blog.csdn.net/sydbc/article/details/17137351
0 个评论
相关问题
- arcgis中如何求多点之间的相互距离?
- sketchup模型导入cityengine中部分纹理丢失,怎么解决?
- 如何使用脚本或其他方法,将图层属性中属性域原值内容替换为属性域描述?
- 在模型构建器中实现计算几何
- 基于ArcGIS的CAD数据向GIS数据转换方法
- 大家过来围观呀,怎么修改widget距地图边框的距离呀,不知道表述是否正确,上图
- ArcMap中提取波段信息的方法
- arcgis api for js中三维的TileLayer默认会显示在MapImageLayer的下面且显示顺序无法调整吗
- arcgis pro将二维矢量面图层拉伸为三维模型后,如何导出该模型?
- 使用portal10.5能直接发布三维模型服务吗
- 三维模型在pro中呈現沒問題上传至portal後模型無法完整呈現(包括破圖、材質遺失)?