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

Cesium快速入门20:Primitive的外观设置Appearance

前面我们学会了用 Entity 换皮肤;今天轮到Primitive——自己捏几何体后,再给它穿什么样的“外衣”。
在 Cesium 里,这件外衣叫Appearance(外观)。
它决定“像素怎么画、用什么材质、要不要光照”等所有渲染细节。
上回我们图省事,用了PerInstanceColorAppearance,直接拿实例颜色当颜料。
其实官方还备了好几套“成衣”,下面挑最常用的 3 件挨个试穿。


一、PerInstanceColorAppearance:每个实例自带颜色

特点

  • 不额外设置材质,颜色从GeometryInstance.attributes.color里取;

  • 最快、最省,适合做“海量同色不同区”的批量绘制。
    (上节课已用过,这里不再贴代码)


二、EllipsoidSurfaceAppearance:专为“贴地”模型优化

假设你的几何体永远和地球椭球面平行(道路、地块、水域),就可以用它。
内部会预计算顶点属性,省内存、提性能,还能统一套一张材质。

/* 1. 先准备一张纯色材质(后续可换图片、法线、高光等) */ const material = new Cesium.Material.fromType('Color', { color: Cesium.Color.PURPLE.withAlpha(0.5) }); /* 2. 再创建“椭球表面外观” */ const ellipsoidAppearance = new Cesium.EllipsoidSurfaceAppearance({ material: material }); /* 3. 最后把外观塞给 Primitive(其余代码不变) */ const primitive = new Cesium.Primitive({ geometryInstances: [yourInstances], // 你的实例数组 appearance: ellipsoidAppearance });

效果与纯色PerInstanceColorAppearance看起来一样,但背后省了一次材质分支,大批量贴地矩形时帧率更稳。


三、MaterialAppearance:最通用的“基类”外观

不想受任何“贴地”限制,就用它——所有自定义材质的入口
同样一张纯色材质,写法几乎照抄:

const materialAppearance = new Cesium.MaterialAppearance({ material: Cesium.Material.fromType('Color', { color: Cesium.Color.RED.withAlpha(0.5) }) });

换图、换漫反射、换高光、后期自己写着色器,都靠这个口子。


四、Entity vs Primitive 材质小提醒

  • Entity 世界里,材质属性叫***MaterialProperty(带 Property)。

  • Primitive 世界里,材质类叫Material(不带 Property)。
    两者不要混用,否则运行时会毫不客气地抛异常。


五、Material 自带“布料”大全

Cesium.Material.fromType('xxx', {...})的 xxx 可选值包括但不限于:

  • Color —— 纯色

  • Image —— 贴图

  • DiffuseMap —— 漫反射贴图

  • SpecularMap —— 高光贴图

  • Checkerboard —— 棋盘格

  • Stripe —— 条纹

  • Grid —— 网格

  • PolylineArrow —— 箭头线(配合线几何体)

  • PolylineGlow —— 发光飞线
    ……

下节课我们挑几个常用类型,现场换图、换高光、换法线,看看怎么把 Primitive 玩出 Entity 做不出的高级感。


小结

  1. Primitive 想“穿外衣”→ 先选 Appearance(EllipsoidSurface / Material / PerInstanceColor)。

  2. 再在外衣里塞 Material(不是 MaterialProperty!)。

  3. 大批量贴地模型优先用 EllipsoidSurfaceAppearance,能省内存。

  4. 想自由发挥就用 MaterialAppearance,它是通往自定义着色器的必经之路。

http://www.jsqmd.com/news/84849/

相关文章:

  • Cesium快速入门19:Entity折线材质
  • 【Codeforces】【Div2】CF 2176
  • Lonsdor K518 PRO FCV Expert License Activation for BMW, MINI, Rolls-Royce Key Programming
  • 应用层复习总结
  • 构建下一代AI算力基石 CANN ops-transformer算子仓库的生态价值与设计哲学
  • STM32F103C8T6 + SI24R1实现2.4G通信
  • 昇腾Ascend C Add算子开发实战-从理论到代码的完整构建
  • AFE为何物
  • 实验实验实验实验。
  • 代码随想录算法训练营第三十三天:零钱兑换,完全平方数,单词拆分
  • 令人“悲哀”的 C# 游戏生态 —— 主流引擎支持现状与现实困境
  • 单车慢跑中的节奏建议
  • 工具分享:彻底解决Docker拉取慢/超时,解放双手!自动测速优选配置镜像源 代理切换脚本
  • CS配合CrossC2插件,实现MacOS/Linux上线
  • 1、掌握 Puppet 4:高效管理 IT 基础设施的秘诀
  • 无需运动恢复结构(SfM)的层级训练三维高斯溅射(3D Gaussian Splatting)
  • 2、初探Puppet清单编写
  • 3、编写首个Puppet清单指南
  • 前端工程师必看:AI+前端+A/B测试 实战指南(小白友好版)
  • 4、Puppet 入门:从基础使用到主从架构搭建
  • Notepad++紧急更新,且是两个版本,究竟修复了什么
  • 5、Puppet 主节点与代理节点:全流程解析与性能优化
  • 6、深入探究 Puppet:Facts、Types 与 Providers 详解
  • C51_HC-05蓝牙通信
  • 7、Puppet资源类型与模块:深入剖析与实践应用
  • 8、利用类和自定义类型模块化清单
  • 网络融合
  • 9、深入理解 Puppet 中的类、定义类型和模块
  • 10、Puppet 模块:结构、管理与实践指南
  • 智源Emu3.5震撼登场:AI首次实现物理世界统一认知,开启多模态交互新纪元