三维场景中模型纹理按距离压缩方法
分享
三维场景中模型纹理按距离压缩方法,在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数据转换方法
- 在模型构建器中实现计算几何
- geometryEngine.simplify方法是做图形简化的吗,简化机制是什么,为什么调用后没效果?
- arcgis pro将二维矢量面图层拉伸为三维模型后,如何导出该模型?
- 计算“”一群“ ”“指定”两个点间的距离
- ArcGIS Runtime SDK for Android 100.0.0能不能调用ArcGIS online或者portal中的三维场景呢???
- 三维模型在pro中呈現沒問題上传至portal後模型無法完整呈現(包括破圖、材質遺失)?
- 在arcgispro里面创建并共享场景图层包,在online里面发布查看报一下错误,求原因