资源描述:
《Cesium原理篇:Batch》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Cesium原理篇:Batch通过之前的Material和Entity介绍,不知道你有没有发现,当我们需要添加一个rectangle时,有两种方式可供选择,我们可以直接添加到Scene的PrimitiveCollection,也可以构造一个Entity,添加到Viewer的EntityCollection中,代码如下:复制代码//直接构造Primitive,添加rectangle=scene.primitives.add(newCesium.Primitive({geometryInstances:newCesium.GeometryInstance({geometry:ne
2、wCesium.RectangleGeometry({rectangle:Cesium.Rectangle.fromDegrees(-120.0,20.0,-60.0,40.0),vertexFormat:Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT})}),appearance:newCesium.EllipsoidSurfaceAppearance({aboveGround:false})}));//间接构造一个Entity,Cesium内部将其转化为Primitiveviewer.entities.add({rectan
3、gle:{coordinates:Cesium.Rectangle.fromDegrees(-92.0,20.0,-86.0,27.0),outline:true,outlineColor:Cesium.Color.WHITE,outlineWidth:4,stRotation:Cesium.Math.toRadians(45),material:stripeMaterial}});复制代码两者有何不同,为什么还要提供Entity这种方式,绕了一大圈,最后照样是一个primitive。当然,有一个因素是后者调用简单,对用户友好。但还有一个重点是内部在把Entity转为Prim
4、itive的这条生产线上,会根据Entity的不同进行打组分类,好比快递的分拣线会将同一个目的地的包裹分到一类,然后用一个大的箱子打包送到该目的地,目的就是优化效率,充分利用显卡的并发能力。在Entity转为Primitive的过程中,GeometryInstance是其中的过渡类,以Rectangle为例,我们看看构造GeometryInstance的过程:复制代码RectangleGeometryUpdater.prototype.createFillGeometryInstance=function(time){if(this._materialPropertyinst
5、anceofColorMaterialProperty){varcurrentColor=Color.WHITE;if(defined(this._materialProperty.color)&&(this._materialProperty.color.isConstant
6、
7、isAvailable)){currentColor=this._materialProperty.color.getValue(time);}color=ColorGeometryInstanceAttribute.fromColor(currentColor);attributes={show:
8、show,color:color};}else{attributes={show:show};}returnnewGeometryInstance({id:entity,geometry:newRectangleGeometry(this._options),attributes:attributes});}复制代码首先,该材质_materialProperty就是构建Entity时传入的材质对象,attributes则用来标识该Geometry实例化的attribute属性,Cesium内部判断该材质是否为color类型,进而对应不同的实例化attribute。在其他Geo
9、metryUpdater方法中都是此逻辑,因此在材质的处理上,只对color进行了实例化的处理。这里留意一下appearance参数,可以看到主要对应perInstanceColorAppearanceType和materialAppearanceType两种,分别封装ColorMaterialProperty和其他MaterialProperty,这个在之前的Material中已经讲过。BatchCesium通过GeometryInstance作为标准,来达到物以类聚鸟以群分的结果,这个标准就是如上的