Download presentation
Presentation is loading. Please wait.
Published byJade Chambers Modified over 9 years ago
1
1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design
2
2 ParaView Project Goals Develop an open-source, multi- platform visualization application Develop an open-source, multi- platform visualization application Support distributed computation models to process large datasets Support distributed computation models to process large datasets Create an open, flexible and intuitive user interface Create an open, flexible and intuitive user interface Develop an extensible architecture based on open standards Develop an extensible architecture based on open standards
3
3 ParaView Architecture Parallel VTK as IO, processing and rendering engine Parallel VTK as IO, processing and rendering engine MPI and TCP/IP as network communication MPI and TCP/IP as network communication Tcl as scripting language Tcl as scripting language KW widgets as GUI KW widgets as GUI
4
4 ParaView Architecture XML configurable, extensible GUI XML configurable, extensible GUI User extensible, open source engine (VTK) User extensible, open source engine (VTK) Tool for end-users as well as developers who want to deploy algorithms Tool for end-users as well as developers who want to deploy algorithms
5
5 Evolution of Architecture Old architecture Old architecture MPI On accept: vtkSphereSource sphere0 sphere0 SetPhiResolution 256 On reset: this->Script(“sphere0 GetResolution”); int val = atoi(this->SetValue(this->GetLastResult)); vtkSphereSource sphere0 sphere0 SetPhiResolution 256 vtkSphereSource sphere0 sphere0 SetPhiResolution 256
6
6 Evolution of Architecture Added client/server support Added client/server support
7
7 Motivation Problems with old architecture Problems with old architecture –Tcl based communication: String based. Imprecise and inefficient. String based. Imprecise and inefficient. Standard Tcl interpreter is not secure. Standard Tcl interpreter is not secure. –Dummy pipeline on client: VTK pipeline objects are not designed to only store state. Some objects misbehave when disconnected or empty. VTK pipeline objects are not designed to only store state. Some objects misbehave when disconnected or empty. Communication with server is still necessary to obtain information about distributed data. Communication with server is still necessary to obtain information about distributed data. Client must be linked to all VTK + VTK Tcl libs Client must be linked to all VTK + VTK Tcl libs
8
8 Goals Binary communication with server where possible Binary communication with server where possible Replace empty pipeline on client with a proxy representation Replace empty pipeline on client with a proxy representation Separation of pipeline management from GUI to support multiple client types Separation of pipeline management from GUI to support multiple client types Provide default implementation of complicated, parallel pipeline and rendering architecture to make client development easy and to reuse code Provide default implementation of complicated, parallel pipeline and rendering architecture to make client development easy and to reuse code
9
9 ParaView Architecture
10
10 ParaView Architecture Data/render server: Data/render server: –C++ –Client/server wrapping –No direct access Server manager: Server manager: –C++ API –XML configuration –Tcl, Python or Java scripting (optional)
11
11 ParaView Architecture Desktop Client: Desktop Client: –KWWidgets (Tcl/Tk and C++) –Tcl scripting of GUI –XML configuration of GUI Web Client: Web Client: –DHTML/JavaScript –Server code uses Python
12
12 ServerManager Design Proxies – VTK objects Proxies – VTK objects –Example: Sphere Properties – Attributes of VTK objects Properties – Attributes of VTK objects –Example: Radius Domains – Restrictions on values Domains – Restrictions on values –Example: Numbers greater than 0
13
13 Server Manager Design
14
14 SM: Proxies Based on proxy design pattern Based on proxy design pattern Proxies are responsible of Proxies are responsible of –Creating server-side VTK objects –Maintaining references to server-side VTK objects using ids –Maintaining a copy of the state of the server-side objects using properties
15
15 SM: Properties Maintain the state of the attributes of the server-side objects Maintain the state of the attributes of the server-side objects Each property has a set of values and one or more commands to set or get them Each property has a set of values and one or more commands to set or get them Regular and information properties Regular and information properties
16
16 SM: Properties
17
17 GUI Design – Main Classes vtkPVApplication vtkPVApplication vtkPVWindow (main window) vtkPVWindow (main window) vtkPVRenderView (render window, interaction) vtkPVRenderView (render window, interaction) vtkPVSource (source/filter proxy) vtkPVSource (source/filter proxy) vtkPVDisplayGUI (display proxy) vtkPVDisplayGUI (display proxy) vtkPVWidget (property) vtkPVWidget (property)
18
18 GUI Architecture vtkPVSource and sub-classes implement : vtkPVSource and sub-classes implement : –Accept() : push GUI values to server manager then push server manager values to server –Reset() : update the GUI from the server manager vtkPVWidget and sub-classes follow the same pattern with SM properties. vtkPVWidget and sub-classes follow the same pattern with SM properties.
19
19 GUI Architecture PVSources and PVWidgets are created on the fly based on GUI XML description PVSources and PVWidgets are created on the fly based on GUI XML description GUI events are stored in trace files. GUI events are stored in trace files. GUI state is stored in state files. GUI state is stored in state files.
20
20 GUI Design Issues Incomplete implementation of MVC pattern: Incomplete implementation of MVC pattern: –GUI (view) can be only partially updated from SM (model) –PVSource can be updated using Reset() –Other pages cannot be updated from SM –GUI pages corresponding to proxy should exist to be updated
21
21 GUI Design Issues Inconsistent access of SM proxies: Inconsistent access of SM proxies: –PVSource and PVWidgets use Accept()/Reset() –PVDisplayGUI and other pages push values immediately
22
22 GUI Design Issues Rigid GUI design Rigid GUI design –Access to different types of proxies is different and hard-coded –Proxy/property interface is simple –GUI elements to access any type of proxy should be uniform, simple and XML configurable
23
23 GUI Design Issues Code duplication Code duplication –Many sub-classes of vtkPVWidget that duplicate functionality of KWWidgets –Trace, state and batch follow separate paths although they perform very similar functions
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.