news 2026/8/7 10:39:23

Cesium快速入门16:Primitive多个实体与颜色修改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cesium快速入门16:Primitive多个实体与颜色修改

上一节课,我们初步认识了 Cesium 的图元(Primitive),当时只放了一个几何体。
其实,一个 Primitive 可以同时塞进多个几何实例(GeometryInstance)
这样做的好处很明显:

  • 一次合并,一次绘制调用,性能更高;

  • 每个实例还能单独改颜色、显隐,灵活性不减。

今天就把“多实例”和“动态改色”两件事一次讲透。


一、一个图元,多个实例

需求:把“矩形”和“椭球”一起塞进同一个 Primitive,一次搞定。

  1. 先保留上节的矩形实例(instance)。

  2. 再新建一个椭球实例,给它的 radii、位置、颜色都安排上。

  3. 最后把两个实例用数组形式丢进 Primitive。

代码如下,每一步都写了注释,照着抄就能跑。

/* 1. 椭球几何实例:长半轴 5 km,短半轴 5 km,高 10 km */ const ellipsoidInstance = new Cesium.GeometryInstance({ geometry: new Cesium.EllipsoidGeometry({ radii: new Cesium.Cartesian3(5000.0, 5000.0, 10000.0), // 三轴半径 vertexFormat: Cesium.VertexFormat.POSITION_AND_NORMAL // 只要位置和法线,省内存 }), /* 2. 把椭球放到东经 114°、北纬 23.03883°、离地 5 km 的位置 */ modelMatrix: Cesium.Matrix4.multiplyByTranslation( Cesium.Transforms.eastNorthUpToFixedFrame( Cesium.Cartesian3.fromDegrees(114, 23.03883) ), new Cesium.Cartesian3(0.0, 0.0, 5000.0), new Cesium.Matrix4() ), id: 'ellipsoid', // 给实例起个名字,后面改色要用 attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor( Cesium.Color.RED) // 初始红色 } }); /* 3. 把两个实例一起塞进同一个图元 */ const rectPrimitive = new Cesium.Primitive({ geometryInstances: [instance, ellipsoidInstance], // 数组形式,想塞几个塞几个 appearance: appearance // 仍用之前的 PerInstanceColorAppearance }); /* 4. 加入场景 */ viewer.scene.primitives.add(rectPrimitive);

刷新页面,你会看到:

  • 绿色矩形——上一节留下的;

  • 红色椭球——刚加的;

  • 它们同属一个 Primitive,却保持各自颜色、各自位置。


二、运行中随时改颜色

想让椭球每 2 秒随机换个颜色?
只要抓住“实例属性”这把钥匙,一行代码就能改,不需要重新创建 Primitive。

套路分两步:

  1. getGeometryInstanceAttributes('id')拿到对应实例的属性包;

  2. 直接改属性包里的color,Cesium 下一帧就会自动生效。

/* 每 2 秒给椭球随机换一个半透明颜色 */ setInterval(() => { rectPrimitive .getGeometryInstanceAttributes('ellipsoid') // 通过 id 找到椭球 .color = Cesium.ColorGeometryInstanceAttribute.toValue( Cesium.Color.fromRandom({ alpha: 0.5 }) // 随机颜色,固定 0.5 透明度 ); }, 2000);

注意:

  • 改色只改“属性”,不动“几何”,所以性能开销极小。

  • 如果想改矩形颜色,同理给它也起个 id,再用同样套路即可。


三、小结

  • 一个 Primitive ≈ 一个“合并批次”,里面可放任意数量实例。

  • 实例各自带 id、颜色、矩阵,后期想改就改,灵活又高效。

  • 今天只演示了“改颜色”,其实改显隐、改矩阵、换材质也一样,套路都是“先拿属性包,再改字段”。

把这套组合拳吃透,后面做海量建筑、批量模型、动态高亮,就能既流畅又省事。

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

第十章 for循环

1.数学平均成绩 输入 第一行1个整数n,代表学生数量 第二行n个整数,代表每个同学的成绩 输出 成绩平均值样例 输入复制 3 90 100 90 输出复制 932.英语优等生 输入 第一行1个整数n,代表学生数量 第二行n个整数,代表每个同学的成绩 …

作者头像 李华
网站建设 2026/8/8 5:22:16

WebRTC 是什么?能做什么?(概览篇)

WebRTC 是什么?能做什么?(概览篇) 本文是 WebRTC 系列专栏的第一篇,旨在帮助读者建立对 WebRTC 的整体认知,了解其发展历程、核心能力、主要组件以及优势与局限。 目录 WebRTC 的发展历史WebRTC 能解决什么…

作者头像 李华
网站建设 2026/8/7 11:20:20

Dubbo学习(三):深入 Remoting

深入 Remoting:Dubbo 的“搬运工” —— 网络通信与线程模型 请关注公众号【碳硅化合物AI】 摘要 如果说 RPC 是 Dubbo 的大脑,那么 Remoting 就是 Dubbo 的四肢。它负责把 RPC 层生成的调用请求(Invocation)变成二进制流&…

作者头像 李华
网站建设 2026/8/7 15:11:46

AI设计新突破:QWEN溶图LoRA模型助力品牌视觉创作升级

AI设计新突破:QWEN溶图LoRA模型助力品牌视觉创作升级 【免费下载链接】Fusion_lora 项目地址: https://ai.gitcode.com/hf_mirrors/dx8152/Fusion_lora 在人工智能技术迅猛发展的当下,AI绘图领域正经历着前所未有的变革。各类创新模型层出不穷&a…

作者头像 李华
网站建设 2026/8/7 23:00:48

突破实时视频生成瓶颈:Krea Realtime 14B模型革新文本到视频技术

突破实时视频生成瓶颈:Krea Realtime 14B模型革新文本到视频技术 【免费下载链接】krea-realtime-video 项目地址: https://ai.gitcode.com/hf_mirrors/krea/krea-realtime-video 在人工智能驱动的内容创作领域,文本到视频生成技术正经历着从实验…

作者头像 李华
网站建设 2026/8/8 4:20:23

【项目实战】Vercel 是一个让你的网站“瞬间上线”的云平台。Vercel 现在确实是技术圈的“当红炸子鸡”,尤其是在个人博客和前端开发领域。

Vercel 现在确实是技术圈的“当红炸子鸡”,尤其是在个人博客和前端开发领域。简单来说,Vercel 是一个让你的网站“瞬间上线”的云平台。 传统的服务器 (阿里云/腾讯云) 就像是给你一块生肉和一套厨具。你想吃牛排,得自己切、自己腌、自己煎,还要负责洗碗(运维、配置环境、…

作者头像 李华