basho - A Virtual Environment Framework

3 downloads 1053 Views 38KB Size Report
While our VE framework, named basho is still under development we have an alpha version running under Linux and MacOS X. 1. Introduction. A number of VE ... tiple renderers. Either a different renderer for each application or even multiple ...
basho - A Virtual Environment Framework André Hinkenjann1 , Florian Mannuß1 1

University of Applied Sciences Bonn-Rhein-Sieg – Department of Computer Science Sankt Augustin, Germany [email protected]

Abstract. Most VE-frameworks try to support many different input and output devices. They do not concentrate so much on the rendering because this is traditionally done by graphics workstation. In this short paper we present a modern VE framework that has a small kernel and is able to use different renderers. This includes sound renderers, physics renderers and software based graphics renderers. While our VE framework, named basho is still under development we have an alpha version running under Linux and MacOS X.

1. Introduction A number of VE frameworks are currently in use worldwide. These include VR Juggler [Bierbaum et al., 2001], Avango [Tramberend, 1999], Lightning [Bues et al., 2001] and many others. While VR Juggler supports the use of different scene graph renderers it is not focused on further support for advanced software renderers. Avango is an advanced VE framework that tries to keep a small kernel but it is basically an extension of OpenGL|Performer with the field concept of OpenInventor. An important goal at the computer graphics laboratory at the University of Applied Sciences Bonn-Rhein-Sieg is to increase the quality of virtual environments. This means that a VE framework has to support different renderers. We have currently integrated into basho a scene graph renderer, based on OpenSceneGraph and a software based ray tracer that we decouple from the framework by the use of a distributed render cache [B. Walter and Parker, 1999]. For the rendering of 3D scanner data we employ a point based renderer. basho can merge the results of the different renderers based on color and depth information. We base the latter feature on work done in [vibal, 2003]. The concept of renderers is not limited to graphics renderers in our framework. Each frame a chain of renderers is called that render the current scene based on specific information (geometry, sound attributes, gravity forces etc.). In addition, from lessons learned with the development of other VE frameworks we decided to keep the kernel of the framework small and thus easy to handle and maintain. In the following section we will present the features of basho and and a brief overview of the framework.

2. basho 2.1. basho features The following description lists the features of basho : Multiple renderer support: Traditional hardware based graphics is limited in the achievable quality and is generally triangle based. basho supports the use of multiple renderers. Either a different renderer for each application or even multiple

renderers for one scene. Renderers do not have to be hardware based, but can also be fast software renderers. Generic renderer support: A renderer is not limited to render an image. It can also render sound, physics etc. To be able to supply the renderers with specific data, basho employs generic objects. Generic objects: To be able to separate the renderers from the kernel we decided to introduce our own layer of objects. If for example basho uses a scene graph based renderer then it generates objects based on scene graph nodes. These basho objects are "naked" objects once they are instantiated. All attributes have to be added at runtime. Typically a graphics renderer needs geometric information and some material data. A physics renderer would need e.g. weight, speed and geometry information for collision detection. basho offers the possibility to create objects and to add attribute at runtime. All generic objects have a unique identifier and can be grouped together. Objects can also be connected to each other to update one object dependent on updates of the other. In contrast to the field approach of Avango connections are implemented by so called object connectors. Object connectors implement a constraint function that is executed during each update. By using object connectors an object to object update in a distributed setup (where objects on different PCs exist) can be made transparent. Small kernel: VE frameworks tend to grow during the years of development. This is because more and more functionality is added over time. If care is not taken this means that the system might grow uncontrolled. This leads to difficulties in maintaining and using the framework. We decided to separate the framework into a small kernel and plugins (renderers are plugins, for example). Broad support for input and output devices: The VR community uses a very broad variety of input and output devices. Each application has its preferred setup. To be able to support this variety with basho we use VRPN [Russell et al., 2001] on the input side. VRPN has support for many devices and is based on a client-server concept. This has the side effect that the input device can be attached to a PC that is different from the PC on which basho runs. On the output site we currently use Open Producer [Burns, ] which is developed in the context of OpenSceneGraph. Open Producer lets the user configure the output setup by small configuration files. 2.2. basho Overview The components of basho are visible in the figure 1: The kernel is extended by plugins.

Figure 1: basho kernel components and plugins

All plugins are loaded at runtime by their referring managers. We currently have four managers: inputDeviceManager, actionManager, sceneManager and sceneRenderer. The

scene is a plugin (e.g. a scene graph) as well as renderers, handling of input devices and interactions (called actions in basho ). A basho application is an instance of a class that is derived from bashoApp. The main loop is contained in bashoApp, shown in the following pseudo code: void bashoApp::mainloop() .... while( !_stop ) { handleCycles(); _inpDevManager-> handleInputDevices(); preRenderFunction(); _stop = _renderer-> renderScene(); postRenderFunction(); } ....

handleCycles() resolves conflicts from possible loops in object connections. handleInputDevices is called to request new input from connected devices (or remote devices). The preRenderFunction is a function that is derivable by the basho programmer. All commands inside this function are executed immediately before rendering of the scene. Similarly, the postRenderFunction contains commands executed immediately after rendering of the scene.

3. Conclusion and Future Work We presented basho, a new VE framework. It includes some concepts to increase the quality of virtual environments. In the future we plan to include scripting support. This is crucial for the rapid prototyping of VE applications and supplies unexperienced users with a simple tool for application development. For the enhancement of graphical render quality faster renderers are needed. We would like to include more fast global illumination algorithms into basho. Collaborative VEs are not yet supported by basho because we have to extend it to distributed scene graph and interaction concepts in the future. In addition the basho kernel is fairly portable. We plan to have basho running on the Microsoft Windows operating system in the future.

References B. Walter, G. D. and Parker, S. (1999). Interactive rendering using the render cache. In EG Workshop in Rendering 99. Bierbaum, A., Just, C., Hartling, P., Meinert, K., and Cruz-Neira, C. (2001). Vr juggler: A virtual platform for virtual reality application development. In IEEE Virtual Reality, pages 89–96. Bues, M., Blach, R., Stegmaier, S., Häfner, U., and Haselberger, H. H. F. (2001). Towards a scalable high performance application platform for immersive virtual environments. In Proceedings of Immersive Projection Technology and Virtual Environments, pages 165–174. Burns, D. Open producer. http://www.andesengineering.com/Producer/. Russell, L., Taylor, M., Hudson, T., Seeger, A., Weber, H., Juliano, J., and Helser, A. T. (2001). Vrpn: a device-independent, network-transparent vr peripheral system. Tramberend, H. (1999). Avocado: A distributed virtual reality framework. In IEEE Virtual Reality, pages 14–21. vibal (2003). Vibal: Der virtuelle bauleitstand. http://www.vibal.de.