2026/2/13 20:13:35
网站建设
项目流程
网站中查看熊掌号怎么做的,非常酷的wordpress主题,中国建设培训网站查询系统,网站不更新前面我们学会了用 Entity 换皮肤#xff1b;今天轮到 Primitive——自己捏几何体后#xff0c;再给它穿什么样的“外衣”。
在 Cesium 里#xff0c;这件外衣叫 Appearance#xff08;外观#xff09;。
它决定“像素怎么画、用什么材质、要不要光照”等所有渲染细节。
上…前面我们学会了用 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 做不出的高级感。小结Primitive 想“穿外衣”→ 先选 AppearanceEllipsoidSurface / Material / PerInstanceColor。再在外衣里塞 Material不是 MaterialProperty。大批量贴地模型优先用 EllipsoidSurfaceAppearance能省内存。想自由发挥就用 MaterialAppearance它是通往自定义着色器的必经之路。