Cesium roadmap

Cesium community,

At AGI, we are working on our roadmap for Cesium. We’re looking at many areas such as KML, CZML, 3D buildings, and tutorials. We’re interested in your feedback. What do you need most? In general, what do you think Cesium needs most to grow?

Also, AGI is considering doing funded development so that users can get the features they need prioritized and implemented. Is this something the community is interested in? Please reply here or email me separately if you prefer, pcozzi@agi.com.

Thanks,

Patrick

I vote CZML and CZML tutorials, then native KML/Collada/NetworkLink support.

I am using the czml-writer to port some KML shapes and am struggling with some of the shapes. I can create polygons, but the ellipse freezes Cesium.

With native KML support and I wouldn't have to chain anything.

* Cesium for data visualization tutorials
* support for cliustermaps and heatmaps (not necessarily in core, a
plugin is just as well)
* native KML (I think it is almost ready so this should be lowhanging fruit)
* maybe a bit of a stocktaking, what goes into core and what to
plugins. e.g. should kml be in core or as a plugin? (as a comparison:
Openlayers has it in core, leaflet as plugin) this way i could choose
what functionality I need and minimize the size vs. ease of use

Native KML is something that would require a decent amount of work I would think. Having to build a proper KML parser to accurately represent all the elements for Cesium would be a pain. I've made my own to do some things (lines, polygons, billboards) in PHP.

I would like to see updates to CZML and it's documentation. I also mentioned to Frank that one thing that would help me a lot is a quick and easy way to reference an object/primitive on the globe. So, say when I create a line, I give it a name/id. Then, instead of keeping the reference to that, I can just query the globe for that primitive or a set of primitives. Something similar to jQuery's selectors or some other way to easy find stuff (underscore.js's where or findWhere functions or filters?).

Thanks all for the feedback. KML and CZML are, of course, of interest to AGI.

David is right that KML is a decent amount of work, but it will also involve many improvements to the underlying graphics primitives, e.g., vector data on terrain, so not only do we get KML, but we get more graphics features that can be used via the Cesium API.

What KML features are most important to you? What other improvements, do you want to see in Cesium in, say, the next six months?

Thanks,

Patrick

I second this request.

"I also mentioned to Frank that one thing that would help me a lot is a quick and easy way to reference an object/primitive on the globe. So, say when I create a line, I give it a name/id. Then, instead of keeping the reference to that, I can just query the globe for that primitive or a set of primitives. Something similar to jQuery’s selectors or some other way to easy find stuff (underscore.js’s where or findWhere functions or filters?). "

For accessing a primitive by id, try these helper functions. You could expand getPrimitive() to have more features like jQuery selectors.

var viewer = new Cesium.Viewer(‘cesiumContainer’);

/////////////////////////

var primitives = viewer.scene.primitives;

var primitivesById = {};

function addPrimitive(primitive) {

if (!Cesium.defined(primitive)) {

throw new Cesium.DeveloperError(‘primitive is required.’);

}

var id = primitive.id;

if (!Cesium.defined(id)) {

throw new Cesium.DeveloperError(‘primitive.id is required so the primitive can be accessed by id.’);

}

if (Cesium.defined(primitivesById[id])) {

throw new Cesium.DeveloperError(‘A primitive with the same primitive.id already exists, remove it before adding a new one.’);

}

primitivesById[id] = primitive;

return primitives.add(primitive);

}

function getPrimitive(id) {

if (!Cesium.defined(id)) {

throw new Cesium.DeveloperError(‘id is required.’);

}

// Will return undefined if the id does not exist

return primitivesById[id];

}

function removePrimitive(id) {

if (!Cesium.defined(id)) {

return false;

}

var removed = primitives.remove(primitivesById[id]);

if (removed) {

primitivesById[id] = undefined;

}

return removed;

}

/////////////////////////

addPrimitive(new Cesium.EllipsoidPrimitive({

center : Cesium.Cartesian3.fromDegrees(-75.0, 40.0, 500000.0),

radii : new Cesium.Cartesian3(1.0, 1.0, 1.0),

id : ‘example id’

}));

getPrimitive(‘example id’).radii = new Cesium.Cartesian3(500000.0, 500000.0, 500000.0);

// removePrimitive(‘example id’);

Patrick

Any other feedback? So far, CZML and KML is at the top of everyone’s list.

Thanks,

Patrick

For us definitely better support of 3D buildings is on our wish list,
that is streaming of very large textured 3D object data sets

cheers,

Arne

Arne,

Do you have any specific use cases or data to share?

Thanks,

Patrick

Yes,
I can provide you with a complete textured city model, which we would be happy to see in Cesium. I will prepare the data as KMZ/COLLADA chunks.
Do you have an FTP Server we can use for uploading?
Please send credentials to my email at
aschilling@virtualcitysystems.de

best regards,
Arne

I’d like to see Cesium have two things:

  1. An interface for creating customized map projections, like we can use ImageryProvider to create our own imagery providers.

  2. Support for non-spherical planets, such as Saturn, and moons. This could really help us display planetary data.

在 2014年8月27日星期三UTC-7上午11时51分40秒,Patrick Cozzi写道:

Hi Patrick,
An improvement in performance and visual quality would be great, especially with regard to shadow maps and shadows quality in general.
best ragards
Martin