项目需求中需要实现椭圆椎体的几何体,但经过大量资料和api查阅,并未找到对应的解决办法,故在cesimu引擎中小试牛刀,自己实现了一个geo几何体来解决此问题
效果展示
实现代码
因为多种原因,暂不公布,但核心方式还是通过拆分椭圆为三角形的方式实现封装了Cesium.EllipseCylinderGeometry 类进行调用,下图为核心思路
调用实现
var geometryInstance=new Cesium.GeometryInstance({
//Cesium.EllipseCylinderGeometry 此类官方项目未提供,需要自行封装
geometry: new Cesium.EllipseCylinderGeometry({
center: Cesium.Cartesian3.fromDegrees(120.0, 30.0, 200),
length: 400000,
topSemiMajorAxis: 2000.0,
topSemiMinorAxis: 800.0,
bottomSemiMajorAxis: 200000.0,
bottomSemiMinorAxis: 80000.0,
vertexFormat: Cesium.VertexFormat.POSITION_AND_ST,
}),
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(
Cesium.Color.BLUE.withAlpha(0.5)
),
},
modelMatrix :redCone.computeModelMatrix(viewer.clock.currentTime)
})
var ellipseCylinderGeometry= viewer.scene.primitives.add(
new Cesium.Primitive({
geometryInstances: geometryInstance,
appearance: new Cesium.PerInstanceColorAppearance(),
asynchronous: true,
})
);