Supporting Polygonal Domains - Polygon Sessions
The Polygon Session is designed to support the modeling of 2D domains and will support the following functionality:
- The ability to create vertices, polyline edges (defined by 0, 1, or 2 model vertices and composed of a sequence of connected line segments and polygonal model faces
- The ability to automatically extract polygons from a set of connected model edges
- The ability split and merge model edges
- The ability to reshape model edges
- The ability to delete various topological entities
The following is the current list of functionality to be implemented next in priority order (highest to lowest):
- Provide a file format to save and retrieve polygon models - The current idea is to extend the SMTK Model format to have an additional section that would be processed by the Polygon Session. It was proposed to adapt the poly file format but there is not enough flexibility to preserve face loops without significant processing at load time.
- Provide delete operations for vertices, edges, and faces. Include an option to delete the model entities that use the entity being deleted (else the entity will not be deleted if it is part of another entity's boundary).
- Verify that edge point promotion to model vertex and vice versa work
- Replace a model edge's shape - this include the ability to split the edge to a set of new model edges.
- When reading in Shapefiles - provide the ability to deal with overlapping polygons as well as merging overlapping edge segments.
- Validate that polygon models can be meshed
- Provide ability to validate and cleanup polygonal models - this will be useful when reshaping model edges that cause intersections.
- Provide the ability store the Polygonal and edge ID's stored in a Shapesfile into the polygonal model
- Provide the ability to import and export using Poly file format
- Provide the ability to only generate the outer most polygons from a set of model edges (resulting in polygons with holes)
- Provide the ability to explicitly specify the locations of model vertices and edge points.
- Refactor "create edge" and "edit edge" operators so that "create edge" will have two modes, points coordinates and interactive widget, and "edit edge" only has edge-editing support through widget.
- Revamp polygon arcs in SceneBuilder to use polygon session model and operations, or at least be able to output the SceneBuilder arcs to polygon session model so that it can be loaded in ModelBuilder.
Status for Supporting Surface Water Workflow
- Create polygon session, create polygon model.
- Import image (import image operator) to a polygon model and display controls for the image representation
- Extract contours (extract contours operator with customized view) from the image and create polygon model edges (create edge operator) from extracted contours
- Create polygon from edge loop (force create face operator and create faces operator)
- Supporting operators:
- Create edges (create edge operator with customized view) by arc widgets or points
- Promote edge point to vertex (split operator with interactive selection highlighting edge points)
- Delete entities (delete operator)
- Edit edge by widget (David's tweak-edge smtk MR 150 )
- Merge edge
- Create Edge with two edges to make a loop
- Creating edges from extracted contours sometimes "fails" to create an edge and leaves the two unused vertices around.
- Export a smtk file with a polygon session, then load it back in, the vertices will show in the tree view, but they are not shown in render window. Likely the vertices's tessellation is not set.
- Create edges with extracted contours, or loading a saved polygon session smtk file, or reading a shape file with vertices (road.shp), in topology tree view, the model vertices will show up under both the model and their edges.