ndsev / erdblick

Mapviewer based on the mapget feature service and CesiumJS. 🛣️
11 stars 0 forks source link

Styling is Supported for All Mapget Geometry Types #33

Open josephbirkner opened 1 year ago

josephbirkner commented 1 year ago

Currently, erdblick only supports mapget line geometries and renders them as (white) hairlines. But mapget supports more geometric primitives and users also need more ways of how to represent them. This epic aims to covers all needed geometric primitives and basic ways of how they need to be represented. Have a look a the Geometries Sandcastle to get a better understanding what kind of different representations of points, lines and polygons are possible with CesiumJS. All modes and presentation styles have to be usable with the rule-based, declarative styling system of erdblick.

Common:

Points

Lines

Different kind of line representations, have a look at Polyline Sandcastle.

Polygons

Meshes

MisterGC commented 1 year ago

Let's split these up, support of each geometry primitive adds user value (and need some special logic).

Some additional remarks:

Lines: Let's intro a line support epic - Depending on the use case different basic line representations may be needed - especially one aspect we should keep in mind - having flat lines (in the x-z plane) with a world-unit (or pixel) width or having representation with a volume (like in the Polyline volume sandcastle) which may help users when navigating in a scene with 3d paths/lines. In addition there are aspects like dashing (#35) or arrows (see Polyline sandcastle)

Polygons: For the polygon support we should consider earcut.hpp at least as an entry point.

Meshes: In the title you mentioned meshes but they are not part of the list - we should also then define what kind of default styling/shading/lighting we want to use (e.g. using something like this style is imo better than just using some like this, but maybe we could activate the hover behavior)

josephbirkner commented 1 year ago

Investigation Regarding Usage Of Cesium Primitive Instead Of Custom Shaders

Check this tutorial for an introduction into the matter.

For ground-based (sticking to terrain) geometry:

In the future, these are also inserted into the PrimitiveCollection:

Cesium Support For Erdblick Style Options

The above Cesium Primitive concepts support all planned Feature styling aspects, except...

Note: Textured polylines/corridors would look equivalent to the legacy NDS mapviewer.