本文主要是介绍SuperMap地形、影像、精细模型数据处理注意事项与前端webgl优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、地形
- 二、影像通过镶嵌数据集组织数据,影像图层属性**亮度**要设置为1
- 三、精细模型
- 数据处理
- (一)纹理要求
- (二)对象要求
- (三)iDesktop模型优化
- (四)max模型中的“地形”优化
- (五)常见问题
- 投影转换后模型纹理发生变化
- 前端优化
本文目前根据数据处理进度持续编辑。20201030。
一、地形
二、影像通过镶嵌数据集组织数据,影像图层属性亮度要设置为1
三、精细模型
数据处理
(一)纹理要求
- 1.贴图尺寸:材质规格为 2 的 n 次方,且最大不超过 1024*1024,以利于网络传输。纹理长宽比差异不宜过大,如 512ⅹ32。另外,纹理贴图不易太碎,如一栋建筑四面墙,每
面墙一张贴图。 - 2.贴图填充率:贴图中的有效纹理像素面积,与总纹理的像素面积的比值不得低于 70%
- 3.区域内不同建筑立面用到相同或类似纹理贴图时,须采用同一张纹理贴图。不可出现同
图不同名或同名不同图的贴图
(二)对象要求
- 1.一个单独对象的面数不要超过 3 万个,若超过 3 万个三角面,则应该分成 2 个或多个对象。
- 2.比较长的条带状物体(如高架路等)必须分段,每段长度不能超过 500 米
- 3.一个模型对象对应的贴图不要超过 100 个,若超过 100 个,则应该分成 2 个或多个。
(三)iDesktop模型优化
- 做缓存时不要保留法线。
(四)max模型中的“地形”优化
拆分保留地表的面片即可。可有效减少多边形数量。
(五)常见问题
投影转换后模型纹理发生变化
对模型重新计算法线或流形校正。
前端优化
Cesium.when(promise, function (layers) {layers.forEach(layer => {// layer.lodRangeScale = 0.5console.log("layer")console.log(layers)if (layer instanceof Cesium.S3MTilesLayer) {layer.clearMemoryImmediately = false //不要立马清除S3M缓存。// if (layer.name == "xiangli_tj" || layer.name == "dali_tj") {// layer.lodRangeScale = 1layer.ignoreNormal = true;//数据无法线时让GPU自动计算法线,法线可解决模型放大后有噪点的问题。layer.visibleDistanceMax = 2000//2kmlayer.maximumMemoryUsage = 4000 //控制内存使用量layer.indexedDBSetting.isGeoTilesRootNodeSave = true$('#set').click(function () {layer.visibleDistanceMax = $('#vheight').val()// console.log(layer.getSelection());//获取ID号let x=viewer.scene.layers.getSelectedLayer()let xx = x.getSelection()let xxx = layer._selections.length;//遍历S3M图层判断是否有对象集被选中,_selections为对象数组if (xxx != 0) {alert(layer.name);console.log("xx");console.log(xx);console.log(layer);console.log("xx");// console.log(scene);}});// }}})})
这篇关于SuperMap地形、影像、精细模型数据处理注意事项与前端webgl优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!