SepMarinovNachev

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

Integrating a X-Server into a CAVE

In this SEP we have to integrate the data represented from a x-Server onto display into CAVE (Cave Automatic Virtual Environment). The data is to be represented as a texture mapped onto object(e.g. plane) in the virtual space. So the user can see a virtual desktop, placed somewhere in the virtual world. In a future SEP this desktop have to be made able to response to user interaction directly in the CAVE.

The PDF document about this project.

Screenshot from the application

Requirements

The texture have to offer high-resolution and at least movie-texture quality. A performant, reliable and flexible application is to be made, that runs on 10-Linux-box-cluster (BMW-Cave). The integration into OpenInventor (Coin3D), VRED (OpenSG) have to be implemented.

Capturing of X-Server-Image

The particular frames, which are rendered on a machine are captured via virtual framebuffer XServer (Xvfb ) from X11. It is part of the X11 implementation and offers the possibility, to redirect the frames to the memory.

Preparation of screen data distribution

Virtual FrameBuffer provides X-Window-Dump in xwd-format. This dump is distributed over the network to the Linux-Cluster, where it is mapped as a texture onto object(plane).

Data distribution

The X-Server-Protocol care about the data-distribution over the network. It is performant, because it sends only the "changes" of the dump and not the whole dump. To send the image-data to all 10 Linux-boxes in the cluster we use a proxy X-Server - Distributed Multi-head X-Server (Xdmx).

  • X-Protocol-Communication:
    X-Protocol-Communication

Data conversion

Before rendering the image-data is converted from a library into internal format, which is supported by the rendering software. That means, that the data can be passed immediate as texture parameter to OpenInventor? (Coin3D) and VRED (OpenSG?).

Rendering

The Coin3D-Implementation is extended with a object, that does not read image from file, but from shared memory, which can directly get rendered. There is a object in Coin3D, which implements the whole functionality of a texture - SoTexture2. We extends this object by a object(SoActiveTexture2), that can read directly, initialize and update its image-data from shmem. This object can be used as Dynamic Shared Library.

Because the OpenSG? texture-object allows the modifying of the internal buffer, we use this object directly and have not extended them.

  • Data-Deployment:
    Data-Deployment

Installation

Required Libraries and Packages

  • Xvfb
  • freeglut (glu)
  • X11_develop (XWD-File)
  • 3D-Rendering library: OpenSG, OpenInventor (Coin3D or IGS Inventor)

Deployment

  • Checkout sources from svnnavab:/svn/xincave (correct?, does it work?)
  • compile (??)

Execution

The Environment:

  • > Xvfb :1 -screen 0 1024x768x24 -shmem
  • copy shmem id
  • set LD_LIBRARY_PATH to /ust/local/lib/dbg and to the compiled libxgl
  • OpenSG: > ./texture2 <shmem id>

The Applications:

  • export DISPLAY variable to :1
  • Start your applications (e.g. kwin, kdesktop, glxgears, xine, ...)

SEP Organisational

Goals:
  • Render a X-Server output to a 2D plane in a scenegraph
  • Display scene-graph in a CAVE environment (10 hosts)

Prerequisites:

  • Skills in Programming in C/C++
  • Skills in distributed systems (Sockets, X-Protocol)

Desired Learning:

  • Improved Skills in Distributed Systems
  • Skills in performant network useage and realtime systems

-- MarcusToennis - 16 Jun 2005

Support This Project

ExampleX3D

CarWashExample

OctagaPluginTest

EmbeddedQuickTime


ProjectForm
Title: Integrating a X-Server into a CAVE
Abstract: In this SEP we have to integrate the data represented from a x-Server onto display into CAVE-application. The data is to be represented as a texture mapped onto object(e.g. plane) in the virtual space. So the user can see a virtual desktop, placed somewhere in the virtual world. In a future SEP(Dimitar Marinov) this desktop have to be made able to response to user interaction directly in the CAVE.
Student: Georgi Nachev , Dimitar Marinov
Director: Gudrun Klinker
Supervisor: Marcus Tönnis
Type: SEP
Area:  
Status: finished
Start: 2004/10/01
Finish: 2005/04/01

I Attachment sort Action Size Date Who Comment
X-Protokoll-Kommunikation.jpg manage 57.3 K 04 Aug 2005 - 15:17 GeorgiNachev X-Protocol-Communication
Deployment.jpg manage 27.1 K 04 Aug 2005 - 15:22 GeorgiNachev Data-Deployment
XinCAVE.png manage 233.0 K 02 Sep 2005 - 08:03 GeorgiNachev Screenshot from the application
nistlogo.x3d manage 9.3 K 14 Oct 2005 - 11:27 GeorgiNachev X3D-Example File
example_x3d.htm manage 3.9 K 05 Nov 2005 - 12:04 GeorgiNachev Link to X3D-Example

Edit | Attach | Refresh | Diffs | More | Revision r1.30 - 28 Nov 2008 - 10:41 - MarcusToennis