Willkommen zu Vorlesung+Praktikum. Graphische Datenverarbeitung

Größe: px
Ab Seite anzeigen:

Download "Willkommen zu Vorlesung+Praktikum. Graphische Datenverarbeitung"

Transkript

1 Einführung Willkommen zu Vorlesung+Praktikum Graphische Datenverarbeitung

2 Einführung zur Person: Harald Gläser Studium und Promotion als Physiker Zweitstudium Informatik Berufstätigkeit bei Philips Research in der Modellierung von physiko-chemischen Systemen Seit an der FH Furtwangen Sprechstunde: Donnerstags 15:00-15:45 C209

3 Einführung zur Vorlesung Fragen gleich stellen! Folien gibt`s unter: 2 Scheine: a) Klausur b) Praktikum: I) Alle Aufgaben müssen von jedem selbständig bearbeitet werden (kein leeres Blatt, II) 5 von 5 Aufgaben müssen bestanden werden.

4 Einführung (im - UFO System anmelden!!) Link zu UFO

5 Literatur: Die Vorlesung orientiert sich an dem Java3D Tutorial (Tutorial und Examples runterladen In C209 kann man sich ein Exemplar ausleihen ) Lutz, Emmel, Java3d - Der Grundkurs, Verlag Harri Deutsch J. Encarnação et. al., Graphische Datenverarbeitung 1, R. Oldenbourg Verlag München Wien eine Java3D community Seite

6 bitte auf eigenen Rechnern installieren: Download java3d 1.3 (DirectX) SDK (Vorher muss Java2 installiert sein) Abgabe auf Diskette

7 mögliche Vorlesungsverlegung: 1 Block früher (ab 14:00 (oder 13:00))?

8

9 Einführung Praktikum Abgabetermine alle 3 Wochen Abgabe einer Praktikumsaufgabe - selbständiges Lösen der Aufgaben von jedem- jede /r muss selbstgeschriebenen Code abgeben / vorzeigen - keine Anwesenheitspflicht im Praktikum = Betreuung auf Anfrage (z.b. ) - nicht länger als 9 Zeitstunden mit den Aufgaben verbringen!

10 Einführung Klausurtermin: :30 Raumlage

11 Ziele der Vorlesung Knapper Überblick über grundlegende Paradigmen der graphischen Datenverarbeitung Einführung in Java3D Die Zusammenstellung der Themen erhebt keinen Anspruch auf Vollständigkeit

12

13

14

15

16 Einführung Was ist graphische Datenverarbeitung?? Computer Graphik = Graphische Datenverarbeitung Definition 1 (ISO) Methoden und Techniken für die Konvertierung von Daten von und zu (?) einer graphischen Darstellung mit Hilfe eines Computers Teilgebiete: generative Computergraphik Bildverarbeitung Bildanalyse Beschreibung Bild Bild Bild Bild Beschreibung

17 Einführung Definition 2 Computer Graphik = generative Computer Graphik

18 Einführung Generative Computer Graphik Modell Objekte, Prozeduren, Datenstrukturen nichtgraphische Bestandteile graphische Objekte Linie, Fläche, Körper, Texte,... geometrische Daten Darstellung Koordinaten, Gleichungen Daten und Verfahren für Farbe, Textur, Licht Bild, Zeichnung

19 Anwendungen der graphischen DV Präsentationsgraphik Kartographie GIS geographische Informationssysteme Konstruktion (CAD) Prozeßüberwachungs- und leitsysteme Simulation - Visualisierung der Resultate Spiele Computergenerierte Filme Computerkunst Virtuelle Realität

20 Grundbegriffe Rastergraphik Bild besteht aus farbigen Punkten, an (gleichmäßig angeordneten) Koordinaten Pixel = picture element Beispiel für nicht-raster Graphik? Auflösung!= Adressierbarkeit Ein Pixel umfaßt mehrere elementare Pixel CRT (cathode ray tube - Braun sche Röhre) LCD (liquid crystal display)

21 Objekt (Dreieck-Vektorgraphik) Darstellung (Dreieck-Rastergaphik)

22 Pixel können überlappen - Vorteil?

23 Rasterkonversion von Linien Linien sollen gerade aussehen Exakte Lage der Endpunkte gleichmäßige Helligkeit schneller Algorithmus (Integerarithmetik)

24 Bresenham Algorithmus Vorraussetzung: Linie von (x1, y1) nach (x2,y2) ganzzahlige Pixelkoordinaten Steigung der Linien zwischen 0 und 1 (Warum ist das keine Einschränkung?) ideale Linie dy y = y1; dy = (y2-y1)/(x2-x1); s=0; for (x von x1 bis x2) { writepixel(x,y,value); s = s+dy if (s>0.5) { y = y +1; s = s - 1; } } s x=i x=i+1 Ganzahlige Variante: erweitere s und dy mit 2*(x2-x1)

25 Berücksichtigt der Bresenham Algorithmus tatsächlich nur die Punkte mit dem kürzesten Abstand zur Ideal Linie?

26 Java3D vs. OpenGL OpenGL Java3D Allgemeiner Industriestandard für 3D Graphik Proprietäres (aber kostenfreies) Produkt der Firma Sun auf Basis Java prozedural objektorientiert low level high level

27 Microsoft (win32) Direct3D / DirectX Programm, das auf dem MS Betriebssystem läuft (Funktionalität vergleichbar mit OpenGl) Java C / Java Java3D OpenGL DirectX Betriebssystem Graphikkarte

28 WWW (Web3D Konsortium) VRML Virtual Reality Modeling Language Viewer beruhen auf OpenGL oder D3D VRML ist eine Datei Beschreibungssprache Java3D ist eine API (Application Programming Interface)

29 Praktikum: Erklärung der neuen Aufgabe

30 Einführung Willkommen zu Vorlesung+Praktikum Graphische Datenverarbeitung

31 Einführung zur Person: Harald Gläser Studium und Promotion als Physiker Zweitstudium Informatik Berufstätigkeit bei Philips Research in der Modellierung von physiko-chemischen Systemen Seit an der FH Furtwangen Sprechstunde: Donnerstags 15:00-15:45 C209

32 Einführung zur Vorlesung Fragen gleich stellen! Folien gibt`s unter: 2 Scheine: a) Klausur b) Praktikum: I) Alle Aufgaben müssen von jedem selbständig bearbeitet werden (kein leeres Blatt, II) 5 von 5 Aufgaben müssen bestanden werden.

33 Einführung (im - UFO System anmelden!!) Link zu UFO

34 Literatur: Die Vorlesung orientiert sich an dem Java3D Tutorial (Tutorial und Examples runterladen In C209 kann man sich ein Exemplar ausleihen ) Lutz, Emmel, Java3d - Der Grundkurs, Verlag Harri Deutsch J. Encarnação et. al., Graphische Datenverarbeitung 1, R. Oldenbourg Verlag München Wien eine Java3D community Seite

35 bitte auf eigenen Rechnern installieren: Download java3d 1.3 (DirectX) SDK (Vorher muss Java2 installiert sein) Abgabe auf Diskette

36 mögliche Vorlesungsverlegung: 1 Block früher (ab 14:00 (oder 13:00))?

37

38 Einführung Praktikum Abgabetermine alle 3 Wochen Abgabe einer Praktikumsaufgabe - selbständiges Lösen der Aufgaben von jedem- jede /r muss selbstgeschriebenen Code abgeben / vorzeigen - keine Anwesenheitspflicht im Praktikum = Betreuung auf Anfrage (z.b. ) - nicht länger als 9 Zeitstunden mit den Aufgaben verbringen!

39 Einführung Klausurtermin: :30 Raumlage

40 Ziele der Vorlesung Knapper Überblick über grundlegende Paradigmen der graphischen Datenverarbeitung Einführung in Java3D Die Zusammenstellung der Themen erhebt keinen Anspruch auf Vollständigkeit

41

42

43

44

45 Einführung Was ist graphische Datenverarbeitung?? Computer Graphik = Graphische Datenverarbeitung Definition 1 (ISO) Methoden und Techniken für die Konvertierung von Daten von und zu (?) einer graphischen Darstellung mit Hilfe eines Computers Teilgebiete: generative Computergraphik Bildverarbeitung Bildanalyse Beschreibung Bild Bild Bild Bild Beschreibung

46 Einführung Definition 2 Computer Graphik = generative Computer Graphik

47 Einführung Generative Computer Graphik Modell Objekte, Prozeduren, Datenstrukturen nichtgraphische Bestandteile graphische Objekte Linie, Fläche, Körper, Texte,... geometrische Daten Darstellung Koordinaten, Gleichungen Daten und Verfahren für Farbe, Textur, Licht Bild, Zeichnung

48 Anwendungen der graphischen DV Präsentationsgraphik Kartographie GIS geographische Informationssysteme Konstruktion (CAD) Prozeßüberwachungs- und leitsysteme Simulation - Visualisierung der Resultate Spiele Computergenerierte Filme Computerkunst Virtuelle Realität

49 Grundbegriffe Rastergraphik Bild besteht aus farbigen Punkten, an (gleichmäßig angeordneten) Koordinaten Pixel = picture element Beispiel für nicht-raster Graphik? Auflösung!= Adressierbarkeit Ein Pixel umfaßt mehrere elementare Pixel CRT (cathode ray tube - Braun sche Röhre) LCD (liquid crystal display)

50 Objekt (Dreieck-Vektorgraphik) Darstellung (Dreieck-Rastergaphik)

51 Pixel können überlappen - Vorteil?

52 Rasterkonversion von Linien Linien sollen gerade aussehen Exakte Lage der Endpunkte gleichmäßige Helligkeit schneller Algorithmus (Integerarithmetik)

53 Bresenham Algorithmus Vorraussetzung: Linie von (x1, y1) nach (x2,y2) ganzzahlige Pixelkoordinaten Steigung der Linien zwischen 0 und 1 (Warum ist das keine Einschränkung?) ideale Linie dy y = y1; dy = (y2-y1)/(x2-x1); s=0; for (x von x1 bis x2) { writepixel(x,y,value); s = s+dy if (s>0.5) { y = y +1; s = s - 1; } } s x=i x=i+1 Ganzahlige Variante: erweitere s und dy mit 2*(x2-x1)

54 Berücksichtigt der Bresenham Algorithmus tatsächlich nur die Punkte mit dem kürzesten Abstand zur Ideal Linie?

55 Java3D vs. OpenGL OpenGL Java3D Allgemeiner Industriestandard für 3D Graphik Proprietäres (aber kostenfreies) Produkt der Firma Sun auf Basis Java prozedural objektorientiert low level high level

56 Microsoft (win32) Direct3D / DirectX Programm, das auf dem MS Betriebssystem läuft (Funktionalität vergleichbar mit OpenGl) Java C / Java Java3D OpenGL DirectX Betriebssystem Graphikkarte

57 WWW (Web3D Konsortium) VRML Virtual Reality Modeling Language Viewer beruhen auf OpenGL oder D3D VRML ist eine Datei Beschreibungssprache Java3D ist eine API (Application Programming Interface)

58 Praktikum: Erklärung der neuen Aufgabe

59 Java3D Java3D Application Programming Interface Graphische Datenverarbeitung

60 Java3D Begriffsbestimmungen visual object: Objekt im scene graph (z.b. Würfel oder Kugel) (auch, wenn es im Augenblick nicht sichtbar ist, d.h. nicht im view ) object: Instanz einer Klasse content: alle visual objects eines scene graph Scene Graph Knoten: Instanzen von Java3D Klassen Kanten: Beziehungen zwischen den Knoten

61 Java3D Beziehungen zwischen Knoten im scene graph a) Eltern - Kind innerer Knoten hat beliebig viele Kinder aber nur einen Vater, Blatt Knoten haben keine Kinder b) Referenz Assoziation zwischen einem NodeComponent Objekt und einem Knoten des scene graph.

62 Java3D Scene Graph Tree Die Eltern-Kind Beziehungen bilden mit ihren Knoten einen Baum. Die Referenzen und NodeComponent Objekte sind nicht Teil dieses Baums. Wurzel eines scene graph tree ist ein Locale Objekt Scene Graph Path Weg von der Wurzel zu einem bestimmten Blatt des scene graph tree Der scene graph path spezifiziert den Zustand eines Blatts vollständig!

63 Java3D Zustand eines Blatts des scene graph tree Ort, Orientierung, Größe eines visual object Die visuellen Attribute eines visual object werden nur durch den scene graph path bestimmt. Der Java 3D Erzeuger (renderer) erzeugt die Blätter in der Reihenfolge, die er für am effizientesten hält. Der Programmierer hat (praktisch) keinen Einfluß auf die Reihenfolge.

64 Java3D scene graph Symbole Eine scene graph Zeichnung kann als Spezifikation des Programms gesehen werden Knoten und NodeComponents (Objekte) VirtualUniverse Locale Group (innerer Knoten) Leaf (Blatt) NodeComponent andere Objekte Beziehungen: Eltern-Kind Referenz Klassen Namen!

65 Java3D Einfacher scene graph VirtualUniverse (nur einmal im Programm) BG ist Unterklasse Locale (Landmarke im Universum) BG BG Shape3D Knoten S Aussehen BranchGroup Knoten TG TransformGroup Knoten Geometrie node components View Platform Physikalischer Körper View Canvas3D Screen3D Physikalische Umgebung

66 Sichtzweig View platform Ort, an dem Betrachter / Fotoapparat / Filmkamera sich befindet View Fotoapparat bzw. dessen Ausrichtung (auf einer View platform können mehrere Kameras postiert sein) Canvas3D Bildfenster, auf das die Kamera ihr Bild überträgt Screen3D Bildschirm, auf dem das Bildfenster dargestellt wird

67 Java3D Einfacher scene graph Ein VirtualUniverse Objekt hat eine Liste von Locale Objekten BranchGroup Objekt Wurzel eines Untergraphen. Zwei Arten von Untergraphen: a) view branch graph (Sicht) b) content branch graph (Inhalt) Inhalt Geometrie, Erscheinung, Verhalten, Ort, Ton, Licht Sicht Aussichtsort, Blickrichtung

68 Java3D Kochrezept für eine Java3D Programm Erzeuge ein Canvas3D Objekt Erzeuge ein VirtualUniverse Objekt Erzeuge ein Locale Objekt und trage es in das VirtualUniverse Objekt ein Erzeuge einen view branch graph: a) Erzeuge ein View Objekt b) Erzeuge ein ViewPlatform Objekt c) Erzeuge ein PhysicalBody Objekt d) Erzeuge ein PhysicalEnvironement Objekt e) Trage ViewPlatform, PhysicalBody, PhysicalEnvironement, und Canvas3D Objekt in das View Objekt ein

69 Java3D Kochrezept für eine Java3D Programm (Fortsetzung) Konstruiere einen content branch graph Kompiliere die branch graph(s) Füge die Untergraphen in das Locale Objekt ein

70 Java3D SimpleUniverse Erzeugt scene graph mit VirtualUniverse, Locale, und einem vollständigen view branch graph Das SimpleUniverse benutzt Bequemlichkeitsklassen von ViewingPlatform und View statt den Kern-Klassen (Paket: com.sun.j3d.utils.universe)

71 Java3D Kochrezept mit SimpleUniverse Erzeuge ein Canvas3D Objekt Erzeuge ein SimpleUniverse Objekt, welches obiges Canvas3D Objekt referenziert a) Anpassen des SimpleUniverse Objekts Konstruiere den content branch Kompiliere den content branch graph Führe den content branch graph in die Locale des SimpleUniverse ein

72 Java3D Image Plate y z (0,0,0) ist auf der image plate Ebene x

73 Java3D z Buffer Algorithmus (Tiefenspeicher) Für alle Bildpunkte x, y wird neben den Farbwerten R,G,B auch ein Tiefenwert z gespeichert z-buffer wird mit zmax und Bildspeicher mit Backgroundbild initial. Für alle Bildpunkte werden alle visual objects nacheinander abgearbeitet: wenn z kleiner dann nimm z Problem: Antialiasing, Transparenz Lösung: Supersampling (Erhöhung der Speicherauflösung) Problem: z-auflösung, in starker Perspektive erhalten getrennte Objekte zuweilen gleichen z-wert

74 Java3D back clip distances front clip distance Pyramide = view frustum am View Object einzustellen back clip distance The front clip distance must be greater than 0.0 in physical eye coordinates. The front clipping plane must be in front of the back clipping plane, that is, the front clip distance must be less than the back clip distance in physical eye coordinates. The front and back clip distances, in physical eye coordinates, must be less than the largest positive single-precision floating point value, Float.MAX_VALUE. In practice, since these physical eye coordinate distances are in meters, the values should be much less than that. The ratio of the back distance divided by the front distance, in physical eye coordinates, affects Z-buffer precision. This ratio should be less than about 3000 to accommodate 16-bit Z-buffers. Values of 100 to less than 1000 will produce better results.

75 Ändern des back clip distance bei Verwendung des SimpleUniverse: Viewer[] viewers = simpleu.getviewingplatform().getviewers(); Viewer myviewer = viewers[0]; (myviewer.getview()).setbackclipdistance(1000.);

76 Java3D live Wenn ein branch graph in ein Locale Objekt eingetragen wird, wird er live live bedeute, dass alle Objekte des branch graph gezeichnet werden. Die Parameter dieser Objekte können nicht mehr geändert werden es sei denn, eine entsprechende capability wurde vorher gesetzt

77 Java3D compile durch Kompilieren wird ein branch graph für das Zeichnen effizient gemacht Am besten wird ein branch graph kompiliert, kurz bevor er live gemacht wird. Java3D Renderer (Zeichner) Es gibt keinen starte den Zeichner Schritt Der Java3D Zeichner startet, wenn ein branch graph mit einer Instanz von View live wird

78 Java3D Programme schreiben: Erst Szenegraphen zusammen bauen, dann ganz zum Schluss den Canvas3D Bilschirm in ein Fenster einsetzen: GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration(); Canvas3D derbildschirm = new Canvas3D(gc); SimpleUniverse su = new SimpleUniverse(derBildschirm);... // szene graphen entwerfen, zum Schluss live machen su.addbranchgraph(root) JFrame dasfenster = new JFrame(); dasfenster.setsize(600,600); dasfenster.getcontentpane().setlayout(new BorderLayout()); dasfenster.getcontentpane().add(derbildschirm,"center"); dasfenster.setvisible(true); // muss letzter Befehl sein!!

79 Java3D Beispiel: HelloJava3Da (siehe JBuilder Projekt) BG ColorCube View branch graph

80 Java3D Beispiel: Würfel rotieren (HelloJava3Da1) Erzeugen der TransformGroup BG TG... Transform3D rotate = new Transform3D(); rotate.rotx(math.pi / 4.0d); TransformGroup objrotate = new TransformGroup(rotate)... Einhängen in Baum ColorCube... BranchGroup objroot = new BranchGroup(); objrotate.addchild(new ColorCube(0.4)); objroot.addchild(objrotate);...

81 Java3D Beispiel: Kombinationen von Transformationen (HelloJava3Db) BG TG Erzeugen der kombinierten Transform3D... rotate.rotx(math.pi / 4.0d); temprotate.roty(math.pi / 4.0d); rotate.mul(temprotate);... ColorCube

82 Java3D Capabilities Wenn scenegraph live wird, oder compiled ist, kann das Programm die Parameter (capability) der scenegraph Objekte nicht mehr ändern! void boolean <Instanz von SceneGraphObject>.clearCapability(int bit) <Instanz von SceneGraphObject>.getCapability(int bit) void <Instanz von SceneGraphObject>.setCapability(int bit) (SceneGraphObject ist Superklasse von (fast) allen Klassen, die in einem scenegraph vorkommen)

83 Java3D Capabilities von TransformGroup TransformGroup.ALLOW_TRANSFORM_READ TransformGroup.ALLOW_TRANSFORM_WRITE } int Capabilities von Group Group.ALLOW_CHILDREN_EXTEND Group.ALLOW_CHILDREN_READ Group.ALLOW_CHILDREN_WRITE Referenzen zu Kindern können gelesen/geschrieben werden

84 Java3D Animation interaction: Reaktion auf Benutzer Eingaben animation: Reaktion auf Ablauf der Zeit Jedes visual object kann (mind.) ein Verhalten haben. Dieses wird durch ein behavior Objekt beschrieben. activation volume Alles was von der ViewPlatform eingesehen wird scheduling region Raum, für den ein bestimmtes Verhalten (behavior) gilt Ein behavior wird aktiv, wenn das activation volume seine scheduling region schneidet (Effizienz).

85 Java3D Interpolator Vordefinierte behavior Klasse Manipuliert die Parameter eines scenegraph Objekts in Abhängigkeit von einer Zeitfunktion Beispiele: RotationInterpolator -> TransformGroup PositionInterpolator ScaleInterpolator ColorInterpolator TransparencyInterpolator

86 Java3D Einfügen von Verhalten (behavior) Setze ALLOW_TRANSFORM_WRITE der Ziel- TransformGroup Erzeuge Zeitfunktions ( alpha ) Objekt Erzeuge Interpolator Objekt Lege scheduling region fest Mache das behavior zum Kind der TransformGroup

87 Java3D Die RotationInterpolator Klasse RotationInterpolator( Alpha alpha, TransformGroup target ) void setschedulingbounds( Bounds region ) Die BoundingSphere Klasse BoundingSphere( Point3D center, double radius ) Mit dieser Klasse können kugelförmige scheduling regions definiert werden. Die alpha Klasse Gibt einen zeitabhängigen alpha Wert (Wert zwischen 0 und 1).

88 Java3D Beispiel: HelloJava3Dc (siehe JBuilder Projekt) BG Verhalten B TG ColorCube View branch graph

89 Java3D Farben des ColorCube violett gelb blau y Rückseite: Grün türkis positive Drehrichtg. x

90 wird nicht mitskaliert! Skalierung translate.set(.2f, new Vector3f(.75f,0f,0f)); Transform3D Objekt Translation

91 Unterschied? A) B) TG rotation TG translation TG translation TG rotation ColorCube ColorCube

92 A) Translation 0,75m Rotation pi/4=45

93 B) Rotation pi/4=45 Translation 0,75m

94 Java3D Einfacher scene graph BG Shape3D Knoten View branch graph S Aussehen Geometrie visual object

95 Java3D Shape3D Shape3D() Shape3D(Geometry geometry) Shape3D(Geometry geometry, Appearance appearance ) void setgeometry(geometry geometry) void setappearance(appearance appearance) ALLOW_GEOMETRY_READ WRITE ALLOW_APPEARANCE_READ WRITE ALLOW_COLLISION_BOUNDS_READ WRITE

96 Java3D Klassenhierachie Appearance Geometry Material NodeComponent Texture ViewPlatform Attributes SceneGraphObject Group Node Sound Background Behavior Fog Leaf Light Morph Shape3D

97 Java3D Herstellung eines visual Object 1. public class VisualObject extends Shape3D{ private Geometry vogeometry; 4. private Appearance voappearance; // create Shape3D with geometry and appearance 7. // the geometry is created in method creategeometry 8. // the appearance is created in method createappearance 9. public VisualObject() { vogeometry = creategeometry(); 12. voappearance = createappearance(); 13. this.setgeometry(vogeometry); 14. this.setappearance(voappearance); 15. } private Geometry creategeometry() { 18. // code to create default geometry of visual object 19. } private Appearance createappearance () { 22. // code to create default appearance of visual object 23. } } // end of class VisualObject

98 Java3D Einfügen eines visual Object in den scene graph objroot.addchild( new VisualObject() ); (objroot ist von Group abgeleitet)

99 Java3D Vorprogrammierte (utility) Klassen für geometrische Primitive geometrische Primitive können sein: Würfel, Kugel, Kegel, Zylinder nur Aussehen (appearance) nicht die Geometrie änderbar Paket: com.sun.j3d.utils.geometry

100 Java3D Klassenhierarchie für geometrische Primitive java.lang.object javax.media.j3d.scenegraphobject javax.media.j3d.node javax.media.j3d.group com.sun.j3d.utils.geometry.primitive com.sun.j3d.utils.geometry.box com.sun.j3d.utils.geometry.cone com.sun.j3d.utils.geometry.cylinder com.sun.j3d.utils.geometry.sphere

101 Java3D Klasse Primitive Definiert alle Eigenschaften, die Box, Sphere, Cone, Cylinder gemeinsam sind z.b. default Zahl der Polygone die benutzt werden, um Flächen darzustellen -> 3D Flächendarstellung

102 Java3D Gemeinsame Methoden von Box, Cylinder, Cone Shape3D getshape(int id) Box, Cylinder, Cone setzen sich aus weiteren Shape3D Objekten zusammen (z.b. die Flächen des Würfels) Diese Objekte haben eigene Geometrie KnotenKomponenten getshape(int id) holt die Fläche mit der Nummer id void setappearance(appearance appearance) Aussehen aller inneren Objekte wird gesetzt

103 Java3D Konstruktoren für Box Box() Erzeugt 2m x 2m x 2m Würfel zwischen (-1,-1,-1) und (1,1,1) (m = Meter) Box(float x, float y, float z, Appearance appearance) Erzeugt xm x ym x zm Würfel im Ursprung Konstruktoren für Cone 2m Cone() 1m Cone(float radius, float height) y (umgebender Würfel im Ursprung)

104 Java3D Konstruktoren für Cylinder 2m Cylinder() y 1m Cylinder(float radius, float height) (umgebender Würfel im Ursprung) Cylinder(float radius, float height, Appearance appearance) Konstruktoren für Sphere Sphere() Radius = 1m Sphere(float radius) Sphere(float radius, Appearance appearance)

105 Java3D Beispiel: Herstellen eines JoJo

106 Java3D Warum dieser BG? BG BG TG TG Warum diese TG s? TG Geometry G S S Geometry Appearance Jojo Objekt TG cone Objekt G S View branch graph cone Objekt S Geometry Appearance Geometry

107 Java3D BG Wäre dies nicht eine Vereinfachung? BG View branch graph TG Jojo Objekt TG cone Objekt G S Appearance S Geometry Geometry

108 Java3D Wäre nicht zumindest dies möglich? TG BG View branch graph BG TG TG TG cone Objekt G S S Geometry Geometry Appearance Jojo Objekt

109 Java3D Programmierbeispiel ConeYoyo

110 Java3D Mathematische Klassen Viele Geometrie Unterklassen beschreiben Primitive, die auf Vertizes (Eckpunkten) basieren, z.b. Punkte, Linien, gefüllte Polygone Im Paket javax.vecmath.* sind mathematische Klassen zur Beschreibung von Vertex basierten Daten zusammengefasst

111 Java3D Tupel Tupel: (zahl, nochnezahl, weiterezahl,...) Im vecmath Paket sind Tupel* Klassen Oberklassen, von denen die eigentlichen Nutz Klassen abgeleitet werden: Tuple3b Tuple4b Tuple2f Tuple3f Tuple4f Tuple2d Tuple3d Tuple4d Dabei bezeichnet die Zahl die Anzahl der Zahlen im Tupel Der Buchstabe ist der Datentyp im Tupel: b = byte, f = single precision float, d = double precision float

112 Java3D Unterklassen Von den Tupelklassen sind jeweils folgende Klassen abgeleitet: Point* Color* Vector* TexCoord* <- für Texturen

113 Java3D Konstruktoren Beispielhaft für die Konstruktoren der Tupelklassen Tuple2f Tuple2f() Konstruiert ein Tupel (0,0) Tuple2f(float x, float y) Tuple2f(float[] t) Tuple2f(Tuple2f t) Tuple2f(Tuple2d t) klont Tuple

114 Java3D Methoden Beispielhaft für die Methoden der Tupelklassen (höhere Dimensionalität ist entsprechend anzupassen): void set(float x, float y) void set(float[] t) boolean equals(tuple2f t1) this = this+t1 final void add(tuple2f t1) void add(tuple2f t1, Tuple2f t2) this = t1+t2 void sub(tuple2f t1, Tuple2f t2) this = t1-t2 void sub(tuple2f t1) this = this-t1 negate Vektor in place? void negate(tuple2f t1) void negate() void absolute(tuple2f t1) jede Komponente wird auf ihr Absolutes gesetzt

115 Java3D Punktklasse Punktklassen beschreiben - die Koordinaten eines Eckpunkts oder die Position - eines Rasterbilds, - einer Punktlichtquelle, - eines Geräuschs etc. Beispielhaft hier Point3f: float distance(point3f p1) float distancesquared(point3f p1) float distancel1(point3f p1) abs(x1-x2)+ abs(y1-y2)+ abs(z1-z2)

116 Java3D Farbklassen Color3* RGB System Color4* zusätzlich Transparenz Byte: 0 bis 255 Single Precision Float: 0.0 bis 1.0 Kein double Precision Float Gegenüber Tuple3* bzw. Tuple4* keine zusätzlichen Methoden, d.h. erben alle Methoden von den Tuple Klassen class ColorConstants{ 4. public static final Color3f red = new Color3f(1.0f,0.0f,0.0f); 5. public static final Color3f green = new Color3f(0.0f,1.0f,0.0f); 6. public static final Color3f blue = new Color3f(0.0f,0.0f,1.0f); 7. public static final Color3f yellow = new Color3f(1.0f,1.0f,0.0f); 8. public static final Color3f cyan = new Color3f(0.0f,1.0f,1.0f); 9. public static final Color3f magenta = new Color3f(1.0f,0.0f,1.0f); 10. public static final Color3f white = new Color3f(1.0f,1.0f,1.0f); 11. public static final Color3f black = new Color3f(0.0f,0.0f,0.0f); 12.}

117 Java3D Vektorklassen Oberflächennormale, Richtung von Lichtquellen Geräuschausbreitung Nicht ererbte Methoden: float length() float lengthsquared() void cross(vector3f v1, Vector3f v2) float dot(vector3f v1) void normalize() void normalize(vector3f v1) float angle(vector3f v1) Winkel in radian zwischen 0 und

118 Java3D TexCoord Klassen Textur Koordinaten bei einem Vertex Es gibt nur TexCoord2f und TexCoord3f Keine nicht ererbte Methoden

119 Java3D Geometrie Klassen Geometry ist eine abstrakte Oberklasse Jedes Shape3D Objekt sollte seine setgeometry() Methode benutzen um sich mit einem (und nur einem) Geometry Objekt zu verbinden

120 Java3D Geometrie Klassen: Klassenhierarchie Geometry ist eine abstrakte Oberklasse Jedes Shape3D Objekt sollte seine setgeometry() Methode benutzen um sich mit einem (und nur einem) Geometry Objekt zu verbinden Geometry Objekte fallen in drei Unterklassen: - vertex basierte Geometrien ohne Index: jeder Vertex wird beim zeichnen eines visual objects nur einmal benutzt - vertex basierte Geometrien mit Index: die Vertizes werden beim zeichnen eines visual objects mehrfach verwendet - übrige (die Klassen Raster, Text3D, compressedgeometry)

121 only once) Indexed vert ex-based geomet ry (each t ime a visual object is rendered, it s vert ices may be reused) Java3D Ot her visual object s (t he classes Rast er, T ext 3D, and CompressedGeomet ry) Geometrie Klassen: Klassenhierarchie Th i s se cti on cove rs th e fi rst two afore m e n ti on e d cate gori e s. Th e cl ass h i e rarch y for Ge om e tr an d su bcl asse s i s shownfi i ngu re2-10 Ge om e try C l ass Hi e rarch y. LineStripArray SceneGraphObj ect NodeCom ponent Geom etry Geom etry Array Geom etry StripArray TriangleStripArray LineArray TriangleFanArray PointArray QuadArray IndexedLineArray TriangleArray IndexedPointArray IndexedGeo metryarray IndexedQuadArray Co mpressedgeo metry Raster IndexedTriangleArray IndexedGeom etry StripArray Text3D IndexedLineStripArray IndexedTriangleStripArray IndexedTriangleFanArray Fi gu re2-10 Ge om e try C l ass Hi e rarch y GeometryArray Class As you may Dr. deduce fromgraphische t he class names, t he Geomet ry subclasses may be used t o specify point s, lines, Prof. H. Gläser, Datenverarbeitung and filled polygons (t riangles and quadrilat erals). T hese vert ex-based primit ives are subclasses of t he

122 Java3D GeometryArray Klassen In einem GeometryArray Objekt gibt es mehrere data arrays : - Ein Array für Vertizes (Koordinatentripel bzw. Eckpunkte) - Ein Array für die zu den Eckpunkten gehörenden Farben - Ein Array für die zu den Eckpunkten gehörenden Oberflächennormalen - Ein Array für die zugehörigen Textur Koordinaten Größe des Arrays = Zahl der Eckpunkte der Geometrie

123 Java3D GeometryArray Klassen 3 Schritte im Leben eines Geometry Objekts: 1. Objekt erzeugen 2. Objekt mit Daten füllen 3. Objekt mit zugehörigem Shape3D Objekt assoziieren

124 Inhalt programmieren GeometryArray Klassen Schritt 1 Angeben: - Zahl der Eckpunkte zu was? - Welche Daten werden an jedem Eckpunkt zusätzlich angegeben ( vertex format ) Konstruktor (Vorsicht - GeometryArray ist abstract): GeometryArray(int vertexcount, int vertexformat) COORDINATES Muss gesetzt werden! NORMALS COLOR_3 COLOR_4 Farben mit Transparenz! TEXTURE_COORDINATE_2 2D Textur Koordinaten TEXTURE_COORDINATE_3 3D Textur Koordinaten bitweisesor

125 Inhalt programmieren GeometryArray Klassen Schritt 2 Methoden zum Füllen mit Daten: void setcoordinate(int index, float[] coordinate) void setcoordinate(int index, double[] coordinate) void setcoordinate(int index, Point* coordinate) void setcoordinates(int index, float[] coordinates) void setcoordinates(int index, double[] coordinates) void setcoordinates(int index, Point*[] coordinates) void setcolor(int index, float[] color) void setcolor(int index, byte[] color) void setcolor(int index, Color* color) void setcolors(int index, float[] colors) void setcolors(int index, byte[] colors) void setcolors(int index, Color*[] colors)

126 Inhalt programmieren GeometryArray Klassen Schritt 2 Methoden zum Füllen mit Daten: void setnormal(int index, float[] normal) void setnormal(int index, Vector* normal) void setnormals(int index, float[] normals) void setnormals(int index, Vector*[] normals) void settexturecoordinate(int index, float[] texcoord) void settexturecoordinate(int index, Point* coordinate) void settexturecoordinates(int index, float[] texcoords) void settexturecoordinates(int index, Point*[] texcoords)

127 Inhalt programmieren GeometryArray Klassen Schritt 3 Objekt mit zugehörigem Shape3D Objekt assoziieren axisbg.addchild(new Shape3D(<GeometryArray Objekt>)); Getting Started with the Java 3D AP I Unter-Klassen von GeometryArray Geometry Chapter 2. Creating Geometry LineArray PointArray QuadArray Geometry Array TriangleArray LineStripArray Geometry StripArray TriangleStripArray TriangleFanArray Figure 2-12 GeometryArray Subclasses Prof. Dr. Non-Indexed H. Gläser, Graphische Datenverarbeitung

128 Figure2-12 Non-Indexed GeometryArray Subclasses Inhalt programmieren Figure 2-13 shows examples of the four GeometryArray subclasses: PointArray, LineArray, T rianglearray, and QuadArray (the ones which are not also subclasses of GeometryStripArray figure, the three leftmost of vertices show the same six vertex points rendering six point Unter-Klassen von sets GeometryArray two triangles. T he fourth image shows four vertices defining a quadrilateral. Note that none o are shared: each line or filled polygon is rendered independently of any other. Unterschiedliche Verbindung der Vertizes: v0 v1 v2 v4 v3 PointArray v0 v5 v1 v2 v0 v4 v3 v5 v1 v2 v3 T rianglearray LineArray v0 v4 v5 v1 v3 v2 QuadArray Figure2-13 GeometryArray Subclasses quadrilaterals : By default, the interiors of triangles and quadrilaterals are filled. In later sections, you will lear attributes can influence how filled primitivesmuss can be rendered Vorsicht: konvex,in different ways. T hese four subclasses inherit their constructors and methods from GeometryArray. T heir con planare, listed below. For their methods, go back to the listing entitled GeometryArray Methods. ohne Selbstüberschneidung GeometryArray Subclass Constructors

129 Inhalt programmieren is an abstract class from which strip primitives (for crea T he GeometryStripArray surfaces) are derived. GeometryStripArray is the superclass of LineStripArray, T r T rianglefanarray. Figure 2-14 shows an instance of each type of strip and how v Unter-Klassenrenders von GeometryStripArray LineStripArray connected lines. T he T rianglestriparray results in triangle Streifen = z.b. reusing the most recently rendered vertex. T he T rianglefanarray reuses the very die 4 Flächen beim each triangle. Unterschiedliche Verbindung der Vertizes: Jojo v0 v1 v2 v4 v3 LineStripArray v0 v5 v1 (für Linien im 3dim) v2 v4 v3 v0 v5 TriangleStripArray v1 v2 v3 v4 TriangleFanArray Figure2-14 Ge geht s ometrystriparray s Wie hier weiter?subclasse (Wie wird v5 verbunden?) Beispiel (TriangleStripArray, TriangleFanArray genauso) TKonstruktor he GeometryStripArray has a different constructor than GeometryArray. T he G constructor has a third parameter, which is an array of vertex counts per LineStripArray(int vtxcount, int vertexformat, int stripvertexcounts[]) strip, en maintain multiple strips. (GeometryStripArray also introduces a couple of queryin getnumstrips() and getstripvertexcounts(), which are infrequently used.) Zahl der Vertizes für einen Strip. Summe der stripvertexcounts = vtxcount! Ge ome trystriparray Subclass Constructors Constructs an empty object with the specified number of vertices, the vertex form

130 Inhalt programmieren stripvertexcounts[] : die nächste Anzahl (stripvertexcounts[i]) gehört zu einer Fläche. Die Rand Vertizes müssen wieder auftauchen. stripvertexcounts[] v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v

131 Vorsicht: Back Face Culling = Rückseite nicht sichtbar auch im nicht - Beleuchtungs Modus Vorderseite einer Fläche wird durch Reihenfolge der Vertizes definiert: A D B C Reihenfolge gegen Uhrzeiger = Vorderseite A D B C Reihenfolge mit Uhrzeiger = Hinterseite Vorsicht: Angabe einer Flächennormalen änder Vorder/Rückseite nicht. Stattdessen: setbackfacenormalflip() von PolygonAttributes

132 Inhalt programmieren Ein Jojo kann mit TriangleFanArray erzeugt werden 4 Flächen mit je einem Zentralpunkt Pro Fläche 18 Vertizes, d.h. stripvertexcounts = {18,18,18,18} setcoordinates(0, coords) Ordnung in coords: Zentralpunkt, 17 übrige Punkte, Zentralpunkt, 17 übrige Punkte u.s.w. In Java3D keine gefüllten Primitive mit mehr als 4 Seiten! -> Verwendung von z.b. der Triangulater utility Klasse um komplexe Polygone in Dreiecke bzw. Fächer (Fans) zu zerlegen

133 Inhalt programmieren Mehrfachverwendung von Vertizes IndexedXXArray (int vtxcount, int vtxformat, int indexcount) IndexedXXStripArray(int vtxcount, int vtxformat, int stripvtxcounts[],chapter int indexcount) Getting Started with the Java 3D AP I 2. Creating Geometry coordinate index array coordinate data array (-1, 1, -1) front face (-1, -1, -1) (1, -1, -1) top face (1, 1, -1) (-1, 1, 1) (-1, -1, 1) (1, -1, 1) (1, 1, 1) back face Figure 2-17 x andgraphische Data Arrays for a Cube Prof. Dr. Inde H. Gläser, Datenverarbeitung - Performanz schlechter - Berechnung der Normalen

134 Inhalt programmieren Das Erscheingunsbild ( Appearance ) Geometry genügt nicht, um das vollständige Aussehen des visual object zufriedenstellend zu beschreiben Shape3D kann noch Appearance Objekt referenzieren Getting Started withein the Java 3D AP I Appearance Objekt bündelt die Erscheinungsinformationen S Appearance LineAttributes Material Geometry Coloring Attributes Figure2-19 An Appe arance Bundle

135 Inhalt programmieren Das Erscheingunsbild ( Appearance ) Attribut Klassen, die die Erscheinung eigentlich beschreiben:. PointAttributes. LineAttributes So wird gebündelt :. PolygonAttributes ColoringAttributes ca =. ColoringAttributes new ColoringAttributes();. TransparencyAttributes ca.setcolor (1.0, 1.0, 0.0);. RenderingAttributes Appearance app = new Appearance();. Material. TextureAttributes. Texture. TexCoordGeneration app.setcoloringattributes(ca); Aliasing Polygon: culling(2.4.6.), stitching Rendering Attributes: hidden surface removal

136 Inhalt programmieren Weiterer interessante Punkte Kapitel 2 Aliasing Polygon: culling(2.4.6.), stitching Rendering Attributes: hidden surface removal twisted Strip Back Face Culling Exercises

137 other things with the model in a Java 3D program such as add animations, add other geometry, change the color of the model, and so on. A Lightwave loader example is available with the JDK 1.2 distribution and is found at jdk1.2/demos/java3d/lightwave/viewer.java. T his loader will load the lights and animations specified in a Lightwave lws file Publicly Available Loaders Geometrie Programmierung beginnend bei 0 ist A variety of loader classes exist for Java 3D. T able 3-1 lists file formats for which loaders are publicly available. At the time of this writing, at least one loader class is available for each of the file formats listed in T able 3-1. sehr aufwendig Möglichkeit Geometrien von 3D Software (CAD Programme) File Format De scription einzulesen 3DS 3D-Studio Table 3-1 Publicly Available Java 3D Loade rs COB Caligari truespace DEM Digital Elevation Map DXF AutoCAD Drawing Interchange File IOB Imagine LWS Lightwave Scene Format NFF WorldT oolkit NFF format OBJ Wavefront PDB Protein Data Bank PLAY PLAY SLD Solid Works (prt and asm files) VRT Superscape VRT VT K Visual T oolkit WRL Virtual Reality Modeling Language For a current list of loader classes, check the web. For that matter, loader classes can be downloaded from Prof. Dr. Datenverarbeitung the web. Loaders canh.begläser, found Graphische by following links from the Java 3D home page, or check the references Neue Loader werden gesammelt bei

138 Laden von 3D Dateien in unterschiedlichen Formaten 0. loader suchen (Web) 1. importieren der loader Klasse 2. importieren weiterer notwendiger Klassen 3. deklarieren einer scene Variablen (nicht den Konstruktor benutzen) 4. erzeugen eines loader Objekts 5. laden des Files und zuweisen zu der scene Variablen 6. einsetzten von scene in den scene graph weiteres zu Loader erst mal ausgelassen

139 Die Klasse GeometryInfo Kein Loader? - 3D Daten müssen eigentlich als Dreiecke oder Quadrilaterals eingegeben werden Möglichkeit kompliziertere Polygone einzugeben (nicht planar, konkav, Löcher) Dient als Grundlage für Utility Klassen Enthalten sind Informationen über: Vertizes Farben Normale StripCounts ContourCounts Textur Koordinaten

140 A set of complex polygons is loaded using the POLYGON_ARRAY flag to the constructor. The setstripcounts() method specifies the length of each contour of the polygons. The setcontourcounts() method specifies the number of countours in each polygon. For example, a triangle with a triangular hole would have strip counts [3, 3] (indicating two contours of three points) and contour counts [2] (indicating a single polygon with two contours). Koordinaten Feld sollte die äußeren Vertizes umfassen in gegen Uhrzeigersinn Reihenfolge. Contour scheint eine geschlossene Polygonlinie zu sein

141 Die Klasse GeometryInfo Paket: com.sun.j3d.utils.geometry Konstruktor: GeometryInfo(int primitive) (nicht planar etc.) primitive = POLYGON_ARRAY QUAD_ARRAY (Dreiecke unabhängig) TRIANGLE_ARRAY TRIANGLE_FAN_ARRAY TRIANGLE_STRIP_ARRAY Methoden: Indexverwaltung void setcolors(color3f[] colors) void setcolorindices(int[] colorindices)?? void setcontourcounts(int[] contourcounts)??? void setcoordinates(point3d[] coordinates) void setcoordinateindices(int[] coordinateindices) void setnormals(vector3f[] normals) void setnormalindices(int[] normalindices)?? void setstripcounts(int[] stripcounts) void settexturecoordinates(point2f[] texcoords) void settexturecoordinateindices(int[] texcoordindices)??

142 convert the geometry into a triangular geometry that Java 3D can render. For example, if you wanted to create a car in Java 3D, instead of specifying triangle profile of the car as a polygon in a GeometryInfo object. T hen, using a T riangulat can be subdivided into triangles. T he left image offigure 3-2 shows a profile of a ca Triangulator wandelt komplex Polygone in isolierte Dreiecke um 3 right image is the polygon subdivided into triangles. Figure3-2 A GeometryInfo Polygon and O ne Possible Triangulation If you are interested in performance, and who isn't, use a Stripifier object to conver Performanzverbesserung: Objekt wandelt Dreiecke strips. If you want to shade Stripifier the visual object, use the NormalGenerator to calculat 4. zugeometry Dreiecksstreifen Schattierung: es werden Flächennormale gebraucht: NormalGenerator 2 While you can specify non-planar polygons in GeometryInfo, and a T riangulator o surface from it; non-planar contours do not specify a unique surface. In other word planar contour, you may not get the surface you want from T riangulator. 3 Prof. Dr. H. Gläser, Graphische Datenverarbeitung Note that the figure does not necessarily represent the quality of the triangulation

143 Der Triangulator Konstruktor: Triangulator() Methode: void triangulate(geometryinfo ginfo) ginfo vorher nachher Primitive Typ POLYGON_ARRAY TRIANGLE_ARRAY (Umwandlung mit Polygon Zerlegungstechniken) Deprecated. This class is created automatically when needed in GeometryInfo and never needs to be used directly. Putting data into a GeometryInfo with primitive POLYGON_ARRAY automatically causes the triangulator to be created and used.

144 Der Streifenmacher Konstruktor: Stripifier() Methode: void stripify(geometryinfo ginfo) ginfo vorher nachher Primitive Typ TRIANGLE_ARRAY TRIANGLE_STRIP_ARRAY (Normalenberechnung sollte vorher stattfinden)

145 Der Normalen Berechner Konstruktor: NormalGenerator(double radians) Methode: void generatenormals(geometryinfo gi) In Index Arrays kommt Vertex mehrfach vor: Winkel zwischen zwei Dreiecksnormalen > Knick Winkel Vertex gehört gleichzeitig zu verschiedenen Flächen -> zwei Normale gehören zum Vertex, Vertex liegt auf Kante sonst wird der Knick flachgeklopft d.h. nur eine Normale (Mittelwert)

146 Anwenden der Utility Klassen Triangulator 1. GeometryInfo gi = new GeometryInfo( GeometryInfo.POLYGON_ARRAY); 2. gi.setcoordinates(coordinatedata); 3. gi.setstripcounts(stripcounts); Triangulator tr = new Triangulator(); 6. tr.triangulate(gi); NormalGenerator ng = new NormalGenerator(); 9. ng.generatenormals(gi); Stripifier st = new Stripifier(); 12. st.stripify(gi); Shape3D part = new Shape3D(); 15. part.setappearance(appearance); 16. part.setgeometry(gi.getgeometryarray()); NormalGenerator Stripifier GeometryInfo

147 Text2d = (transparentes) Polygon + Textur Unterklasse von Shape3D java.awt.font Pakete: com.sun.j3d.utils.geometry.text2d Text2D text2d = new Text2D("2D text is a textured polygon", new Color3f(0.9f, 1.0f, 1.0f), "Helvetica", 18, Font.ITALIC)); Manipulationen am Polygon Appearance app = text2dobject.getappearance(); app.setpolygonattributes(polyattrib); Text - Textur anwendbar auf beliebige visual objects

148 Text3d = Ausziehen des Fonts Unterklasse von Geometry Font3D Objekt wird benötigt Font3D font3d = new Font3D(new Font("Helvetica", Font.PLAIN, 10), new FontExtrusion()); Text3D textgeom = new Text3D(font3d, new String("3DText"), new Point3f(-2.0f, 0.0f, 0.0f)); Position

149 Hintergrund Farbe Bild Geometrie setgeometry(branchgroup bg) setimage(imagecomponent2d img) setcolor(color3f clr) Background backg = new Background(); //black background backg.setgeometry(createbackgraph()); // add BranchGroup of background backg.setapplicationbounds(new BoundingSphere( new Point3d(), 100.0)); objroot.addchild(backg); - Geometrie wird auf eine Einheitskugel abgebildet und beim Zeichnen auf unendlich gesetzt - Mehrere Backgrounds möglich

150 Aktivierungsbereich Beispiel: eine feste Lichtquelle beleuchtet sich bewegende Objekte Wie weit ist der Aktivierungsbereich (Bounds Objekt) des Lichts auszudehnen? 1. Möglichkeit: alle möglichen Orte der Objekte einschließen - zu groß 2. Möglichkeit: Aktivierungsbereich des Lichts an die beweglichen Objekte anschließen, unabhängig von (dem Ort der) Lichtquelle. Was spricht gegen ein Bounds Objekt für diesen Zweck? Ein Bounds Objekt würde sich nur mit der Lichtquelle bewegen -> neue Klasse: BoundingLeaf

151 Aktivierungsbereich For example, if a world includes a stationary light source that illuminates moving o the light must include the moving object. One way to handle this would be to mak enough to include all of the places the object moves. T his is not the best answer in solution is to use a BoundingLeaf. Placed in the scene graph with the visual object object moves with the visual object and independently of the light source. Figure 3-14 s in which a light uses a BoundingLeaf node. Scene Graph: BG TG TG L S Appearance Geometry BL Figure3-14 BoundlingLe af Move s with a Visual O bject and Inde pe nde ntly While the applications for BoundingLeaf include the ApplicationBounds of Backgr Konstruktor: BoundingLeaf(Bounds region) 3.5), the SchedulingBounds of Behaviors (Section 4.2), and the InfluencingBounds 9 it would not make sense to repeat this information in all three places. 8 Bounds should be chosen as small as possible, while still achieving the desired effect, to redu required to render the Java 3D scene. 9 BoundingLeaf nodes are also useful for fog, clip, sound, and tutorial. soundscape objects, which are

152 49. solution is toobjroot.addchild(myrotationbehavior); use a BoundingLeaf. Placed in the scene graph with the visual object, the BoundingLeaf 50. object moves with the visual object and independently of the light source. Figure 3-14 shows a scene graph 51. // uses Let Java 3D node. perform optimizations on this scene graph. in which a light a BoundingLeaf 52. objroot.compile(); 53. BG Vorteil von BoundingLeaf: 54. return objroot; 55. } // end of CreateSceneGraph method of SimpleBehaviorApp scheduling Region ist unabhängig Code FragmeTG nt4-2 Cre ate Sce netg Graph Mevon thod Licht in Simple BemyRotationBehavior haviorapp.java bzw Very little code is needed to complete the program started Fragment 4-1 and 4-2. T he co an eine TGinCode anschliessbar L program, SimpleBehaviorApp, is found in the examples/interactiondirectory. S complete application renders a ColorCube object in a static scene until a keyboard key is presse BL Appearance response to any keygeometry press, the ColorCube rotates 0.1 radians (about ).6 Figure 4-4 shows Vorteil wird nicht so sehr bei the scen diagram for the content branch graph of this application. Figure3-14 BoundlingLe af Move s with a Visual O bject and Inde pe ndeersichtlich, ntly of a Light Source Behavior denn Behavior hat an sich keinen bestimmten Ort im Szene Graphen While the applications for BoundingLeaf include the ApplicationBounds of Background objects (Section 3.5), the SchedulingBounds of Behaviors (Section 4.2), and the InfluencingBounds of Lights (Section 6.6), objroot 9 it would not make sense to repeat this information in all three places. BG B objrotate myrotationbehavior TG 8 Vorteil wird besonders bei Licht deutlich, denn Licht selbst hat bereits soundscape objects, which are not covered in this einen geometrischen Ort Bounds should be chosen as small as possible, while still achieving the desired effect, to reduce the computation required to render the Java 3D scene. 9 BoundingLeaf nodes are also useful for fog, clip, sound, and ColorCube tutorial. The Java 3D Tutorial Figure 4-4 Sce ne Graph Diagram of3-26 the Conte nt Branch Graph Cre ate d in Simple Be h

153 BoundingLeaf an eine ViewingPlatform angehängt -> trifft immer zu (z.b. für Amaturenbrett im Flugsimulator) void createscenegraph (SimpleUniverse su) { BoundingLeaf boundingleaf = new BoundingLeaf(); PlatformGeometry platformgeom = new PlatformGeometry(); platformgeom.addchild(boundingleaf); platformgeom.compile(); simpleuniv.getviewingplatform().setplatformgeometry (platformgeom); BranchGroup contentroot = new BranchGroup(); Background backg = new Background(1.0f, 1.0f, 1.0f); backg.setapplicationboundingleaf(boundingleaf); contentroot.addchild(backg); bewirkt immer gleichen Hintergrund

154 Jedes von SceneGraphObject abgeleitete Objekt, kann Benutzer Daten mit folgenden Methoden speichern: void setuserdata(object userdata) Object getuserdata() Anwendungen?

155 Benutzer Interaktion (interaction): die virtuelle Welt reagiert auf Benutzer Eingaben Animation die virtuelle Welt verändert sich im Laufe der Zeit Indirekte Auswirkungen von Benutzer Eingaben (billboard Verhalten) Stimulus bewirkt Änderung

156 T he table does not list all possible applications of Behavior, only the simple ones (one stimulus results in one change). Some combinations of stimulus and change only make sense in a specific setting; these are listed as 'application specific'. Furthermore, combinations of stimuli and combinations of actions are possible. Table 4-1 Applications of Be havior Cate goriz e d by Stimulus and O bje ct of Change obje ct of change stimulus (re ason for change ) user collisions T ransformgroup Geometry (visual objects change (visual objects change orientation or location) interaction shape or color) Scene Graph View (adding, removing, or switching objects) (change viewing location or direction) application specific application specific visual objects visual objects change orientation change appearance or location in collision time animation animation View location billboard level of detail (LOD) navigation visual objects disappear in collision View changes with collision animation animation application specific application specific Nicht In T able 4-1 some of the possible behaviors are spelled out. im For Tutorial: example, collision actions are described. Others, such as billboard or level of detail (LOD) behaviors, may not be familiar to you. Below are some Feststellen von Kollisionen quick explanations. Prof. does Dr. H.not Gläser, Graphische Datenverarbeitung T he chart include all applications of Behavior; combinations of stimuli and/or changes are not

157 Reklametafel Verhalten (billboard = Reklametafel) sehr detaillierte Geometrien werden zu Texturen vereinfacht. Behavior sorgt dafür, daß die Tafel unabhängig vom Sichtwinkel immer senkrecht zum Beobachter steht LOD Verhalten Je näher der Betrachter den Dingen kommt, desto detaillierte visual object Geometrien werden verwendet. Behavior schaltet automatisch zwischen den unterschiedlichen Detaillierungsgraden (level of detail - LOD) um

158 Module2: Interaction and Animation Chapter 4. Interaction Die Klasse Behavior Behavior Billboard ColorInterpolator Interpolator LOD RotPosPathScaleInterpolator DistanceLOD Animation KeyNavigatorBehavior MouseRotate MouseBehavior MouseTranslate MouseZoom PickRotateBehavior PickMouseBehavior Interaktion PickTranslateBehavior PickZoomBehavior Figure4-1 Hie rarchy of Subclasse s of Behavior Prof. Dr. H. Gläser, Graphische Datenverarbeitung Writing a Behavior Class

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Java 3D Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Virtual World Koordinaten System Grundlagen zur Definition visueller Objekte Shape3D Unterklasse der Leaf-Klasse Eigenschaften des visuellen

Mehr

Einführung in Java3D

Einführung in Java3D Einführung in Java3D SS05 Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de Varrentrappstr. 40-42 60486 Frankfurt am Main Raum 218 Java 3D ist eine high level Interaktive 3D Graphik-API (Application Programming

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Einführung - Was ist Java3D?

Einführung - Was ist Java3D? Einführung - Was ist Java3D? - Java Package für interaktive 3D Grafik - High-level 3D Grafik API - Programmieren von interaktiven Anwendungen mit dreidimensionalen Inhalten - Nahtlose Integration in Java

Mehr

Java 3D Einstiegs-Tutorial Teil 3

Java 3D Einstiegs-Tutorial Teil 3 Navigation mit der Maus Java 3D Einstiegs-Tutorial Teil 3 Computergrafik - Übungen W. Kurth, E. Roth WS 2001/02 Java 3D eröffnet mehrere Möglichkeiten, sich mittels Maus- Eingaben im virtuellen Raum zu

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Einige weitere Fähigkeiten und Anwendungsbeispiele

Einige weitere Fähigkeiten und Anwendungsbeispiele Java3D Eine Einführung Was ist Java3D Ansicht (Viewing Model) Sichtbare Objekte Animationen und Interaktionen Einfaches Beispielprogram Einige weitere Fähigkeiten und Anwendungsbeispiele Was ist Java3D?

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Einführung - Was ist Java3D?

Einführung - Was ist Java3D? Einführung - Was ist Java3D? - Java Package für interaktive 3D Grafik - High-level 3D Grafik API - Programmieren von interaktiven Anwendungen mit dreidimensionalen Inhalten - Nahtlose Integration in Java

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

MobiDM-App Handbuch für Windows Mobile

MobiDM-App Handbuch für Windows Mobile MobiDM-App Handbuch für Windows Mobile Dieses Handbuch beschreibt die Installation und Nutzung der MobiDM-App für Windows Mobile Version: x.x MobiDM-App Handbuch für Windows Mobile Seite 1 Inhalt 1. WILLKOMMEN

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Der Szenegraph. Im Folgenden eine kurze Beschreibung der wichtigsten Knoten des Szenegraphen:

Der Szenegraph. Im Folgenden eine kurze Beschreibung der wichtigsten Knoten des Szenegraphen: Java 3d Java3D ist eine Bibliothek von Java Klassen zur Darstellung dreidimensionaler Graphik innerhalb von Java Applikationen und Applets. Die Struktur der darzustellenden Szene wird durch das Aufbauen

Mehr

Grundlagen geometrisches Zeichnen - CAD. E1: Grundlagen des geometrischen Zeichnens (14)

Grundlagen geometrisches Zeichnen - CAD. E1: Grundlagen des geometrischen Zeichnens (14) : des geometrischen Zeichnens (14) Die Schüler lernen die Skizze als wich2ge Voraussetzung zur Analyse und Modellierung konstruk2ver Problemstellungen kennen. Dabei eignen sie sich die des geometrischen

Mehr

https://portal.microsoftonline.com

https://portal.microsoftonline.com Sie haben nun Office über Office365 bezogen. Ihr Account wird in Kürze in dem Office365 Portal angelegt. Anschließend können Sie, wie unten beschrieben, die Software beziehen. Congratulations, you have

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Erinnerung. Arbeitsschritte der Computergraphik. Modellierung. Animation. Rendering. Ausgabemedium. Generierung

Erinnerung. Arbeitsschritte der Computergraphik. Modellierung. Animation. Rendering. Ausgabemedium. Generierung Erinnerung Arbeitsschritte der Computergraphik Modellierung Animation Generierung Ausgabemedium Graphik/-Pipeline Wandelt die Beschreibung einer Szene im dreidimensionalen Raum in eine zweidimensionale

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Softwareupdate-Anleitung // AC Porty L Netzteileinschub

Softwareupdate-Anleitung // AC Porty L Netzteileinschub 1 Softwareupdate-Anleitung // AC Porty L Netzteileinschub Softwareupdate-Anleitung // AC Porty L Netzteileinschub HENSEL-VISIT GmbH & Co. KG Robert-Bunsen-Str. 3 D-97076 Würzburg-Lengfeld GERMANY Tel./Phone:

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Contents. Interaction Flow / Process Flow. Structure Maps. Reference Zone. Wireframes / Mock-Up

Contents. Interaction Flow / Process Flow. Structure Maps. Reference Zone. Wireframes / Mock-Up Contents 5d 5e 5f 5g Interaction Flow / Process Flow Structure Maps Reference Zone Wireframes / Mock-Up 5d Interaction Flow (Frontend, sichtbar) / Process Flow (Backend, nicht sichtbar) Flow Chart: A Flowchart

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

12. Dokumente Speichern und Drucken

12. Dokumente Speichern und Drucken 12. Dokumente Speichern und Drucken 12.1 Überblick Wie oft sollte man sein Dokument speichern? Nachdem Sie ein Word Dokument erstellt oder bearbeitet haben, sollten Sie es immer speichern. Sie sollten

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

3. Drucken und Exporte

3. Drucken und Exporte 3. Drucken und Exporte 1. Drucken Um drucken zu können ist es nötig zuerst ein Objekt/Projekt zu erstellen. Nun wählt man den punkt Datei Druckereinrichtung aus. (siehe Abbildung 1). siehe hier Abbildung

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08 Security Patterns Benny Clauss Sicherheit in der Softwareentwicklung WS 07/08 Gliederung Pattern Was ist das? Warum Security Pattern? Security Pattern Aufbau Security Pattern Alternative Beispiel Patternsysteme

Mehr

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: ralf@informatik.uni-bonn.de Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume

Mehr

Softwareprojekt Spieleentwicklung

Softwareprojekt Spieleentwicklung Softwareprojekt Spieleentwicklung Prototyp I (2D) Prototyp II (3D) Softwareprojekt 12.04. 19.04. 26.04. 03.05. 31.05. Meilenstein I 28.06. Meilenstein II Prof. Holger Theisel, Tobias Günther, OvGU Magdeburg

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Preisliste für The Unscrambler X

Preisliste für The Unscrambler X Preisliste für The Unscrambler X english version Alle Preise verstehen sich netto zuzüglich gesetzlicher Mehrwertsteuer (19%). Irrtümer, Änderungen und Fehler sind vorbehalten. The Unscrambler wird mit

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Advanced Rendering Interior Szene

Advanced Rendering Interior Szene Advanced Rendering Interior Szene in Cinema 4D 11-11.5 Als erstes, sollten Sie ihre Szene in Cinema 4D öffnen. vergewissern sie sich, ob alle Licht quellen die evtl. mit importiert wurden, aus der Szene

Mehr

Informatikgrundlagen (WS 2015/2016)

Informatikgrundlagen (WS 2015/2016) Informatikgrundlagen (WS 2015/2016) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde

Mehr

Einkommensaufbau mit FFI:

Einkommensaufbau mit FFI: For English Explanation, go to page 4. Einkommensaufbau mit FFI: 1) Binäre Cycle: Eine Position ist wie ein Business-Center. Ihr Business-Center hat zwei Teams. Jedes mal, wenn eines der Teams 300 Punkte

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Version 0.3. Installation von MinGW und Eclipse CDT

Version 0.3. Installation von MinGW und Eclipse CDT Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.

Mehr

USB Treiber updaten unter Windows 7/Vista

USB Treiber updaten unter Windows 7/Vista USB Treiber updaten unter Windows 7/Vista Hinweis: Für den Downloader ist momentan keine 64 Bit Version erhältlich. Der Downloader ist nur kompatibel mit 32 Bit Versionen von Windows 7/Vista. Für den Einsatz

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

Getting Started General Workflow. Anlegen von Schablonen Ausrichtung 3.2. Atoms Precision V2 Tutorial. Working with Images Direct from Camera

Getting Started General Workflow. Anlegen von Schablonen Ausrichtung 3.2. Atoms Precision V2 Tutorial. Working with Images Direct from Camera Getting Started General Workflow Anlegen von Schablonen Ausrichtung 3.2 Atoms Precision V2 Tutorial Working with Images Direct from Camera Die Ausrichtungseinstellungen ermöglichen die Ausrichtung der

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Listening Comprehension: Talking about language learning

Listening Comprehension: Talking about language learning Talking about language learning Two Swiss teenagers, Ralf and Bettina, are both studying English at a language school in Bristo and are talking about language learning. Remember that Swiss German is quite

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Das komplette Material finden Sie hier: Download bei School-Scout.de

Mehr

Computer Graphik I Intro

Computer Graphik I Intro Computer Graphik I Intro 1 Ziele Modellierung 2 Ziele Bildgenerierung 3 Anwendungen Ausgabe 4 Kontakt Marc Alexa TU Berlin Computer Graphik marc.alexa@tu- berlin.de Raum EN 717 hep://www.cg.tu- berlin.de

Mehr

Aus Zahlen werden Bilder. Jan Tobias Mühlberg <muehlber@fh-brandenburg.de>

Aus Zahlen werden Bilder. Jan Tobias Mühlberg <muehlber@fh-brandenburg.de> Aus Zahlen werden Bilder 1 Aus Zahlen werden Bilder Jan Tobias Mu hlberg Quelle: http://www.emperor-penguin.com 2 3 Modellierung einer Realität Ein endlich genaues Modell der

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

3.2 Spiegelungen an zwei Spiegeln

3.2 Spiegelungen an zwei Spiegeln 3 Die Theorie des Spiegelbuches 45 sehen, wenn die Person uns direkt gegenüber steht. Denn dann hat sie eine Drehung um die senkrechte Achse gemacht und dabei links und rechts vertauscht. 3.2 Spiegelungen

Mehr

5 Zweisprachige Seiten

5 Zweisprachige Seiten 5 Zweisprachige Seiten TYPO3 unterstützt mehrsprachige Web-Sites. Hier zeigen wir Ihnen die Funktion an Hand einer zweisprachigen Web-Site. Bei drei oder mehr Sprachen gehen Sie analog vor. Jede Seite

Mehr

Die Übereckperspektive mit zwei Fluchtpunkten

Die Übereckperspektive mit zwei Fluchtpunkten Perspektive Perspektive mit zwei Fluchtpunkten (S. 1 von 8) / www.kunstbrowser.de Die Übereckperspektive mit zwei Fluchtpunkten Bei dieser Perspektivart wird der rechtwinklige Körper so auf die Grundebene

Mehr

Datentypen: Enum, Array, Struct, Union

Datentypen: Enum, Array, Struct, Union Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

PCB manuell generieren

PCB manuell generieren 60 PCB manuell generieren Folgende Ränder müssen gezeichnet bzw. importiert werden: 1. Mechanischer Rand der Platine (Mechanical 1 Layer) 2. Elektrischer Rand der Platine (Keep Out Layer) für Signal-Layers

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Einführung in die Robotik Kinematik. Mohamed Oubbati Institut für Neuroinformatik. Tel.: (+49) 731 / 50 24153 mohamed.oubbati@uni-ulm.de 20. 11.

Einführung in die Robotik Kinematik. Mohamed Oubbati Institut für Neuroinformatik. Tel.: (+49) 731 / 50 24153 mohamed.oubbati@uni-ulm.de 20. 11. Einführung in die Robotik Kinematik Mohamed Oubbati Institut für Neuroinformatik Tel.: (+49) 731 / 50 24153 mohamed.oubbati@uni-ulm.de 20. 11. 2012 Die Klausur findet am 12 März 2013 im H20 um 11h. Dauer:

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Einfärbbare Textur erstellen in GIMP (benutzte Version: 2.6.7)

Einfärbbare Textur erstellen in GIMP (benutzte Version: 2.6.7) Tutorial Einfärbbare Textur erstellen in GIMP (benutzte Version: 2.6.7) Vorbereiten: Ebenenfenster sichtbar Farben auf schwarz/weiß setzen (Einfach nur die Taste D drücken) Die Datei nach den Erstellen

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Algorithms & Datastructures Midterm Test 1

Algorithms & Datastructures Midterm Test 1 Algorithms & Datastructures Midterm Test 1 Wolfgang Pausch Heiko Studt René Thiemann Tomas Vitvar

Mehr

Definition und Begriffe

Definition und Begriffe Merkblatt: Das Dreieck Definition und Begriffe Das Dreieck ist ein Vieleck. In der Ebene ist es die einfachste Figur, die von geraden Linien begrenzt wird. Ecken: Jedes Dreieck hat drei Ecken, die meist

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

WORKSHOP für das Programm XnView

WORKSHOP für das Programm XnView WORKSHOP für das Programm XnView Zur Bearbeitung von Fotos für die Nutzung auf Websites und Online Bildergalerien www.xnview.de STEP 1 ) Bild öffnen und Größe ändern STEP 2 ) Farbmodus prüfen und einstellen

Mehr

Künstliches binäres Neuron

Künstliches binäres Neuron Künstliches binäres Neuron G.Döben-Henisch Fachbereich Informatik und Ingenieurwissenschaften FH Frankfurt am Main University of Applied Sciences D-60318 Frankfurt am Main Germany Email: doeben at fb2.fh-frankfurt.de

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

EEX Kundeninformation 2007-09-05

EEX Kundeninformation 2007-09-05 EEX Eurex Release 10.0: Dokumentation Windows Server 2003 auf Workstations; Windows Server 2003 Service Pack 2: Information bezüglich Support Sehr geehrte Handelsteilnehmer, Im Rahmen von Eurex Release

Mehr

Bilder. 2D Spiele programmieren in Java. Alpha channel. Formate. Optimierung. Empfehlung

Bilder. 2D Spiele programmieren in Java. Alpha channel. Formate. Optimierung. Empfehlung 2D Spiele programmieren in Java Teil 3: Bilder, Animationen Dr. Katja Wegner Dr. Ursula Rost Bilder Sind vielfach in Spielen einsetzbar (Menüs, Hintergrund, Objekte) Eigenschaften: Typ (e.g. bitmap, vector)

Mehr

miditech 4merge 4-fach MIDI Merger mit :

miditech 4merge 4-fach MIDI Merger mit : miditech 4merge 4-fach MIDI Merger mit : 4 x MIDI Input Port, 4 LEDs für MIDI In Signale 1 x MIDI Output Port MIDI USB Port, auch für USB Power Adapter Power LED und LOGO LEDs Hochwertiges Aluminium Gehäuse

Mehr

Plotten von Linien ( nach Jack Bresenham, 1962 )

Plotten von Linien ( nach Jack Bresenham, 1962 ) Plotten von Linien ( nach Jack Bresenham, 1962 ) Ac Eine auf dem Bildschirm darzustellende Linie sieht treppenförmig aus, weil der Computer Linien aus einzelnen (meist quadratischen) Bildpunkten, Pixels

Mehr

Magic Figures. We note that in the example magic square the numbers 1 9 are used. All three rows (columns) have equal sum, called the magic number.

Magic Figures. We note that in the example magic square the numbers 1 9 are used. All three rows (columns) have equal sum, called the magic number. Magic Figures Introduction: This lesson builds on ideas from Magic Squares. Students are introduced to a wider collection of Magic Figures and consider constraints on the Magic Number associated with such

Mehr

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten Matrikelnummer: Punkte: Testklausur 1 zur Vorlesung Modellierung und Programmierung I Dr. Monika Meiler Zeit: 60 Minuten Bemerkungen: Jedes Blatt ist mit der Matrikelnummer zu versehen. Jede Aufgabe ist

Mehr