当前位置: 首页 > news >正文

海洋网络专业网站建设郑州做网站公司有多少钱

海洋网络专业网站建设,郑州做网站公司有多少钱,浙江网站建设推广公司哪家权威,网站建设收费标准教程废话:你的球是不是很丑?是不是没有科技感?是不是没有好看的影像? 因果: 因:客户问,底图可不可以改变颜色,想让球更漂亮一些。 答:可以改变影像饱和度,透明度…

废话:你的球是不是很丑?是不是没有科技感?是不是没有好看的影像?

因果:

因:客户问,底图可不可以改变颜色,想让球更漂亮一些。
答:可以改变影像饱和度,透明度,灰度,色调等,也可以改变影像的瓦片着色。但是能不能叠加图层,叠加一个滤镜呢?

问:如何让球改成第二张图片的样子,像是加了滤镜。(着急的可以直接去看最后)
请添加图片描述
请添加图片描述

1,首先,hue调色调,没有找到相同的色调。

hue是接收弧度的,从3.14到-3.14我竟然找不到适合上面的颜色。如果有大佬懂的,可以指点一下。
详情参考cesium示例网址

2,然后,实现改变影像着色器。把影像改了,不是想要的效果。

cesium中,默认的底图颜色往往难以满足个性化需求,而【蓝色科技】风格常常备受青睐,本文从实操角度介绍实现方法。
请添加图片描述

简单来说,我们所用的方法叫做【反色滤镜】,总的分为2个步骤,反色,过滤。具体做法如下:

首先要获取目标影像图层,这里不能直接对div进行操作,因为会将地图上的所有元素都反色过滤了。

 // 获取地图影像图层let baseLayer = viewer.imageryLayers.get(0);
其次,定义2个变量,用来控制是否反色,以及过滤的具体值//设置2个变量,用来判断是否进行颜色的翻转和过滤baseLayer.invertColor = true;baseLayer.filterRGB = [0, 50, 100]; //[255,255,255] = > [0,50,100]

接着要获取着色器,方便后续直接操作着色器,写入修改后的glsl。

//   更改底图着色器的代码const baseFragmentShader =viewer.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources;

通过打印baseFragmentShader,可以看到里面有3个

接下来是最关键的步骤,反色+过滤。

// 循环修改着色器for (let i = 0; i < baseFragmentShader.length; i++) {// console.log(baseFragmentShader[i]);const strS = "color = czm_saturation(color, textureSaturation);\n#endif\n";let strT = "color = czm_saturation(color, textureSaturation);\n#endif\n";if (baseLayer.invertColor) {strT += `color.r = 1.0 - color.r;color.g = 1.0 - color.g;color.b = 1.0 - color.b;`;}if (baseLayer.filterRGB) {strT += `color.r = color.r*${baseLayer.filterRGB[0]}.0/255.0;color.g = color.g*${baseLayer.filterRGB[1]}.0/255.0;color.b = color.b*${baseLayer.filterRGB[2]}.0/255.0;`;}baseFragmentShader[i] = baseFragmentShader[i].replace(strS, strT);}

因为R、G、B都是从0-1,反色就是用1减去原来的值

color.r = 1.0 - color.r;
color.g = 1.0 - color.g;
color.b = 1.0 - color.b;

过滤则是要套用公式,对R、G、B进行操作

color.r = color.r*${baseLayer.filterRGB[0]}.0/255.0;
color.g = color.g*${baseLayer.filterRGB[1]}.0/255.0;
color.b = color.b*${baseLayer.filterRGB[2]}.0/255.0;

strS中的内容是glsl,原本就存在于baseFragmentShader中,而修改后的颜色值,直接用replace进行替换,将strT顶进去,发挥作用。

filterRGB的值可以根据需要进行调整,我试了2个值,都不错 [60, 145, 172] 和[0, 50, 100]

完整代码如下,可以封装成一个方法被调用。

export default function modifyMap(viewer) {// 获取地图影像图层let baseLayer = viewer.imageryLayers.get(0);//设置2个变量,用来判断是否进行颜色的翻转和过滤baseLayer.invertColor = true;baseLayer.filterRGB = [0, 50, 100]; //[255,255,255] = > [0,50,100]//   更改底图着色器的代码const baseFragmentShader =viewer.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources;// console.log(baseFragmentShader);// 循环修改着色器for (let i = 0; i < baseFragmentShader.length; i++) {// console.log(baseFragmentShader[i]);const strS = "color = czm_saturation(color, textureSaturation);\n#endif\n";let strT = "color = czm_saturation(color, textureSaturation);\n#endif\n";if (baseLayer.invertColor) {strT += `color.r = 1.0 - color.r;color.g = 1.0 - color.g;color.b = 1.0 - color.b;`;}if (baseLayer.filterRGB) {strT += `color.r = color.r*${baseLayer.filterRGB[0]}.0/255.0;color.g = color.g*${baseLayer.filterRGB[1]}.0/255.0;color.b = color.b*${baseLayer.filterRGB[2]}.0/255.0;`;}baseFragmentShader[i] = baseFragmentShader[i].replace(strS, strT);}
}

但是这种方式是直接把影像的瓦片颜色都改啦,山体都变色啦,不太像在正常天地图影像或其他影像上蒙上一层滤镜的感觉。

3,做一个全球kml面,给面一个颜色,加载到B端。

在图新地球4中画了半球全球的kml文件导出后,但是加载到B端引擎场景中效果样式错乱。
kml不能画整个球,绘制不到B端球上,但是我觉得应该可以画个六个八个,一起加载到球上,但是太多啦,我就没有再试。

4,把影像中lrc里瓦片图片换掉,成功实现

我找到了一个纯色深蓝色影像,发现加载这个影像是都是请求的一张图片,再看这个影像lrc文件,也是只引用这个图片的链接。那就可以把图片和文件放到静态服务器上,在线引用这个影像啦。代码,文件,图片放到下面啦,图片颜色可自己换,实现各种颜色滤镜。

mengban = new LSGlobe.LSLRCImageryProvider("http://show.wish3d.com/gyl/darkBaseMap.lrc");
mengban.name = "蒙版";
viewer.imageryLayers.addImageryProvider(mengban, 3);

darkBaseMap.lrc文件

<?xml version="1.0" encoding="GB18030"?><DataDefine>
<Version>0</Version>
<Name>img</Name>
<GeoGridType>WebMercatorWGS84</GeoGridType>
<SampleSize>256</SampleSize>
<FileExt></FileExt>
<DataVersion></DataVersion>
<DataType>urlformat</DataType>
<TileRowDir>NorthToSouth</TileRowDir>
<LocalPath></LocalPath>
<UrlParamOrder>X,Y,Z</UrlParamOrder>
<NetPath>http://localhost:8800/mengban.png</NetPath>
<Range>
<West>-180</West>
<East>180</East>
<South>-85</South>
<North>85</North>
<LevelBegin>1</LevelBegin>
<LevelEnd>20</LevelEnd>
</Range>
</DataDefine>

在这里插入图片描述

http://www.yayakq.cn/news/491589/

相关文章:

  • 网站的功能和作用是什么郑州公共住宅建设投资有限公司网站
  • php网站开发工程师职责崇安区网站建设价格
  • 昆明专门做网站手游折扣平台app哪个好
  • 重庆网站建设价格费用杭州哪家做外贸网站好
  • 网络营销课程实训总结seovip培训
  • 新津网站建设青海建筑人才网
  • 吉林新农村建设网站自学网站建设买什么书
  • 灵犀科技 高端网站建设大庆市建设局网站刘东
  • 做的网站怎么放到网上徐州市徐州市城乡建设局网站首页
  • 帝国cms做英文网站wordpress怎样设置留言板
  • 成都网站建设公司汇总饰品行业网站开发
  • 做网站 智域大连网上三维展馆网站是怎么做的
  • 公司备案号查询网站织梦网站优化怎么做
  • 网站建设了推广方案wordpress汉化主题下载地址
  • 想学做网站 应该学高端装修公司门头设计效果图
  • 自己做网站上市网站架构组成部分
  • 网站开发和app开发的区别wordpress 文章 时间段
  • wang域名的网站wordpress 提高速度
  • 网站开发视频是存储的上海计算机考试网页制作
  • 哈尔滨专业网站建设定制什么网站可以做注册任务
  • 门窗营销型网站优化一个网站需要多少钱
  • 建设网站可以先买域名吗酒店网站建设方案结束语
  • 北京网站建设公司新闻自学网官方网站入口
  • 有机生态农业网站模板网站分析软件
  • 网站设计流程是什么国内c2c平台有哪些
  • 网站后台生成html广西桂林天气
  • 重庆企业网站的推广工商网查询官网
  • 做杂志的模板下载网站有哪些邢台网站改版制作公司
  • 佛山市建设小学网站最新网站开发软件
  • 网站维护工作内容wordpress能用多个云存储么