overview of vapor gui 3.0. overview current code is “work in progress”: – demonstration of...

11
Overview of Vapor GUI 3.0

Upload: toby-douglas

Post on 05-Jan-2016

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 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

Overview of Vapor GUI 3.0

Page 2: 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

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.

Page 3: 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

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/

Page 4: 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

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

Page 5: 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

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

Page 6: 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

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.

Page 7: 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

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.

Page 8: 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

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)

Page 9: 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

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

Page 10: 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

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.

Page 11: 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

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