11
ParaViewParaView
Current Architecture and Current Architecture and HistoryHistory
Issues with the Current Issues with the Current DesignDesign
22
ParaView Project GoalsParaView Project Goals
Develop an open-source, multi-Develop an open-source, multi-platform visualization applicationplatform visualization application
Support distributed computation Support distributed computation models to process large datasetsmodels to process large datasets
Create an open, flexible and Create an open, flexible and intuitive user interfaceintuitive user interface
Develop an extensible architecture Develop an extensible architecture based on open standardsbased on open standards
33
ParaView ArchitectureParaView Architecture
Parallel VTK as IO, processing and Parallel VTK as IO, processing and rendering enginerendering engine
MPI and TCP/IP as network MPI and TCP/IP as network communicationcommunication
Tcl as scripting languageTcl as scripting language KW widgets as GUIKW widgets as GUI
44
ParaView ArchitectureParaView Architecture
XML configurable, extensible GUIXML configurable, extensible GUI User extensible, open source User extensible, open source
engine (VTK)engine (VTK) Tool for end-users as well as Tool for end-users as well as
developers who want to deploy developers who want to deploy algorithmsalgorithms
55
Evolution of Evolution of ArchitectureArchitecture Old architectureOld architecture
MPI
On accept:vtkSphereSource sphere0sphere0 SetPhiResolution 256
On reset:this->Script(“sphere0 GetResolution”);int val = atoi(this->SetValue(this->GetLastResult));
vtkSphereSource sphere0sphere0 SetPhiResolution 256
vtkSphereSource sphere0sphere0 SetPhiResolution 256
66
Evolution of Evolution of ArchitectureArchitecture Added client/server supportAdded client/server support
Server
Client
TCP/IP
MPI
77
MotivationMotivation
Problems with old architectureProblems with old architecture– Tcl based communication: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:Dummy pipeline on client: VTK pipeline objects are not designed to only VTK pipeline objects are not designed to only
store state. Some objects misbehave when store state. Some objects misbehave when disconnected or empty.disconnected or empty.
Communication with server is still necessary to Communication with server is still necessary to obtain information about distributed data.obtain information about distributed data.
Client must be linked to all VTK + VTK Tcl libsClient must be linked to all VTK + VTK Tcl libs
88
GoalsGoals
Binary communication with server Binary communication with server where possiblewhere possible
Replace empty pipeline on client with Replace empty pipeline on client with a proxy representationa proxy representation
Separation of pipeline management Separation of pipeline management from GUI to support multiple client from GUI to support multiple client typestypes
Provide default implementation of Provide default implementation of complicated, parallel pipeline and complicated, parallel pipeline and rendering architecture to make client rendering architecture to make client development easy and to reuse codedevelopment easy and to reuse code
99
ParaView ArchitectureParaView Architecture
GUI
Client Manager
texttextData
Server
texttextRender Server
Server Manager
Server
1010
ParaView ArchitectureParaView Architecture
Data/render server:Data/render server:– C++C++– Client/server wrappingClient/server wrapping– No direct accessNo direct access
Server manager:Server manager:– C++ APIC++ API– XML configurationXML configuration– Tcl, Python or Java scripting Tcl, Python or Java scripting
(optional)(optional)
1111
ParaView ArchitectureParaView Architecture
Desktop Client:Desktop Client:– KWWidgets (Tcl/Tk and C++)KWWidgets (Tcl/Tk and C++)– Tcl scripting of GUITcl scripting of GUI– XML configuration of GUIXML configuration of GUI
Web Client:Web Client:– DHTML/JavaScriptDHTML/JavaScript– Server code uses PythonServer code uses Python
1212
ServerManager DesignServerManager Design
Proxies – VTK objectsProxies – VTK objects– Example: SphereExample: Sphere
Properties – Attributes of VTK Properties – Attributes of VTK objectsobjects– Example: RadiusExample: Radius
Domains – Restrictions on valuesDomains – Restrictions on values– Example: Numbers greater than 0Example: Numbers greater than 0
1313
Server Manager Server Manager DesignDesign
GUIWidget
Proxy Property Domains Client
Server Stream
CS Interpreter
VTK Classes
1414
SM: ProxiesSM: Proxies
Based on proxy design patternBased on proxy design pattern Proxies are responsible ofProxies are responsible of
– Creating server-side VTK objectsCreating server-side VTK objects– Maintaining references to server-Maintaining references to server-
side VTK objects using idsside VTK objects using ids– Maintaining a copy of the state of Maintaining a copy of the state of
the server-side objects using the server-side objects using propertiesproperties
1515
SM: PropertiesSM: Properties
Maintain the state of the Maintain the state of the attributes of the server-side attributes of the server-side objectsobjects
Each property has a set of values Each property has a set of values and one or more commands to and one or more commands to set or get themset or get them
Regular and information Regular and information propertiesproperties
1616
SM: PropertiesSM: Properties
GUI WidgetVTK Class
Proxy
Property
Info Property
1717
GUI Design – Main GUI Design – Main ClassesClasses
vtkPVApplicationvtkPVApplication vtkPVWindow (main window)vtkPVWindow (main window) vtkPVRenderView (render vtkPVRenderView (render
window, interaction)window, interaction) vtkPVSource (source/filter proxy)vtkPVSource (source/filter proxy) vtkPVDisplayGUI (display proxy)vtkPVDisplayGUI (display proxy) vtkPVWidget (property)vtkPVWidget (property)
1818
GUI ArchitectureGUI Architecture
vtkPVSource and sub-classes vtkPVSource and sub-classes implementimplement::– Accept() : push GUI values to server Accept() : push GUI values to server
manager then push server manager values manager then push server manager values to serverto server
– Reset() : update the GUI from the server Reset() : update the GUI from the server managermanager
vtkPVWidget and sub-classes vtkPVWidget and sub-classes follow the same pattern with SM follow the same pattern with SM properties. properties.
1919
GUI ArchitectureGUI Architecture
PVSources and PVWidgets are PVSources and PVWidgets are created on the fly based on created on the fly based on GUI XML descriptionGUI XML description
GUI events are stored in trace GUI events are stored in trace files.files.
GUI state is stored in state GUI state is stored in state files.files.
2020
GUI Design IssuesGUI Design Issues
Incomplete implementation of MVC Incomplete implementation of MVC pattern:pattern:– GUI (view) can be only partially updated GUI (view) can be only partially updated
from SM (model) from SM (model) – PVSource can be updated using Reset()PVSource can be updated using Reset()– Other pages cannot be updated from SMOther pages cannot be updated from SM– GUI pages corresponding to proxy GUI pages corresponding to proxy
should exist to be updatedshould exist to be updated
2121
GUI Design IssuesGUI Design Issues
Inconsistent access of SM proxies:Inconsistent access of SM proxies:– PVSource and PVWidgets use PVSource and PVWidgets use
Accept()/Reset()Accept()/Reset()– PVDisplayGUI and other pages push PVDisplayGUI and other pages push
values immediatelyvalues immediately
2222
GUI Design IssuesGUI Design Issues
Rigid GUI designRigid GUI design– Access to different types of proxies Access to different types of proxies
is different and hard-codedis different and hard-coded– Proxy/property interface is simpleProxy/property interface is simple– GUI elements to access any type of GUI elements to access any type of
proxy should be uniform, simple and proxy should be uniform, simple and XML configurableXML configurable
2323
GUI Design IssuesGUI Design Issues
Code duplicationCode duplication– Many sub-classes of vtkPVWidget Many sub-classes of vtkPVWidget
that duplicate functionality of that duplicate functionality of KWWidgetsKWWidgets
– Trace, state and batch follow Trace, state and batch follow separate paths although they separate paths although they perform very similar functionsperform very similar functions