• Keine Ergebnisse gefunden

Virtuelle Realität und Simulation - Übung 1

N/A
N/A
Protected

Academic year: 2021

Aktie "Virtuelle Realität und Simulation - Übung 1"

Copied!
25
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Virtuelle Realität und Simulation - Übung 1

Einführung

Prof. Dr. Gabriel Zachmann (zach@in.tu-clausthal.de) David Mainzer (dm@tu-clausthal.de)

Institut für Informatik

7. November 2008

(2)

Gliederung

Allgemeine Informationen Übungsablauf

Software – Viewer/Editor VRML-Viewer

Editor

Programmiersprachen — EAI Manipulation Javascript

Java Debugging

Scenegraph

Ihre Aufgabe

(3)

Gliederung

Allgemeine Informationen Übungsablauf

Software – Viewer/Editor VRML-Viewer

Editor

Programmiersprachen — EAI Manipulation Javascript

Java Debugging

Scenegraph

Ihre Aufgabe

(4)

Übungsablauf

Zeiten

Alle 2 Wochen Freitags im IFI Raum 202 (Powerwall) Übungsblatt erscheint alle 2 Wochen

Übungen

Vorstellen des neuen Übungsblattes

Abgabe des letzten Übungsblattes (inkl. kurzer Erläuterung)

(5)

Gliederung

Allgemeine Informationen Übungsablauf

Software – Viewer/Editor VRML-Viewer

Editor

Programmiersprachen — EAI Manipulation Javascript

Java Debugging

Scenegraph

Ihre Aufgabe

(6)

VRML-Viewer

Auf der VL-Website finden 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

(7)

Editor

Hier sollte jeder seinen eigenen Favoriten wählen (rein Text basiert oder mit grafischer Oberfläche)

X3D-Edit scheint ein recht ausgereifter Editor zu sein Auch Notepad / Kwrite ...

Selber nutze ich vim / gvim (existiert Syntax-Highlighting)

(8)

Gliederung

Allgemeine Informationen Übungsablauf

Software – Viewer/Editor VRML-Viewer

Editor

Programmiersprachen — EAI Manipulation Javascript

Java Debugging

Scenegraph

Ihre Aufgabe

(9)

Javascript — ECMAScript (ECMA 262)

Häufig für DOM Scripting in Browsern eingesetzt Wird zur Laufzeit interpretiert

Von allen aktuellen Browsern unterstützt – eventuell aus

Sicherheitsgründen deaktiviert

(10)

Java

Java – weitverbreitet objektorientierte Programmiersprache (sollte jedem bekannt sein)

Entwickelt von Sun Microsystems

Muss vorab in ByteCode übersetzt werden

Von InstantReality unterstützt

(11)

Hello World – Vorlage

# VRML V2 . 0 u t f 8

Background { s k y C o l o r 0 0 1 } 5 Transform {

t r a n s l a t i o n 0 0 0 c h i l d r e n [

DEF SCHRIFT Transform {

c h i l d r e n [

10 Transform {

s c a l e 0.2 0.2 0.2 t r a n s l a t i o n 0.2 0 0 c h i l d r e n [

I n l i n e { u r l " penguine . wrl " }

15 ]

} Shape {

geometry Text { s t r i n g [ " H e l l o World " ] } }

20 ]

} ] }

(12)

Hello World – Abschnitt 2 in Java

DEF ROTOTATOR S c r i p t {

eventIn S F F l o a t s e t _ f r a c t i o n

20

eventOut S F R o t a t i o n value_changed u r l " h e l l o _ j a v a . c l a s s "

}

DEF TIMER TimeSensor {

25

c y c l e I n t e r v a l 10

loop TRUE

}

ROUTE TIMER . f r a c t i o n _ c h a n g e d TO ROTOTATOR . s e t _ f r a c t i o n

30

ROUTE ROTOTATOR . value_changed TO SCHRIFT . s e t _ r o t a t i o n

Wichtig:

– url hier hello_java.class

– eventIn und eventOut

(13)

Hello World – JavaFile hello_java.java

import vrml . f i e l d .∗; import vrml . node .∗;

import vrml .∗;

5 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 ( Event e ) { i f ( e . getName ( ) . e q u a l s ( " s e t _ f r a c t i o n " ) ) { 10 / / System . out . p r i n t l n (" s i l l y debug message " ) ;

r o t a t i o n [ 0 ] = 0 . 0 f ; r o t a t i o n [ 1 ] = 1 . 0 f ; r o t a t i o n [ 2 ] = 0 . 0 f ;

r o t a t i o n [ 3 ] = ( ( C o n s t S F F l o a t ) e . g e t V a l u e ( ) ) . g e t V a l u e ( ) 15 ∗2.0 f∗(f l o a t) Math . P I ;

S F R o t a t i o n value_changed =( S F R o t a t i o n ) getEventOut ( " 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)

(14)

Hello World – Abschnitt 2 in JavaScript

DEF ROTOTATOR S c r i p t {

eventIn S F F l o a t s e t _ f r a c t i o n

20

eventOut S F R o t a t i o n value_changed u r l " h e l l o _ j a v a s c r i p t . j s "

}

DEF TIMER TimeSensor {

25

c y c l e I n t e r v a l 10

loop TRUE

}

ROUTE TIMER . f r a c t i o n _ c h a n g e d TO ROTOTATOR . s e t _ f r a c t i o n

30

ROUTE ROTOTATOR . value_changed TO SCHRIFT . s e t _ r o t a t i o n

Wichtig:

– url hier hello_javascript.js

– eventIn und eventOut

(15)

Hello World – JavascriptFile hello_javascript.js

f u n c t i o n s e t _ f r a c t i o n ( v a l u e ) { value_changed [ 0 ] = 0 ; value_changed [ 1 ] = 1 ; value_changed [ 2 ] = 0 ;

5 value_changed [ 3 ] = v a l u e∗2.0∗Math . P I ; }

Keine Kompilierung notwendig!

Kann auch direkt in das *.wrl File geschrieben werden

(16)

Gliederung

Allgemeine Informationen Übungsablauf

Software – Viewer/Editor VRML-Viewer

Editor

Programmiersprachen — EAI Manipulation Javascript

Java Debugging

Scenegraph

Ihre Aufgabe

(17)

Debugging – Javascript (benötigt Konsole)

DEF Debug S c r i p t {

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 u r l [ " j a v a s c r i p t :

5

f u n c t i o n s e t _ c o o r d ( value , timestamp ) { p r i n t ( ’Debug : coord = ’ + v a l u e + ’ \ n ’ ) ; }

f u n c t i o n s e t _ f l o a t ( value , timestamp ) { p r i n t ( ’Debug : f l o a t = ’ + v a l u e + ’ \ n ’ ) ;

10

} "

] }

Definiere 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

(18)

Debugging – Logger (nur InstantReality)

DEF Log Logger {

l e v e l 3 # 0 . . .

l o g F i l e " " # d e f a u l t = c o n s o l e }

Definiere 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 TO Log . w r i t e

(19)

InstantReality – Scenegraph

InstantReality kann Knoten der Szene anzeigen

Müssen dafür Definiert 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

(20)
(21)
(22)
(23)
(24)
(25)

Gliederung

Allgemeine Informationen Übungsablauf

Software – Viewer/Editor VRML-Viewer

Editor

Programmiersprachen — EAI Manipulation Javascript

Java Debugging

Scenegraph

Ihre Aufgabe

Referenzen

ÄHNLICHE DOKUMENTE

§  Wie viele Sinne werden von der realen Welt abgeschirmt. §  Konsistenz

§  Felder mit einem Namen zzz, die den Access-Type exposedField haben, haben implizit den Namen zzz_changed, wenn sie als Ausgabe-Feld verwendet werden, und den Namen set_zzz,

Zachmann Virtuelle Realität und Simulation – WS 11/12 VR-Displays & Stereo-Rendering 28.. C G C C

§ Wähle uniform zufälliges Element aus Buffer, entferne alle Elemente mit derselben Farbe. § Damit: häufige Farbe wird häufiger ausgewählt, über die Zeit ergibt sich

- die Algorithmen, die die Partikel bewegen und rendern.. Zachmann Virtuelle Realität und Simulation — WS 11/12 Partikelsysteme 15.. §  Stochastischer

2.  Für jedes Polygon am Rand: generiere gespiegelten Beam, falls Polygon getroffen, und schneide Beam ab. 3.  Falls etwas "übrigbleibt" vom Beam, beginne wieder von vorne

  Wie viele Sinne werden vom Computer gefüttert.   Wie viele Sinne werden von der realen

  Problem: Fehler kostet viele Millionen, evtl. muss ganze Fertigungsstraße