Titel:

VRML & Java

Startseite
Artikelliste
english
  
ISBN: 3828710824   ISBN: 3828710824   ISBN: 3828710824   ISBN: 3828710824 
 
  Wir empfehlen:       
 
VRML & Java

EAI - External Authoring Interface

Mittels des EAI ist es möglich den Inhalt eines VRML-Browsers innerhalb einer HTML-Seite über ein in dieselbe Seite eingebettetes Applet zu steuern, d.h. man verändert die VRML-Welt durch ein externes Interface. So kann die Welt dynamisch von außen zur Laufzeit erweitert / verändert werden (Erschaffung neuer Knoten / Ereignisse etc.).

Das EAI ist durch eine Plug-In-Architektur des WWW-Browsers mit dem VRML-Browser verbunden.

HTML-Datei

<HTML>
  <BODY>
     <APPLET CODE="test.class" MAYSCRIPT>
     </APPLET>
     <EMBED SRC="simple.wrl" WIDTH="300" HEIGHT="200">
  </BODY>
<HTML>

Die HTML-Datei enthält das eingebettete Applet und die VRML-Datei.

Über den Zusatz MAYSCRIPT im Applet-Tag erhält das Applet eine Instanz des vrml-Plug-In-Browsers. So ist es dem Applet möglich eine Instanz des Plug-In-Objektes zu erzeugen.

Applet

Um das externe Applet von Java aus realisieren zu können, werden folgende Klassen benötigt.

VRML-Pakete

  • vrml.external.Browser;
  • vrml.external.Node;
  • vrml.external.field.*;
  • vrml.external.exception.*;

Die in den Paketen verfügbaren Klassen bilden eine Erweiterung der Applet-Klasse. Um Events aus der VRML-Welt zu erhalten, kann zusätzlich das EventOutObserver-Interface implementiert werden.

Zu allererst muß eine Instanz vom Browser erschaffen werden.

Browser b = Browser.getBrowser();

Nachdem diese Verbindung aufgebaut ist, kann die VRML-Welt verändert werden. Es ist möglich auf Knoten über die Methode getNode(...) (durch Angabe des mit DEF definierten Knoten-Namens) zuzugreifen (falls der Knoten nicht gefunden wird, wird NULL zurückgeliefert).

Node TransformKnoten = b.getNode("TN");  //  DEF TN Transform { translation ....}

Existiert eine Referenz auf einen Knoten, so kann auf die Felder eventIn, eventOut und exposedField über die Methoden getEventIn(...) und getEventOut(...) zugegriffen werden (ebenfalls über den Namen). Da die Rückgabewerte jedoch für jeden Knoten unterschiedlich sind, muß das Feld vorher per cast in den richtigen Typ umgewandelt werden, bevor der Inhalt mit getValue() gelesen oder mit setValue(...) verändert werden kann.

EventInSFVec3f  TR = (EventInSFVec3f)TransformKnoten.getEventIn("translation");
float neuePosition[] = { 0 , 1 , 1 };
TR.setValue(neuePosition);

Um kontinuierlich Events empfangen zu können, muß folgendes getan werden:

  • das Interface EventOutObserver muß implementiert werden
  • es muß eine callback-Methode, die für die Verarbeitung der Ereignisse verantwortlich ist, geschrieben werden
  • es ist nötig eine neue Instanz des Observers zu erzeugen
  • die Events, auf die zugegriffen werden soll, müssen über die advise-Methode registriert werden

Beispiel EventOutObserver

class X implements EventOutObserver {

    public void callback (EventOut value, double timeStamp, Object data) { ... }

}

 

class Y {

    Y ( ) {

        Browser b = Browser.getBrowser();
        Node TouchSensorKnoten = b.getNode("TSK");

        X observe = new X();

        TouchSensorKnoten.getEventOut ( isOver ).advise (observe, null);

        }

 

Beispiel EAI

 

 

Index

  
Das Einsteigerseminar VRML
von Rolf Däßler
Siehe auch:
Lineare Algebra: Eine Einführung
Schulprofi mit Corel Draw! Graphics Suite X3. CD-ROM für Windows XP/2000/NT/98
von Co.Tec (in Software)
Sonstige Artikel:
Männer und andere Katastrophen
von Kerstin Gier
Tomte Tummetott
 
   
 
     

Zurück zu Themenseiten:
ScientificPublication.com/Startseite/Informatik/Programmieren
StudyPaper.com/Startseite/Computer/Internet
StudyPaper.com/Startseite/Computer

Das Setzen von Verweisen (Links) auf diese Seite ist gestattet und bedarf keine vorherige Absprache.

Artikelliste:
Scalable Vector Graphics (automatische Übersetzung)
Scalable Vector Graphics 1.1 (automatische Übersetzung)
   
  Startseite  |  english  |  Bookmark setzen  |  Webseite weiterempfehlen  |  Copyright ©  |  Impressum