【瑞模网】cesium城市建筑颜色渲染以及泛光渐变效果

Cesium3Dtilesets 使用customShader的解读以及泛光效果示例 光带原理在旋转弹跳四棱锥这篇文章里早已经阐述过,但还是有不少靓仔靓女可能会感到疑惑,在3Dtilesets里怎么使用?为啥我在网上看到的为数不多的代码示例我看不懂?是由于没理解透彻导致的。借此机会,提供一个小示例,从头到尾的应用一下。 ... 阅读详情

1、cesium加载城市建筑模型,3DTiles格式,如果设置基本颜色渲染很简单,只需要根据建筑物的属性进行颜色设置即可,cesium沙盒也有示例,代码如下:

 // 设置建筑物的样式
  var heightStyle = new Cesium.Cesium3DTileStyle({
    color: {
      conditions: [
      ['${floor} >= 30', 'rgba(45,0,75,0.5)'],
      ['${floor} >= 20', 'rgb(102,71,151)'],
      ['${floor} >= 15', 'rgb(170,162,204)'],
      ['${floor} >= 10', 'rgb(224,226,238)'],
      ['${floor} >= 8', 'rgb(252,230,200)'],
      ['${floor} >= 5', 'rgb(248,176,87)'],
      ['${floor} >= 1', 'rgb(198,106,11)']
      ]
      conditions: value
    }

效果:

2、cesium给建筑物设置类似泛光效果,可以在暗色地图突出显示建筑,这种光效看起来也蛮不错的,不过需要用到着色器(Shader)语言,根据别人写的着色器代码修改了一下,符合自己的使用,根据不同建筑物高度设置是否需要泛光,以及是否需要设置渐变色,这些简单的设置都可以在代码自行设置。不过着色器语言了解不多,以后慢慢在学习,核心代码如下:

// 传入3DTileS对象
setLight (tiles) {
      const shader = `
            varying vec3 v_positionEC;
             void main(void){
               vec4 position = czm_inverseModelView * vec4(v_positionEC,1); // 位置
               float glowRange = 100.0; // 光环的移动范围(高度)
               gl_FragColor = vec4(0.0, 0.3, 0.8, 0.8); // 颜色1
              //  gl_FragColor = vec4(220.0, 0.3, 0.8, 0.8); // 颜色2
               // 低于10米的楼不显示渐变色
                if(position.z < 10.0) {
                 gl_FragColor *= vec4(vec3(position.z / 10.0 * 2.0), 1.0);
               }else{
                 gl_FragColor *= vec4(vec3(position.z / 10.0), 0.8); // 渐变
               }
               // 设置动态光环
               float time = fract(czm_frameNumber / 36.0);
               time = abs(time - 0.5) * 3.0;
               float diff = step(0.005, abs( clamp(position.z / glowRange, 0.0, 1.0) - time));
               gl_FragColor.rgb += gl_FragColor.rgb * (1.0 - diff);
             }
             `
      tiles.tileVisible.addEventListener(function (tile) {
        const content = tile.content
        const featuresLength = content.featuresLength
        let feature
        for (var i = 0; i < featuresLength; i += 2) {
          feature = content.getFeature(i)
          const _model = feature.content._model
          _model._shouldRegenerateShaders = true
          Object.getOwnPropertyNames(_model._sourcePrograms).forEach(function (j) {
            const _modelSourceP = _model._sourcePrograms[0]
            _model._rendererResources.sourceShaders[_modelSourceP.fragmentShader] = shader
            const _modelSourceP1 = _model._sourcePrograms[1]
            _model._rendererResources.sourceShaders[_modelSourceP1.fragmentShader] = shader
          })
          _model._shouldRegenerateShaders = true
        }
      })
    }

效果:

cesium编程使用渐变纹理 推荐:将加入你的3D开发工具链。 阅读详情

相关推荐

cesium 旋转弹跳四棱锥(光带扫描)(动态泛光效果)

前言:本文主要分以下几个部分阐述功能的核心实现。 1、 四棱锥的生成 2、物体的平移(也就是弹跳,本质上来说就是控制物体的渲染位置) 3、物体的绕自身中心轴旋转 4、Cesium drawCommand下的纹理贴图。 5、光带扫描(也有人叫动态泛光,这种效果在啥子智慧城市出现的比较多) 静态效果图 四棱锥的生成 上图可知, 四个边缘上的点是同一Y值,拉高中心点的y值或者减少 中心点的y值就可以形成一...

q1025387665a的博客 7430

从沙盒开始学习Cesium(持续更新)

1、设置Cesium3DTileStyle:通过3dTileset一些属性,编写条件使3dTileset变色 沙盒:https://sandcastle.cesium.com/?src=3D%20Tiles%20Feature%20Styling.html 一些属性写法需要参考3D Tiles Styling language文档 扩展知识:vector向量 向量类型 vecn 包含n个float分量的默认向量; bvecn 包含n个bool分量的向量; ivecn 包含n个int分量的.

qq_36802917的博客 6861

Cesium实现渐变面

使用着色器,通过纹理坐标和其他参数计算出材质的颜色和透明度。通过给定的颜色、漫反射强度和透明度,计算出最终的反射颜色和透明度,并且根据给定的中心点位置和当前像素的纹理坐标,计算出距离中心的距离用来做透明度的参考值,然后计算得到的颜色加载到对应的材质上。

qq_43474235的博客 2296

CesiumJS 沙盒

通过CesiumJS 沙盒快速测试CesiumJS的一些功能,免去安装开发环境的困恼。

GIS探索之路 1251

cesium城市建筑物光效(cesium篇.23)

听老人家说:多看美女会长寿 地图之家总目录(建议先查看该内容) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <head> <meta charset="UTF-8"/> <script src="Build/CesiumUnminified/Cesium.js"></script> <link r

地图之家 4881

Cesium实现建筑物泛光特效,使用自定义shader实现,含全部

从Cesium1.87以后的版本,提供了方便的自定义shader的接口,从而不用修改源码,就可以方便的实现很多自定义的特效,这对Cesium的从业人员来说是一个极大的好消息。

liyan_gis的专栏 2158

Cesium 沙盒 sandcastle 开启 显示 development 目录下的 开发模式的 示例

【代码】Cesium 沙盒 sandcastle 开启 显示 development 目录下的 开发模式的 示例。

a571574085的博客 1715

Cesium--3dtileset建筑渐变加动态线条

Cesium不改源码,tileset建筑渐变加动态线条

Cesium中给实体添加渐变色

这个实体的材质,我们给一个canvas,并且在canvas中设置渐变颜色。

webMinStudent的博客 1070

Cesium实现建筑物泛光特效,使用自定义shader实现源码

很多Cesium的特效都是非常绚丽的,最近看到的是蓝色的炫光特效,非常的好看,研究了一下原来是通过自定义shader实现的,具体的可执行源码,直接在Cesium官方的沙盒里就能看到效果,需要的拿去吧,如果有问题可以私信我。

Cesium实现建筑物轮廓三维模型泛光特效源码

这个效果是很多的小伙伴想要达到的,现在源代码整理好了,需要的可以下载了,具体有什么问题可以私信我

cesium 多边形渐变颜色

方式一:用一张颜色渐变的图片作为材质,结合color属性,可设置多边形的颜色,达到渐变效果。方式二:如果没有图片,可用canvas实现,此方式控制颜色比较灵活,可以设置颜色区间以及方向等。

AllBluefm的专栏 2379

稳压二极管选型指南:关键参数与电路稳定性优化

本文深入解析了稳压二极管在电路设计中的核心作用与选型要点。文章详细阐述了稳定电压、动态电阻、额定功耗等关键参数对电路稳定性的影响,并结合实战案例,提供了从需求分析到参数验证的系统化选型流程与优化策略,帮助工程师避免常见设计陷阱,实现电路稳定性优化。

weixin_29196891的博客 686

cesium沙盒例子(HeadingPitchRoll) 代码详细注释

cesium 自带的沙盒里面有很多的例子供大家学习,其中的例子HeadingPitchRoll 是一个可以使用键盘按键实时控制飞机飞行的例子,功能相当有用,如图所示;这里贴上我对于示例代码的注释,如有错误还请指正,有疑问欢迎在评论区提出。

weixin_43812586的博客 737

vcs中systemverilog和c/c++联合仿真

前言 systemverilog中,可以通过DPI、PLI来与外部其它语言的程序进行交互。PLI又分为三类,TF、ACC和VPI,可以认为是PLI技术的三代演进: 其中VPI(PLI3.0)是TF/ACC的一个超集,目前使用的PLI基本上都是VPI。 与PLI技术相独立的另一个技术就是DPI,DPI技术简化了systemverilog与foreign language的交互步骤,对于开发者相对友好,所以使用相对广泛一些。 本文不对DPI中程序调用/数据交互展开讨论(这部分可以参考绿皮书..

kevindas的博客 1万+

Mann-Kendall检验全解析:从原理到11种变体及Python实现

本文全面解析Mann-Kendall检验,从基础原理到应对自相关、季节性等复杂数据的11种关键变体,如Hamed-Rao修正、季节性MK和趋势自由预白化(TFPW)。详细阐述各方法的适用场景与数学原理,并提供完整的Python实战代码,帮助研究者针对不同数据特性选择最稳健的趋势分析方法。

weixin_29050271的博客 458

Cesium 点选3DTiles泛光特效

Cesium 点选3DTiles泛光特效

北京-giser的博客 858

Java 实现 MP3 音频合并工具类:摆脱 FFmpeg,高效低 CPU 的纯本地方案【需求已解决】

本方案充分发挥了 Java 音频 SPI 的潜力,实现了轻量、跨平台、低 CPU 消耗的 MP3 音频合并工具类。 对于希望在服务器或桌面应用中集成音频处理功能的开发者而言,这无疑是一个可行且优雅的解决方案。

一键难忘的博客 543

Cesium中根据属性值(如降水量)创建渐变色的图层

请注意,上述代码仅提供了一个基本示例,实际应用中你可能需要根据降水量的具体范围和需求来更精细地控制颜色渐变。Cesium没有直接提供像Mapbox那样的interpolate表达式来定义颜色分级,因此你可能需要手动编写逻辑来实现更复杂的颜色渐变效果。对于更高级的需求,你也可以考虑使用Cesium的CustomShader来实现完全自定义的着色效果。:遍历加载的GeoJSON数据中的每个多边形实体,并根据其属性值(如precipitation)设置相应的颜色。// 加载GeoJSON数据。

qq_39917149的博客 1039

2021.02.23丨Virsorter2安装使用及答疑

最近项目比较多,又在学英语,写文章的时间少了很多。最近接到一个病毒组装的项目。用之前组装工具(ABYSS、SPAdes)都没有能够组装较为完整的scafford,今天介绍一款专门用于组装病毒的工具——Virsorter。 Virsorter最早版本发布于2015年,目前已经有了第二个版本。主要用于病毒的组装的注释。详细情况可以查看文章:https://peerj.com/articles/985/ 安装流程 安装文档: https://github.com/jiarong/VirSorter2/b

4835

基于STM32设计的心率脉搏测量仪(项目资料ID:9)

本设计基于STM32F103单片机开发了一款便携式心率脉搏测量仪,通过光电传感器采集脉搏信号,经放大(约1200倍)、滤波(低通及四阶低通滤波)、比较及偏置电压调理后,由STM32进行ADC采样与数据处理。硬件采用Altium Designer设计,包含信号调理电路(限定心率范围43.4-800次/分钟)及电源管理模块;软件基于STM32CubeMX开发,利用队列存储和时间间隔平均算法优化精度,实现多终端显示(OLED实时心率/动画、MATLAB波形分析、蓝牙传输至手机)。系统支持自动启停(检测脉搏启

以培养嵌入式工程师为己任 1万+

Cesium实现UnrealBloom泛光效果

泛光(Bloom)是一种常用的后期处理特效,游戏中更是随处可见,这里直接上我们的效果图。 图1.UnrealBloom泛光效果 Cesium内置的bloom后期处理,是对全屏进行处理,还不能只针对选中的特定对象添加泛光效果,通过修改shader代码也可以实现。不过今天我们不做改进,而是引进three.js的UnrealBloomPass,在Cesium中实现一个新的泛光效果。 从UnrealBloomPass这个名字看,大概是说从Unreal Engine那里学来的吧,另外也是在名称上区别于辉..

三维网格 5029

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

m0_51579041的博客 1万+

[cesium] 基于Cesium的动态泛光效果示例

抽空将之前的功能单独抽出来写成一个模块,方便单独调用,配合单个模块写了一些示例 可以兼容各个基于cesium底层库的三方框架,引入即可。 效果 动态泛光墙 泛光面 城市泛光线 其他示例 三维效果和功能 在线地址:传送门 ...

啊嘞嘞的博客 2万+

黑猫带你学UFS协议第12篇:UFS标志(Flags)和属性(Atrributes)详解

UFS中的标志其实就是一些开关,布尔型,非0即1,打开或者关闭。这些标志可以用来使能或者禁止UFS设备的一些功能、模式或者状态。 简单来说,flag和attribute、discriptor一样,都是ufs的寄存器罢了。只不过spec将这些寄存器分类了,分成这三种大的类型了而已。 标志可以被清除、复位、设置、触发、读。 主机也是通过设备管理器的Query Request UPIU来读取或者写标志。

黑猫奥利奥的博客 2083

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Cesium 点选Entity泛光(UnrealBloom泛光效果)

Cesium 点选Entity泛光

北京-giser的博客 1248

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 【瑞模网】Cesium 渐变色柱子
下一篇: vue实战开发019:Echarts修改各种标签的字体大小
瑞模网
博客等级 码龄4年 8粉丝 73原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值