news 2026/4/18 13:04:14

Cesium快速入门24:Appearance编写着色器修改外观

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cesium快速入门24:Appearance编写着色器修改外观

上一节课,我们只在Material里写着色器;今天把“魔爪”伸到Appearance——直接重写片元着色器,一样能让像素跳舞,而且套路更简单、更暴力。


一、Appearance 也能“手写着色器”

EllipsoidSurfaceAppearance本质上就是“官方帮你拼好”的顶点 + 片元代码。
只要你在构造参数里塞入自己的fragmentShaderSource,Cesium 会原封不动采用,不会再帮你插材质函数。
想纯色、想渐变、想动画,全由你一句话决定。


二、最小 DEMO:把 UV 当颜色

下面代码里,我们把v_st(也就是 UV)直接画成红绿渐变,连材质都不引:

const ellipsoidAppearance = new Cesium.EllipsoidSurfaceAppearance({ // material: rawMaterial, // 注释掉,完全不用 fragmentShaderSource: ` varying vec3 v_positionMC; varying vec3 v_positionEC; varying vec2 v_st; // 官方帮你传进来的 UV void main() { // 把 UV 的 x、y 当颜色,再补一个 1.0 给蓝色通道 gl_FragColor = vec4(v_st, 1.0, 1.0); } ` });

运行效果:矩形瞬间变成“红→绿”色卡,证明我们已完全接管像素。


三、想动画?先解决“怎么传 uniform”

在 Material 里写uniforms很顺手,可在 Appearance 里写fragmentShaderSource时,构造函数里并没有 uniforms 字段
正确姿势:

  1. 先 new 出对象;

  2. 再动态挂uniforms属性;

  3. 外部用 GSAP / requestAnimationFrame 随便改。

代码示范:

/* 1. new 对象 */ const ellipsoidAppearance = new Cesium.EllipsoidSurfaceAppearance({ fragmentShaderSource: ` varying vec2 v_st; uniform float uTime; // 外部传进来的时间 void main() { float strength = sin(v_st.x * 10.0 + uTime) * 0.5 + 0.5; // 0~1 呼吸 gl_FragColor = vec4(strength, 0.0, 0.0, 1.0); } ` }); /* 2. 事后挂 uniform 初始值 */ ellipsoidAppearance.uniforms = { uTime: 0.0 }; /* 3. GSAP 让它永远动 */ gsap.to(ellipsoidAppearance.uniforms, { uTime: 1.0, // 从 0 跑到 1 duration: 2.0, // 单程两秒 repeat: -1, // 无限循环 ease: 'linear' });

运行效果:红色条纹左右“呼吸”移动,像一条缓慢扫描的激光带。


四、两种“写着色器”路线对比

路线入口传 uniforms适合场景
Material + Fabricsource字段直接在 fabric 对象里写需要复用、多材质组合
Appearance 手写fragmentShaderSource先 new 再挂 uniforms快速特效、单个 Primitive 即用即扔

两条路都能改像素,谁方便用谁。


五、小结与预告

  • Appearance 可以直接fragmentShaderSource = '...',完全不用 Material。

  • uniforms 要“事后挂”,再用 GSAP 或帧循环去改。

  • 顶点着色器传来的v_stv_positionEC等 varying 变量,想怎么用就怎么用。

下节课,我们在这块“会呼吸的红布”上加圆遮罩、调透明度,一条完整的“雷达扫描圈”就成型了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:57:03

最佳入睡时间计算器,自己开发的一个小工具

网站介绍 最近开发了一个工具,用于计算最佳入睡时间。并发布在了我的网站:最佳入睡时间计算器 - war的小站 。 该工具主要功能就是按照你想起床的时间,并根据睡眠时长推荐最佳入睡时间。 为了制作这个网站,我还去查了卫健委的相…

作者头像 李华
网站建设 2026/4/18 2:28:40

语音转文字再回复:LobeChat全流程语音交互演示

语音转文字再回复:LobeChat全流程语音交互深度解析 在驾驶途中想查询天气,在厨房忙着切菜时需要确认菜谱,或是为家中长辈搭建一个“会说话”的智能助手——这些场景都有一个共同点:用户无法或不愿打字。而真正理想的AI交互&#…

作者头像 李华
网站建设 2026/4/18 3:57:49

【科研绘图系列】R语言绘制多种类型图形(heatmap boxplot linechart)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍 加载R包 数据下载 导入数据 数据预处理 画图 其他画图 总结 系统信息 介绍 这幅图的故事从“日本儿童 RSV 肺炎”开始。RSV(呼吸道合胞病毒)是冬春时节把婴儿送进医院的头号元…

作者头像 李华
网站建设 2026/4/18 7:41:28

Podcast Bulk Downloader:让你的播客收藏管理更高效

想要一次性下载整个播客系列的所有剧集?Podcast Bulk Downloader正是你需要的解决方案!这款基于Python开发的播客批量下载工具,无论是通过图形界面还是命令行操作,都能让你轻松获取心仪播客的完整内容库。 【免费下载链接】Podcas…

作者头像 李华
网站建设 2026/4/18 7:27:37

节能商业照明:核心优势、关键要素及光学性能分析

现代商业空间里,照明不只是提供基础亮度的工具,更是塑造环境氛围的事物,是突出商品价值的事物,是影响消费者心理体验的关键因素。全球节能减排政策深入推进,LED技术持续成熟,节能商业照明成了市场主流&…

作者头像 李华