Modular distributed visualization and collaboration for a real-time 3D visualizer Alexandre Valdetaro * , Alberto Raposo * and Pablo Elias * * Technical-Scientific Software Development Institute (Tecgraf) Pontifical Catholic University of Rio de Janeiro Rio de Janeiro, Brazil Email: xvaldetaro@gmail.com, abraposo@tecgraf.com.br, pelias@tecgraf.puc-rio.br Abstract—In this work, we present the design and implemen- tation of distributed visualization and collaboration for an immer- sive 3D visualizer in a component-oriented fashion. The design follows an MVC approach, isolating all the business objects in the lowest level of the application, making it modular and extensible, therefore providing an easier prototyping of functionality and the isolation of complex business logic algorithms. This design as a solution came from the necessity of an existing visualizer with a monolithic implementation, whose maintainability and improvement are impaired due to the coupling between the business logic and the diverse visualization and distribution algorithms. Our design may be reused as an inspiration for other visualizers that wish to reduce the complexity and cost of the development of new business functionality. We implemented the designed visualizer, where we verified both the synchronism of the distributed visualization and the consistency of the collaboration among multiple nodes. We also evaluated the performance impact caused by the distributed visualization. I. I NTRODUCTION Immersive applications seek to provide an experience to the user as close to real life as possible. Such experience must re-create sensorial stimuli and perception of space in order to induce the user’s brain into believing that the immersive experience is real life. Although an immersive experience can be delivered by any kind of system, Real-Time 3D visualizers may stand out as the key player in the field. A visualizer is an application that enables the user to visually explore a virtual scene. The success of such applications is consequence of many features combined, such as, credible visual input to the user by usage of modern computer graphics techniques, enhanced illusion of visual depth due to stereoscopy, pre- cise and immediate control thanks to real-time reading and processing of user input. Therefore, the development of an application that provides an immersive experience to the user can be very complex because of these many requirements and their implementation in a real-time reactive system. A. Distributed Visualization Distributed visualization is the process of displaying a single virtual scene from multiple views. Such process faces the technical problem of how to render and synchronize so many views and output to different screens. A traditional approach to achieve distributed visualization is through the usage of out-of-the box systems that make use of dedicated hardware. The hardware controls all the visualization devices. Such solution presents, usually, a high cost of deployment and maintenance. The rendering speed depends roughly on the amount of geometry—the number of vertices of every object in the view- able scene—being processed and the size of the output image. Therefore, rendering multiple views of the same scene gets very expensive in terms of processing, specially if the output images have to be very big for display walls. Consequently, distributing the scene to multiple nodes can be a feasible solution—despite the distribution difficulties. There are many possible designs of a visualizer that provide scene distribution as well as many tools available for it. In the related work section we make a review of the main available tools and their usefulness for our scenario. B. Collaboration Collaborative software is a software that enables multiple users to collaborate to achieve a common goal [1]. A collab- orative visualizer lets the users explore a common scene, and possibly make changes and view other users avatars in the scene. The most common case of a collaborative visualizer is a multi-player game, where the players interact with each other in a shared virtual world. The players can talk to each other, engage non player characters and change the persistent world in many ways. C. Real-time Visualizer Any real-time application must be reactive, i.e., it must process input from external devices with a delay small enough not to break user immersion. Moreover, the interactive vi- sualization requires that at least a given amount of frames be rendered every second. Thus, efficiency is the utmost requirement when developing a feature in a real time 3D visualizer. In order to achieve maximum efficiency in a visualizer’s many routines, e.g., rendering, input processing, distribution, data loading and so on, there is a natural tendency of the developers to trade abstractions for low-level APIs in order to have access to every available optimization setting. However, the exposure of every low level API to the business logic developer can greatly increase the complexity, which may lead to an increase in the lifecycle cost [2] and effort [3] required to maintain and extend a visualizer with new functionalities. To the best of our knowledge, the majority of the 3D visualizers, where efficiency is paramount, are implemented in a monolithic way. There is no clear separation between business, distribution, rendering, architectural elements and 2014 IEEE 17th International Symposium on Object/Component-Oriented Real-Time Distributed Computing 1555-0885/14 $31.00 © 2014 IEEE DOI 10.1109/ISORC.2014.44 32