overview of vapor gui 3.0. overview current code is “work in progress”: – demonstration of...
TRANSCRIPT
Overview of Vapor GUI 3.0
Overview
• Current code is “work in progress”:– Demonstration of feasibility of 3.0 API– Needs more work to become a framework on
which we can build 3.0– Goal was to produce minimal prototype: Only one
renderer (Barbs), otherwise missing most of the planned functionality
– Code changes all in lib/params, lib/render, and in apps/vaporgui; Makefiles indicate working classes.
Params library• Params and RenderParams classes: base classes for storing
parameters that are used in rendering. Values are set and displayed in tabs.
• Static methods provide access to all available params instances
• Each Params instance is associated with XML tree• ParamsBase is parent class for representing XML node;
ParamNode has functionality to set/get data from XML entries, based on tag.
• DataStatus class provides repository for commonly accessed information about current VDC
• Extensibility API (on which this is based) is documented at http://vis.ucar.edu/~alan/extensibility/
Changes made to Params lib for 3.0
• Params and RenderParams stripped down to basics of extensibility API, removing legacy methods
• RegionParams, AnimationParams, ViewpointParams adapted to use extensibility API (XML-based)
• ArrowParams, Box, glutil kept as-is• Datastatus class stripped down • Qt dependence eliminated
Params: Basic re-structuring still needed for 3.0 support of ControlExecutive API
• Eliminate any DataStatus functionality that duplicates VDC functionality
• Load/Save session files support• Provide undo/redo queue support in
ParamNode class• Provide error checking in ParamNode
Major work needed in Params for 3.0 prior to release
• Upgrade all RenderParams (flow, probe, 2Ddata, 2DImage, Model, Iso, DVR) to use extensibility API
• Implement Visualizer Features as a Params class• Upgrade TransferFunction class to use
extensibility API• Backwards-compatible session file loading• Hook in auxiliary support classes, e.g.
PythonPipeline, keyframing, geoTiles• Modifications to support 3.0 VDC.
Render Lib prototype functionality for 3.0
• All Qt methods removed from Render lib.• Renderer classes (1 per RenderParams class) provide the
OpenGL calls necessary to draw in a GL Context.• ArrowRenderer class is currently the only Renderer
subclass • Visualizer class (replaces GLWindow class) is no longer a Qt
Widget. Dispatches the rendering under control of the CE, manages GL state; invokes the various renderers, also renders auxiliary geometry
• Trackball moved to GUI• Manips (not yet re-implemented) to be drawn by
Visualizer; GUI functionality must be moved to app.• ControlExecutive implementation is in Render lib.
Render lib work needed
• Implement renderer classes for DVR, Iso, flow, probe, 2DData, 2DImage, Model
• Implement auxiliary drawing capabilities (color bars, axis annotation, manip drawing, etc.) in Visualizer class
• Add support for scene stretching• Modifications for 3.0 VDC (multiple grids in
scene)
VAPOR GUI App for 3.0
• Major classes:– EventRouter (one subclass for each Tab; currently
animation, region, viewpoint, arrow)– MainForm (main window class)– VizWin (one instance for each visualizer window)– VizWinMgr manages all the visualizers, their
connection to Params and Renderers– Trackball will control viewpoint– Manips UI supported in App
Changes to 3.0 VaporGUI app
• Undo/redo queue and associated classes removed
• VizWin is now a QGLWidget• Much of VizWinMgr has been eliminated but
still some legacy code remains.
Work to do in vaporgui app
• Clean up all EventRouter subclasses for desired tabs
• Clean up Vizwinmgr and Vizwin classes• Re-implement Manips and Trackball• Error-checking and error-response• Hook up user preferences