Path visualization...

Since it’s been a hot topic lately, I decided to start working on path/route/orbit visualization as the next major feature for Cesium and CZML. Jonah’s initial prototype for visualizing tracks and waypoints in a specified time range has some great ideas, but for my initial work, I’ll only be touching on the path visualization aspect. In order to help flesh out my thoughts and get feedback I’ve done a write-up on our week here: CZML History Visualization. Please let me know what you think, particularly if you have any additional ideas on sampling strategies or perhaps technical papers than have been written on the subject. This effort will include both adding support to czml-writer to add path graphics schema and adding new visualizers to Cesium itself.

Thanks,

Matt

Matt,

Thanks for writing this up. It looks good. Here are a few comments from the rendering perspective.

  • As you suggest, initially we can just build on PolylineCollection and Polyline. If/when we need more performance we can write custom vertex buffer management - like a batch version of the Path primitive in Insight3D - but I wouldn’t waste our time in the initial pull request. This would also help us efficiently keep a moving point on the path so it exactly matches a billboard, label, etc. moving along the path as you mention in (3).
  • The JSON schema for polylines and paths include color, outlineColor, and outlineWidth. We plan to replace these with a Polyline material, which could be a Color material (no outline), an OutlineColor material, etc. We need to balance this work with the data-driven renderer, but I expect we’ll do it in September. It’s OK to keep the schema as-is for now; this is just a heads up in case we want to change it later.
  • Beyond per-point color - as you mention - and standard materials, we should compile a list of worthwhile visual effects to consider past the initial pull request. For example, we can fade lots of properties based on it’s lead/trail time: alpha, glow, width, etc.
  • “View based bisection” is called tessellation in graphics. In OpenGL 4, there is a tessellation shader that would allow us to do this on the GPU. In OpenGL ES 3.0 - which will influence WebGL 2.0 - we could probably also do it on the GPU with multiple passes and transform feedback. Currently, we would have to do this on the CPU and update the vertex buffer. We can probably do this with a tree and incremental buffer updates, but it is going to be some work to make it fast in the general case (in particular - removing detail, not adding it). Another way to look at this, is it is the opposite of level-of-detail. We are interested - but in no rush - to implement LOD for polylines using Douglas-Peucker reduction. Perhaps some of these ideas can be applied. Anyway, I agree that this can be a separate pull request, maybe even down the road.

Feel free to update the wiki with these notes as you see fit.

Regards,

Patrick

Thanks Patrick; I'll definitely update the wiki with the extra
information. I also had an offline conversation with Kevin Ring that
will probably result in some edits on the schema side as well.

Thanks Patrick; I’ll definitely update the wiki with the extra

information. I also had an offline conversation with Kevin Ring that

will probably result in some edits on the schema side as well.

Matt,

Thanks for writing this up. It looks good. Here are a few comments from

the rendering perspective.

As you suggest, initially we can just build on PolylineCollection and

Polyline. If/when we need more performance we can write custom vertex

buffer management - like a batch version of the Path primitive in Insight3D

  • but I wouldn’t waste our time in the initial pull request. This would

also help us efficiently keep a moving point on the path so it exactly

matches a billboard, label, etc. moving along the path as you mention in

(3).

The JSON schema for polylines and paths include color, outlineColor, and

outlineWidth. We plan to replace these with a Polyline material, which

could be a Color material (no outline), an OutlineColor material, etc. We

need to balance this work with the data-driven renderer, but I expect we’ll

do it in September. It’s OK to keep the schema as-is for now; this is just

a heads up in case we want to change it later.

Beyond per-point color - as you mention - and standard materials, we should

compile a list of worthwhile visual effects to consider past the initial

pull request. For example, we can fade lots of properties based on it’s

lead/trail time: alpha, glow, width, etc.

“View based bisection” is called tessellation in graphics. In OpenGL 4,

there is a tessellation shader that would allow us to do this on the GPU.

In OpenGL ES 3.0 - which will influence WebGL 2.0 - we could probably also

do it on the GPU with multiple passes and transform feedback. Currently, we

would have to do this on the CPU and update the vertex buffer. We can

probably do this with a tree and incremental buffer updates, but it is going

to be some work to make it fast in the general case (in particular -

removing detail, not adding it). Another way to look at this, is it is the

opposite of level-of-detail. We are interested - but in no rush - to

implement LOD for polylines using Douglas-Peucker reduction. Perhaps some

of these ideas can be applied. Anyway, I agree that this can be a separate

pull request, maybe even down the road.

Feel free to update the wiki with these notes as you see fit.

Regards,

Patrick

Since it’s been a hot topic lately, I decided to start working on

path/route/orbit visualization as the next major feature for Cesium and

CZML. Jonah’s initial prototype for visualizing tracks and waypoints in a

specified time range has some great ideas, but for my initial work, I’ll

only be touching on the path visualization aspect. In order to help flesh

out my thoughts and get feedback I’ve done a write-up on our week here: CZML

History Visualization. Please let me know what you think, particularly if

you have any additional ideas on sampling strategies or perhaps technical

papers than have been written on the subject. This effort will include both

adding support to czml-writer to add path graphics schema and adding new

visualizers to Cesium itself.

Thanks,

Matt

You received this message because you are subscribed to the Google Groups

“cesium-dev” group.

To view this discussion on the web visit

https://groups.google.com/d/msg/cesium-dev/-/H54rXWukS88J.

To post to this group, send email to cesiu...@googlegroups.com.

To unsubscribe from this group, send email to

cesium-dev+...@googlegroups.com.

For more options, visit this group at

http://groups.google.com/group/cesium-dev?hl=en.

www.seas.upenn.edu/~pcozzi/

You received this message because you are subscribed to the Google Groups

“cesium-dev” group.

To post to this group, send email to cesiu...@googlegroups.com.

To unsubscribe from this group, send email to

cesium-dev+...@googlegroups.com.

For more options, visit this group at

http://groups.google.com/group/cesium-dev?hl=en.

Looks good Matt. Hopefully the work I did sparked some ideas at least.

I forgot to mention that it is going to be awesome to have orbits for 3D, Columbus view, and 2D transitions.

Patrick