Open josephbirkner opened 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)
Primitive:
Equals GeometryInstances + Appearance. Can hold ONE OF ...
PerInstanceColorAppearance
MaterialAppearance
PolylineColorAppearance
PolylineMaterialAppearance
PrimitiveCollection:
Used to bundle all primitives for one tile layer.Check this tutorial for an introduction into the matter.
For ground-based (sticking to terrain) geometry:
GroundPrimitive:
To represent anything (other than polylines) that is glued to the ground.
PerInstanceColorAppearance
MaterialAppearance
GroundPolylinePrimitive:
To represent scaling polylines on the ground.
PolylineColorAppearance
PolylineMaterialAppearance
In the future, these are also inserted into the PrimitiveCollection
:
BillboardCollection:
To represent pins/points with icons.LabelCollection:
To represent text labels.PointPrimitiveCollection:
To represent untextured points.The above Cesium Primitive concepts support all planned Feature styling aspects, except...
(Polyline)-MaterialAppearance
-based geometry instances will require some magic.
Ad-hoc color changes are only possible for PerInstanceColorAppearance
/PolylineColorAppearance
.
hiding the "real" instance and showing a "highlight instance".Note: Textured polylines/corridors would look equivalent to the legacy NDS mapviewer.
Currently,
erdblick
only supportsmapget
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 oferdblick
.Common:
Points
Lines
Different kind of line representations, have a look at Polyline Sandcastle.
Polygons
Meshes