Virtuelle Realität und Simulation Übung 1 Einführung David Mainzer ([email protected]) Prof. Dr. Gabriel Zachmann ([email protected]) Institut für Informatik 7. Oktober 2011 Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 1 Gliederung Allgemeine Informationen Übungsablauf Software Viewer/Editor VRML-Viewer Editor Programmiersprachen EAI Manipulation Javascript Java Debugging Scenegraph Ihre Aufgabe Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 2 Gliederung Allgemeine Informationen Übungsablauf Software Viewer/Editor VRML-Viewer Editor Programmiersprachen EAI Manipulation Javascript Java Debugging Scenegraph Ihre Aufgabe Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 3 Übungsablauf Zeiten Jede Woche 5 Übungsblätter Übungen Wenn gewünscht Vorstellen des neuen Übungsblattes Abgabe des letzten Übungsblattes (inkl. kurzer Erläuterung) Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 4 Gliederung Allgemeine Informationen Übungsablauf Software Viewer/Editor VRML-Viewer Editor Programmiersprachen EAI Manipulation Javascript Java Debugging Scenegraph Ihre Aufgabe Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 5 VRML-Viewer Auf der VL-Website nden Sie Links zu diversen Viewern InstantReality (Windows / OSX / Linux) FreeWRL (Linux / OSX (SourceCode verfügbar)) Cortona dies ist ein kommerzielles Plugin für Browser Rate zu InstantReality (bisher kein ebuild für Gentoo (amd64)) Entwickelt durch Fraunhofer IGD Besitzt eine Art Debug-Konsole (siehe Anhang) Unterstützt Java und .Net für EAI (External Authoring Interface) Manipulation Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 6 Editor Hier sollte jeder seinen eigenen Favoriten wählen (rein Text basiert oder mit grascher Oberäche) X3D-Edit scheint ein recht ausgereifter Editor zu sein Auch Notepad / Kwrite ... Selber nutze ich vim / gvim (existiert Syntax-Highlighting) Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 7 Gliederung Allgemeine Informationen Übungsablauf Software Viewer/Editor VRML-Viewer Editor Programmiersprachen EAI Manipulation Javascript Java Debugging Scenegraph Ihre Aufgabe Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 8 Javascript ECMAScript (ECMA 262) Häug für DOM Scripting in Browsern eingesetzt Wird zur Laufzeit interpretiert Von allen aktuellen Browsern unterstützt eventuell aus Sicherheitsgründen deaktiviert Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 9 Java Java weitverbreitet objektorientierte Programmiersprache (sollte jedem bekannt sein) Entwickelt von Sun Microsystems gehört nun Oracle Muss vorab in ByteCode übersetzt werden Von InstantReality unterstützt Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 10 Hello World Vorlage # VRML V2 . 0 u t f 8 Background 5 Transform { skyColor 0 0 1 } { translation children DEF 0 0 0 [ SCHRIFT Transform children [ Transform 10 scale { { 0.2 0.2 children 0 0 [ Inline 15 0.2 −0.2 translation { url " penguine . w r l " } ] } Shape { geometry Text { string [ " Hello World " ] } } 20 ] } ] } Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 11 Hello World Abschnitt 2 in Java DEF 20 ROTOTATOR eventIn eventOut url Script { SFFloat set_fraction SFRotation value_changed " hello_java . class " } DEF 25 TIMER loop } 30 TimeSensor cycleInterval ROUTE ROUTE TRUE { 10 TIMER . f r a c t i o n _ c h a n g e d ROTOTATOR . value_changed TO ROTOTATOR . s e t _ f r a c t i o n TO SCHRIFT . s e t _ r o t a t i o n Wichtig: url hier hello_java.class eventIn und eventOut Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 12 Hello World JavaFile hello_java.java import import import 5 vrml . f i e l d . ∗ ; vrml . node . ∗ ; vrml . ∗ ; public c l a s s h e l l o _ j a v a extends vrml . node . S c r i p t f l o a t [ ] r o t a t i o n =new f l o a t [ 4 ] ; public void p r o c e s s E v e n t ( E v e n t e ) { i f ( e . getName ( ) . e q u a l s ( " s e t _ f r a c t i o n " ) ) { { / / System . out . p r i n t l n (" s i l l y debug message " ) ; 10 rotation [0]=0.0 f ; rotation [1]=1.0 f ; rotation [2]=0.0 f ; r o t a t i o n [ 3 ] = ( ( ConstSFFloat ) e . getValue ( ) ) . getValue ( ) ∗ 2.0 f ∗ ( f l o a t ) Math . P I ; 15 SFRotation value_changed = ( S F R o t a t i o n ) g e t E v e n t O u t ( " value_changed " ) ; value_changed . s e t V a l u e ( r o t a t i o n ) ; } } 20 } Kompileren einer *.java Datei (benötigt jdk): javac -classpath PATH/TO/instantreality.jar hello_java.java (default: INSTALL/InstantPlayer/bin) Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 13 Hello World Abschnitt 2 in JavaScript DEF 20 ROTOTATOR eventIn eventOut Script url { SFFloat set_fraction SFRotation value_changed " hello_javascript . js " } DEF 25 TIMER loop } 30 TimeSensor cycleInterval ROUTE ROUTE TRUE { 10 TIMER . f r a c t i o n _ c h a n g e d ROTOTATOR . value_changed TO ROTOTATOR . s e t _ f r a c t i o n TO SCHRIFT . s e t _ r o t a t i o n Wichtig: url hier hello_javascript.js eventIn und eventOut Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 14 Hello World JavascriptFile hello_javascript.js function s e t _ f r a c t i o n ( value ) { value_changed [ 0 ] = 0 ; value_changed [ 1 ] = 1 ; value_changed [ 2 ] = 0 ; value_changed [ 3 ] = v a l u e ∗ 2.0 ∗ Math . P I ; 5 } Keine Kompilierung notwendig! Kann auch direkt in das *.wrl File geschrieben werden Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 15 Gliederung Allgemeine Informationen Übungsablauf Software Viewer/Editor VRML-Viewer Editor Programmiersprachen EAI Manipulation Javascript Java Debugging Scenegraph Ihre Aufgabe Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 16 Debugging Javascript (benötigt Konsole) DEF Debug Script { eventIn MFVec3f s e t _ c o o r d eventIn S F F l o a t s e t _ f l o a t url [ " javascript : function 5 print ( set_coord ( ' Debug : value , coord = timestamp ' + value + ) { '\n ' ); } function print ( set_float ( ' Debug : value , float = timestamp ' + value + ) { '\n ' ); }" 10 ] } Deniere neuen Knoten Debug Verwende ROUTE um Ereignisse bekannt zu geben ROUTE ∗∗∗∗∗ . f r a c t i o n _ c h a n g e d TO Debug . s e t _ f l o a t ROUTE ∗∗∗∗∗ . value_changed TO Debug . s e t _ c o o r d Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 17 Debugging Logger ( DEF Log Logger level 3 logFile "" { nur InstantReality) # 0 ... # default = console } Deniere neuen Knoten Log Verwende ROUTE um Ereignisse an ihn zu senden Timestamp wird automatisch hinzugefügt (je nach Log-Level) ROUTE ∗∗∗∗∗ . f r a c t i o n _ c h a n g e d Autor: David Mainzer Institut für Informatik TO Log . w r i t e Virtuelle Realität und Simulation - Übung 1 18 InstantReality Scenegraph InstantReality kann Knoten der Szene anzeigen Müssen dafür Deniert werden (Verwenden Sie sinnvolle Bezeichner) ROUTE ∗∗∗∗∗ . f r a c t i o n _ c h a n g e d TO Log . w r i t e Eigenschaften der Knoten können auch verändert werden Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 19 Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 20 Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 21 Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 22 Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 23 Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 24 Gliederung Allgemeine Informationen Übungsablauf Software Viewer/Editor VRML-Viewer Editor Programmiersprachen EAI Manipulation Javascript Java Debugging Scenegraph Ihre Aufgabe Autor: David Mainzer Institut für Informatik Virtuelle Realität und Simulation - Übung 1 25