Component-based Intelligent Visualization H. Hagen1, H. Barthel1, A. Ebert1 and M. Bender2 1 Intelligent Visualization and Simulation Systems DFKI GmbH Kaiserslautern, Germany 2 Department of Computer Sciences and Microsystem Technology University of Applied Sciences Kaiserslautern, Germany Abstract: In this paper we propose a visualization system architecture combining component technology with multi agent technology. Component technology is used as a development platform on which visualization modules as well as agents are implemented as reusable software components. The agents in our approach are used to automatically satisfy individual user demands and to dynamically adapt to changing system loads and different hardware configurations Key words: visualization system, intelligent visualization architecture, component technology, multi agent technology 1. INTRODUCTION Visualization applications are used to analyze data and retrieve information coded in the data by utilizing many complex data processing and visualization algorithms, demanding a substantial knowledge about such algorithms from the developer. In order to reduce the development effort, visualization systems like AVS from Advanced Visual Systems, IRIS Explorer from SGI or Data Explorer from IBM have been developed in the last 20 years. These systems offer huge object oriented class libraries for a simplified development of new modules and a visual prototyping environment with which the data flow of applications can be interactively specified by the user. These systems are very powerful yet, but they are huge and monolithic because they were developed over several years and extensions to such 1 2 H. Hagen, H. Barthel, A. Ebert and M. Bender systems were done at the expense of the quality and clarity of the overall architectural design. The modules are strongly coupled with the respective system, that means the system demands special functionality from every module before that module can be used in the system. Consequently modules developed for one system are not usable in other systems without major changes in the source code because other systems require other functionality. Moreover they lack flexibility regarding the visualization process by either providing a high rendering quality with limited interaction possibilities, or real-time visualization with reduced rendering quality. Furthermore, the user has to manually adjust the balance between the desired frame rate and the resulting rendering quality by modifying the related control parameters or by discovering and (ex)changing the causative system components. Orthoslice Probe IsoSurface Figure 1. Example visualization using SGI IRIS Explorer. In our opinion, an appropriate visualization system architecture should support the development of new visualization modules without being fixed to the environment in which they are used, and the architecture should include an intelligent control unit capable of automatically supervising and tuning all system components during runtime. In order to reach this objective, in our approach we are combining multi agent technology with component technology. Component technology with its dynamic linking properties offers an ideal platform to achieve the uncoupling of visualization modules and visualization system, and intelligent agents (implemented as components themselves) are able to take over the H. Hagen, H. Barthel, A. Ebert and M. Bender 3 automatic customization of parameters affecting the rendering quality and the rendering performance. According to the proposed architecture we present a prototype implementation consisting of – a visualization framework composed of reusable software components which can be used as the building blocks in composing applications, – the component-based visual prototyping system CVP with which new applications can be plugged together interactively by using the components of the visualization framework, and – agents which are automatically controlling the texture resolution and the LOD selection based on the overall rendering performance. The organization of this paper is as follows: We first give a short introduction on component technology (section 2), then we will introduce our visualization framework and the CVP-System (sections 3 and 4), and in section 5 we describe how agents are used in our approach to control the rendering pipeline. We conclude our paper with suggestions for future work (section 6). 2. COMPONENT TECHNOLOGY 2.1 Introduction The complexity of present-day software development cannot be satisfactorily reduced by the concept of object-orientation because of the constraints imposed by particular programming languages and operating systems. The next frontier in software technology is the increasingly important area of component-based development, in which a component typically has all the properties of an ordinary object, but in addition can be deployed in different operating environments without change or recompilation. The size of components can range from small utility objects to large systems or business objects. Application construction thus becomes more an issue of component assembly rather than of program development. There are many different definitions of the term component. Most commonly used is a definition stating that a component is an encapsulated piece of software with a standardized, contractually specified interface giving access to a corresponding functionality (service) that piece of software wants to offer. The definition of interfaces as well as its administration is regulated by a component system (repository), which also provides a communication infrastructure based on these interfaces. An 4 H. Hagen, H. Barthel, A. Ebert and M. Bender important point here is that the component system offers a repository in which interfaces are stored and which is accessible during runtime. So, for example, after the registration of the components interfaces in the repository, if a client component wants to make use of a service a server component offers, the client asks the component system for the interface of the serving component and then accesses the corresponding functionality (see figure 2). Client Client Register Interface Access Service Query Interface Server Server Register Interface Component System Componentsystem Figure 2. Dynamic linking. So, with component technology the strict separation between implementation and provided functionality supports the development of independent and reusable software components, which leads to the following advantages: – dynamic linking: Components can be replaced, added to or deleted from an application at runtime. – faster application development: The effort necessary to build/assemble new applications can be reduced in the case suitable components are available. – small costs: If an application can be assembled out of already existing components, smaller costs arise due to shorter development times. – reliability: Components are permanently extended and improved leading to a higher reliability of the respective application. – flexible system architecture: Easy exchange and customization of components leads to an improved extendibility and maintainability of applications. To benefit from these advantages in our approach we are using a component system as the base development platform on which the 5 H. Hagen, H. Barthel, A. Ebert and M. Bender visualization modules as well as the agents are implemented as reusable software components (see figure 3). Consequently the modules and the communication between these modules only depend on the component system and can be used wherever this component system is available, independent from the underlying hardware and the operating system. Components Componen Componen Agents Agent Agent Visual Visual Visual Prototypin Prototyping Prototypin Utilities Utilitie Utilitie Component System Componentsyst Componentsyst COM/DCOM • COM/DCO • COM/DCO CORBA • CORB • CORB Java Bean Beans •• Java • Java Bean Operating System OperatinSyste OperatinSyste Figure 3. Component system as a base development platform. The three most important component systems which we can choose from are COM/DCOM from Microsoft, CORBA from the OMG Object Management Group, and Java Beans from Sun. We have decided to use Sun’s Java Beans component technology because it is directly integrated into the Java language and requires no extra effort to transfer a Java class to a Java Beans component. With the use of so called bridges both DCOM and CORBA components can be used from within a Java Beans component. 2.2 Java Beans The Java Beans component architecture defines that a Java Bean is a reusable software component that can be manipulated visually in a builder tool. These builder tools may operate entirely visually, allowing the direct plugging together of Java Beans, or they may enable users to write Java classes that interact with and control a set of beans. Here the functionality a bean provides may vary: a bean may be a simple GUI element such as a button or a slider, a sophisticated database viewer or a marching cubes component generating an isosurface on a structured point set. But common to all Java Beans is 6 H. Hagen, H. Barthel, A. Ebert and M. Bender – the support for “introspection” so that a builder tool can analyze how a bean works, – the support for “customization” so that when using an application builder a user can customize the appearance and behavior of a bean, – the support for “events” as a simple communication metaphor than can be used to connect up beans, – the support for “properties”, both for customization and for programmatic use, and – the support for persistence, so that a bean can be customized in an application builder and then have its customized state saved away and reloaded later. From a developers point of view it is important to stress that a bean is not required to inherit from any particular base class or interface and that it is also entirely usable by human programmers because all the key APIs have been designed to work well both for human programmers and for builder tools. These APIs describe the three most important features of a Java Bean: – the set of properties it exposes, – the set of methods it allows other components to call, and – the set of events it fires. Properties are named attributes associated with a bean that can be read or written by calling appropriate methods on the bean. Thus for example, a bean might have a “foreground” property that represents its foreground color. This property might be read by calling the method “Color getForeground()” and the property might be updated by calling the method “void setForeground(Color c)”. The methods a Java Bean exports are just normal Java methods which can be called from other components or from a scripting environment. By default all of a beans public methods will be exported, but a bean can choose to export only a subset of its public methods. Events provide a way for one component to notify other components that something interesting has happened. Under the event model of Java an event listener object can be registered with an event source. When the event source detects that something interesting happens it will call an appropriate method on the event listener object. H. Hagen, H. Barthel, A. Ebert and M. Bender 3. 7 THE VISUALIZATION FRAMEWORK During the visualization process data is transformed into images in order to efficiently and accurately represent the information that is coded in the data. According to the visualization pipeline this transformation is done in a dataflow oriented manner by converting the data from its original form into graphic primitives and displaying these primitives by using a graphics library. Consequently we distinguish between source components generating data, filter components consuming and producing data, and mapper components mapping the data to graphic primitives and rendering these primitives using a graphics library like OpenGL. Figure 4. Visualization examples. For the prototype implementation presented in this paper we use Kitware’s visualization toolkit VTK which offers a modern object-oriented C++ class library composed of a huge set of classes for the dataflow oriented processing and visualization of data. This class library is accessible from within Java by utilizing the Java Native Interface API (JNI) allowing Java code that runs inside a Java Virtual Machine* (VM) to interoperate with applications and libraries written in other programming languages, such as C, C++, and the assembly language. Because JNI imposes only a little overhead we can take advantage of the native performance the VTK class library offers. 8 H. Hagen, H. Barthel, A. Ebert and M. Bender Figure 5. The visual prototyping environment of IBM Data Explorer. The visualization framework of our prototype implementation actually contains over 170 visualization modules implemented as Java Beans components. Here the flow of data is realized by events encapsulating the data flowing through the visualization pipeline. To be more precisely we actually map the following data set types onto the respective event types: – – – – structured points unstructured points structured grid polygonal data ⇒ StucturedPointsEvent, ⇒ UnstructuredPointsEvent, ⇒ UnstructuredGridEvent, and ⇒ PolyDataEvent. So, for example a component reading a structured points set acts as a StructuredPointsEvent source, and a marching cubes component computing an isosurface of a structured points data set and producing triangles acts as a StucturedPointsEvent listener and as a PolyDataEvent source. Consequently it is possible to implement the components of the framework independent from each other, requiring only the knowledge of incoming and outgoing events which are based on data set types which are unusual to change. With the CVP-System introduced in the next section we can add and replace components even at runtime by utilizing the dynamic linking properties component technology offers. Figure 4 shows some example visualizations done with the visualization components of the prototype system. 4. THE CVP-SYSTEM Most of the commercial visualization systems available today offer a visual prototyping environment in which the data flow of applications can be specified interactively by the user. Here, according to the visualization H. Hagen, H. Barthel, A. Ebert and M. Bender 9 pipeline, an application is deemed to be a network of modules connected by links over which the data flows from source objects via filter objects to mapper objects. So, with the use of a visual prototyping environment the user can rapidly realize new visualization applications without the need for editing source code. Figure 5 shows an example for such an environment (IBM Data Explorer). Even though these builder tools have been proved very useful, a module to be used in such an environment is requested to implement a special functionality. But because every system has its own functional requirements, a module normally cannot be used in other systems without major changes in the source code. Figure 6. The CVP-System. To overcome this drawback we have implemented the component based visual prototyping system CVP taking advantage of the dynamic linking properties component technology offers. More precisely, in the CVP-System a Java Beans component can be used without requiring the implementation of mandatory functionality. And because a bean is not required to inherit from any particular base class or interface, every bean can be used to interactively plug together new applications. Moreover the system on demand creates a graphical user interface allowing the customization of the bean so that the user can interactively adjust the components properties. Figure 6 shows an example CVP-Session realizing a scalar warping application. 10 5. H. Hagen, H. Barthel, A. Ebert and M. Bender AGENT-BASED CONTROL The way in which the visualization is done still lacks flexibility regarding the visualization process by either providing a high rendering quality with limited interaction possibilities, or real-time visualization with reduced rendering quality. That’s because the user manually has to adjust the balance between the desired frame rate and the desired rendering quality by modifying the related control parameters or by discovering and (ex)changing the causative system components. Furthermore because of the continually changing conditions and the vast variety of parameters the monitoring and tuning of visualization applications is a complex challenge, even for experts with a widespread experience in visualization. READER MARCHING CUBE TEXTURE COORDS DATA GENERATION LEVEL OF DETAIL DATA CONVERSION REACTIVE AGENT KNOWLEDGE BASE RENDERER DATA VISUALIZATION ENVIRONMENT KNOWLEDGE BASE CONTROLLING AGENT USER DEMANDS ENVIRONMENT LEGEND REACTIVE AGENT DELIBERATIVE AGENT CONTROL LOOP Figure 7. Agent-controlled visualization pipeline. In order to improve this unsatisfying situation, we are extending our component based visualization system architecture by incorporating multi agent technology. A multi agent system is a software system build by a number of agents communicating with each other in order to solve more complex problems. Here an agent is a piece of software operating autonomously according to its explicitly given goals and reacting on changes in its environment. H. Hagen, H. Barthel, A. Ebert and M. Bender 11 Figure 8. Snapshot of the example application. Our approach make use of two types of agents: reactive agents and deliberative agents. A reactive agent only has a limited knowledge about the context it is living in and therefore only performs a simple task, whereby a deliberative agent has knowledge about a greater context and therefore has the ability to handle more complex problems, especially by using and controlling reactive agents. Regarding the visualization process a module or a group of modules always performs one fixed task; this means that the terms of regulation (e.g. frame rate and rendering quality) can be described by straightforward static rules. Thus, it is reasonable to assign a reactive agent to either a module or a group of modules and to control the modules’ parameters on demand. Since a reactive agent only needs the knowledge in the module specific context it acts similar to a control loop. In contrast, a deliberative agent has the ability to handle complex problems, but in general it is not able to process such jobs in real time on its own because of the applied sophisticated calculation methods. The supervision of the reactive agents, as well as the analysis of the information 12 H. Hagen, H. Barthel, A. Ebert and M. Bender generated by them, is done by such a deliberative agent, which we call a controlling agent. Based on the overall knowledge about the involved visualization components and with respect to the user specific demands it automatically responds to changes in the environment (e.g. the system load) by modifying the desired values of the subordinated reactive agents. Figure 7 demonstrates how reactive and deliberative agents may be used to automatically control the flow of data through the visualization pipeline. To achieve a user defined rendering quality and performance, reactive agents are assigned to each component of the visualization pipeline and are managed by the controlling agent. Exemplarily we will briefly describe the interplay of the data conversion and visualization modules and the controlling manager. The reactive agent of the data conversion module controls the level of detail component by altering its parameters affecting the level of detail algorithm, the reduction level and the accuracy demand. The output of the data conversion module is the effective accuracy level and the number of generated triangles. The reactive agent of the data visualization module controls the render component by varying the representation model (wire frame, solid), the shading model, the rendering algorithm, the resolution and the lighting and texturing parameters. The output of the data visualization module is the current frame rate or the render time respectively. Both modules receive their permitted parameter ranges from the controlling agent, which in its turn is biased by user demands and the system environment. Figure 8 shows a snapshot of the visual prototyping system CVP while assembling a medical volume data visualization application. Here a CT data set consisting of 93 image slices through the human head is imported, an isosurface is generated using a marching cubes algorithm, and different LOD resolutions of the geometry and the texture image are computed. Without the use of intelligent agents the user manually has to adjust the parameters in order to achieve a reasonable rendering speed, but because of the multitude of the parameters it is very difficult to get both a high rendering quality and high interaction rates. 6. CONCLUSION AND FUTURE WORK In this paper we proposed as visualization system architecture combining multi agent technology with component technology. Component technology is used as an ideal development platform on which the visualization modules as well as the agents are implemented as reusable software components. Consequently the modules and the communication between these modules only depend on the component system and can be used wherever this H. Hagen, H. Barthel, A. Ebert and M. Bender 13 component system is available, independent from the underlying hardware and operating system. And with the use of reactive and deliberative agents the adjustment of parameters affecting the rendering quality and the rendering performance can be achieved automatically according to explicit user demands or changes in the system environment. Our future plans include the utilization of a knowledge base in which knowledge is collected about the available visualization components, how these components are to be tuned by reactive agents, and how reactive agents are to be monitored by deliberative agents. REFERENCES [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Advanced Visual Systems: “ActiveX Visualization Components”, Technology Whitepaper, Advanced Visual Systems Inc., 1999. Barthel: „Komponentenbasiertes visuelles Prototyping von Visualisierungsanwendungen“, Dissertation, University of Kaiserslautern, 2000. Burnett, Goldberg, Lewis,: “Visual Object-Oriented Programming”, Khoral Research Inc., 1994. Ebert, Divivier, Bender, Barthel: “A Visualization System using Multi Agent Technologies”, Visualization 2000, Salt Lake City, 2000. ECOOP: “European Conference on Object-Oriented Programming”, ECOOP Proceedings, 1996. Franklin, Graesser: “Is it an Agent, or just a Program? A Taxonomy for Autonomous Agents”, Third International Workshop on Agent Theories, Architectures, and Languages, 1996. Griffel: „Componentware: Konzepte und Techniken eines Softwareparadigmas“, dpunkt-Verlag, 1998. Hagen, Müller, Nielson: Scientific Visualization – Overviews, Methodologies, Techniques, IEEE, 1997. Harmon: “Components Development Strategies”, Cutter Information Corp. On Managing and Developing Component-Based Systems, July 1998. Heuer-Hasenpatt, Hollunder, Kittlaus, Schumacher: „Bausteinorientierte Anwendungsentwicklung“, SIZ GmbH, 1998. Jacobsen: “Software Reuse – Architecture, Process and Organization for Business Success”, ACM Press, Addison Wesley, 1997. Nwana: “Software Agents: An Overview”, Journal, Knowledge Engineering Review, 11(3), 1996. Ranze, Müller: „Über den Einsatz von Agenten in Umweltanwendungen“, 11. Symposium “Informatik im Umweltschutz“, 1997.
© Copyright 2025 Paperzz