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、颜色、矩阵,后期想改就改,灵活又高效。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1005368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言实现堆排序(附带源码)

一、项目背景详细介绍排序算法是数据结构与算法的基础内容,在众多排序算法中,堆排序(Heap Sort) 以其稳定的时间复杂度、良好的工程可用性与结构化的逻辑,成为工业界和学术界广泛使用的排序技术。堆排序基于 完全二叉树…

SolidWorks异形孔向导功能介绍

SolidWorks 的 异形孔向导(Hole Wizard)​ 是其最核心的特征工具之一,主要用于快速创建符合国际标准(如 ISO、ANSI、GB 等)的标准化孔特征(如螺纹孔、沉头孔、锥孔、阶梯孔等)。它通过参数化设计…

SolidWorks异形孔的类型介绍

一、核心理解:“异形孔向导”是什么它不是一个简单的“画孔”工具,而是一个基于标准的参数化特征生成器。其核心价值在于:标准化:内置了ISO、GB(国标)、ANSI、DIN、JIS等多种主流标准,确保设计的…

SQL分析函数`ROW_NUMBER`的兼容性与深度解析

🔍 SQL分析函数 ROW_NUMBER() 深度解析 ROW_NUMBER() 是一个标准的 窗口函数 (Window Function),它为分区(partition)或结果集中的每一行分配一个唯一的、连续的序号,从1开始。 1. 语法结构 其基本语法与其他窗口函数类…

Day 11 常见的调参方式

浙大疏锦行 学习目标 三种主流调参方法: 网格搜索(GridSearchCV):穷举式搜索 穷举所有参数组合、能找到最优解、计算量大,维度灾难、 参数空间小,计算资源充足 随机搜索(RandomizedSearchCV…

Elasticsearch 的倒排索引原理

🕵️‍♀️ Elasticsearch 的核心:倒排索引原理 Elasticsearch 是基于 Apache Lucene 库构建的,而倒排索引正是 Lucene 的基石。它彻底颠覆了传统数据库按行存储和查找的模式,实现了基于内容的快速定位。 1. 什么是倒排索引&#…

Elasticsearch vs MySQL:查询语法与设计哲学对比

🔍 Elasticsearch vs. MySQL:查询语法与设计哲学对比 在现代数据存储和检索领域,MySQL(或其他关系型数据库,RDBMS)和 Elasticsearch (ES) 是两种截然不同的强大工具。MySQL 擅长结构化数据的事务处理和复杂…

《安卓逆向这档事》demo2----正己大佬

demo2 第二关 文本定位 首先,观察界面,查看文字,任务要求是获取硬币并一键三连。主要的两个分别是 获取硬币​ 和 一键三连​,回到 MT 管理器,搜索(PS:MT 管理器如何提取安装包定位位置就不细…

一口气看懂 Android 操作系统架构 ——从“高层 App”一路挖到 “内核深处”

文章摘要 本文用通俗易懂的方式解析Android操作系统架构,将其形象比喻为一栋四层大楼:顶层是应用层(各类App);中间两层是应用框架层(系统服务)和系统库运行时(基础设施)&…

双 Token 机制解析:提升用户体验的安全认证方案

双 Token 机制解析:提升用户体验的安全认证方案 在现代 Web 与移动应用中,“安全”与“用户体验”往往存在天然冲突: Token 有效期太短 → 用户频繁掉线、体验差 Token 有效期太长 → 安全风险高,容易被盗用 双 Token(Access Token + Refresh Token)机制正是为了解决这…

ViGEmBus虚拟游戏控制器驱动终极指南:从零到精通的完整教程

ViGEmBus虚拟游戏控制器驱动终极指南:从零到精通的完整教程 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 你是否曾经遇到过这样的问题:新买的第三方游戏手柄无法在PC游戏中正常使用?或者想在远…

Kubernetes Master 节点核心组件全景解析

Kubernetes Master 节点核心组件全景解析 引言 在 Kubernetes 集群中,Master 节点是“大脑”和“控制中心”,负责整个集群的管理、调度、监控与期望状态的维护。 相对而言,**工作节点(Node)**负责运行实际的应用容器。 Master 节点核心组件主要包括: kube-apiserver e…

SolidWorks倒角设计深度介绍

SolidWorks 作为主流的三维设计软件,其倒角(Chamfer)功能是机械设计中常用的细节处理工具,主要用于去除零件边缘的锐边、改善装配导向性、提升外观美感或满足加工工艺要求。以下从核心概念、类型详解、操作逻辑、高级应用、常见问…

从课堂例子到实战工具:用 C 语言结构体打造一个迷你学生信息管理系统

摘要 本文以课堂上“结构体变量的初始化和引用”为出发点,结合一个贴近实际的场景(小型学生信息管理器),讲解如何在 C 语言中初始化结构体变量、访问结构体成员,以及如何把这个基础用在一个有用的小程序里。文章用口语…

第十章 for循环

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

SolidWorks特征阵列类型及应用介绍

一、概述:什么是特征阵列特征阵列是通过对一个或多个已有特征进行复制,按照特定的规则(线性、圆周、沿曲线等)排列,从而生成一系列相同或变化的特征。其核心优势在于:效率:​ 一次性创建大量重复…

2025年大语言模型生态全景:从技术突破到行业落地的多元发展态势

2025年大语言模型生态全景:从技术突破到行业落地的多元发展态势 【免费下载链接】Hunyuan-7B-Instruct-0124 腾讯Hunyuan-7B-Instruct-0124是高性能中文7B大模型,支持256K长文本与GQA技术,推理采用vLLM后端(TRT-LLM即将开放&#…

实战Spring Security + JWT:打造坚不可摧的RESTful API

一、引言 在当今的 Web 开发领域,RESTful API 已成为构建分布式系统和微服务架构的关键技术之一,它以简洁、高效、易于理解和使用的特点,广泛应用于各种前后端分离项目、移动应用开发以及微服务架构中。但随着 API 的广泛应用,安全…

Python asyncio:解锁异步编程的魔法钥匙

一、引言:异步编程的奇妙世界在传统的同步编程中,程序就像一个按部就班的执行者,会顺序执行每一行代码,在遇到 I/O 操作(如文件读写、网络请求等)时,会老老实实等待该操作完成,才会继…

从课本到实战:用结构体指针写一个能真正用的学生信息管理器

摘要 本文围绕“结构体指针”的概念,把你给出的教材示例扩展成一个实用的小工具——简易学生信息管理器(命令行版)。通过这个例子,我会讲清楚: 为什么用结构体指针比直接使用结构体变量更灵活;如何用结构体…