Beim kooperativen Arbeiten geht es darum, zwei oder mehreren räumlich
getrennten Anwendern die Möglichkeit zu geben, eine einheitliche
Sicht auf das Modell zu haben. Gleichzeitig kann dann zum Beispiel am
Telefon über Bewertungen diskutiert werden, ohne dass eine der
beteiligten Personen ihren Arbeitsplatz verlassen muss.
Hierbei kann zwischen folgenden Szenerien unterschieden werden:
Für beide Szenerien wurden im crashViewer CORBA-basierte Lösungsansätze implementiert. Während das erste Szenario erfordert, dass auf den Rechnern aller Teilnehmer sowohl die Applikation crashViewer als auch die zu visualisierenden Daten zur Verfügung stehen, werden für das zweite Szenario auf der Client-Seite (Zuschauer) lediglich eine JAVA-Applikation oder ein HTML-Browser benötigt.
Szenario 1: Der SessionServer verbindet die
crashViewer untereinander und steuert die Kommunikation mit
Hilfe eines Tokens, das die Interaktionskontrolle erlaubt. Events oder
Kameraparameter werden zwischen den crashViewer-Instanzen
direkt ausgetauscht.
Im Szenario 1 startet der initiierende Anwender zunächst eine
steuernde Applikation, den SessionServer. Dieser stellt seine
eigene CORBA-Referenz zur Verfügung und erlaubt nun einem
crashViewer, eine neue Sitzung zu eröffnen oder sich bei
einer bereits bestehenden Sitzung anzumelden. Die Aufgabe des
SessionServer besteht darin, die teilnehmenden
crashViewer miteinander zu verbinden und das Token zu
verteilen, das die Interaktion mit dem dargestellten Modell erlaubt.
Der crashViewer speichert sich außer der Referenz auf den
SessionServer auch die Referenzen aller anderer an der Sitzung
teilnehmenden crashViewer.
Zu jedem Zeitpunkt kann nur ein crashViewer die Steuerung
übernehmen. Wird zum Beispiel der Augpunkt geändert, dann überträgt
der steuernde crashViewer die Kameraparameter direkt an alle
anderen Teilnehmer. Das Token, das die Steuerung erlaubt, wird von dem
SessionServer verwaltet und zugeteilt. Es kann unter den
teilnehmenden crashViewer Instanzen ausgetauscht werden;
somit ist der Wechsel der Interaktionskontrolle möglich.
Das Setzen von Markierungspfeilen am Modell erleichtert die
Kommunikation. Sofern die zu Modelldaten nicht jedem Teilnehmer zur
Verfügung stehen, kann der Cosmo3D-Szenengraph über die
CORBA-Schnittstelle von dem steuernden crashViewer
angefordert und übertragen werden.
Szenario 2: Der crashViewer stellt jeweils
die gezeichneten Bilddaten an einem Port zur Verfügung, welcher über
eine Socket-Verbindung ausgelesen werden kann. Um eine höhere
Übertragungsgeschwindigkeit gewährleisten zu können, werden
Kompressionsverfahren zur Übertragung der Bilder verwendet.
Das Szenario 2 erlaubt einem aktiven
crashViewer-Anwender, das dargestellte Modell in Form von
kodierten Bildinformationen auf einem Socket zur Verfügung zu stellen.
Die passiven Teilnehmer der Sitzung können dann mit Hilfe einer
JAVA-Applikation die komprimierten Bilddaten von dem Socket lesen,
dekodieren und in einem graphikfähigen Fenster darstellen. Zusammen
mit einem JAVA-Applet wurde eine HTML-Seite erstellt, die zum Beispiel
mit dem Netscape geladen werden kann und das im crashViewer
gezeichnete Bild darstellt.
Auf Grund der großen Datenmengen, die von der Größe des
Darstellungsbereiches und dem gewählten Kompressionsverfahren
abhängen, und der Verbindungsbandbreite kommt es hier zu geringeren
Bildraten auf der Empfängerseite. Dennoch erlaubt diese Technik einen
gewissen Grad von Kooperation mit sehr geringen Anforderungen auf der
Client-Seite.
Hier wird jeweils das aktuell im crashViewer dargestellte
Bild komprimiert, über eine Socket-Verbindung zum JAVA-Applet, das
in einem Webbrowser läuft, transferiert, dort dekomprimiert und
schließlich dargestellt.