FH-Hof Animation - Teil 1 Richard Göbel. FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing)

Slides:



Advertisements
Ähnliche Präsentationen
Konzeptioneller Vergleich von VRML, Java3D und OpenGL hinsichtlich ihrer Eignung zur Erstellung von Animationen von Christian Stein.
Advertisements

der Universität Oldenburg
DES-Simulator in JAVA, objektorientiert
Animation in Java 3D Ausarbeitung im Seminar Java 3D
Collision Detection in Java3D Hristo Matev WS 02/03.
Eine Seminararbeit von Gerd Mühlinghaus
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Java3D Einfacher scene graph View branch graph BG Shape3D Knoten S
Anwendungen des OODM auf die ADB / NDB
Application Programming Interface Graphische Datenverarbeitung
Threads Richard Göbel.
Binäre Bäume Richard Göbel.
Java: Reversi Spielbrett
Sortieren mit Binären Bäumen
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
Java: Objektorientierte Programmierung
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Java2D Richard Göbel.
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
FH-Hof Reversi: Erweiterungen für den AutoClient Richard Göbel.
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Listen Richard Göbel.
FH-Hof Eine kleine Theorie der Zeit Richard Göbel.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Indirekte Adressierung
Licht und Schatten Richard Göbel.
FH-Hof Automatisches Erzeugen von Geometrie Richard Göbel.
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
JTree Richard Göbel.
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.
Java: Referenzen und Zeichenketten
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Konstruktoren.
Realisierung eines 3D-Spiels mittels Lightwave3D und Java3D Hristo Matev Cactus WS 03/04 Systemprogrammierung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Abstrakter Datentyp in C++ I - Klasse -
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Benutzer Interaktion Benutzer Interaktion (interaction): die virtuelle Welt reagiert auf Benutzer Eingaben.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
FH-Hof Sortieren mit Binären Bäumen Richard Göbel.
FH-Hof Konfiguration eines Universums Richard Göbel.
FH-Hof Licht Richard Göbel. FH-Hof Licht in Java3D - Basisideen Bereitstellung unterschiedlicher Lichtquellen Definition der Wirkung einer Beleuchtung.
Template Pattern Richard Göbel.
FH-Hof Sound Richard Göbel. FH-Hof Geräusche in Java3D Klasse MediaContainer als Datenlieferant MediaContainer(java.io.InputStream stream). MediaContainer(java.lang.String.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Die Klasse Vielfrass in Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Grundkurs Informatik 11-13
 Präsentation transkript:

FH-Hof Animation - Teil 1 Richard Göbel

FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing) Änderungen relativ zur Position des Beobachters Billboards Level of Detail

FH-Hof Darstellung ändern - WakeupOnElapsedFrames Behavior-Objekt definieren Als Ereignis WakeupOnElapsedFrames registrieren new WakeupOnElapsedFrames(0) Methode processStimulus führt die Änderungen aus Darstellung Geometrie Beobachter

FH-Hof Darstellung ändern - Beispiel I / Teil 1 public class AnimBeh extends Behavior { private TransformGroup tg; private Transform3D tr = new Transform3D(); private Vector3f v = new Vector3f(0,1,0); private float angle = 0; private AxisAngle4f aa = new AxisAngle4f(); private WakeupCondition wakeup = new WakeupOnElapsedFrames(0); public AnimBeh (TransformGroup g) { tg = g; }... Darstellung Geometrie Beobachter

FH-Hof Darstellung ändern - Beispiel I / Teil 2... public void initialize () { wakeupOn(wakeup); } public void processStimulus(Enumeration criteria) { angle += 0.1; if (angle >= Math.PI*2) angle = 0; aa.set(v,angle); tr.setRotation(aa); tg.setTransform(tr); wakeupOn(wakeup); } Darstellung Geometrie Beobachter

FH-Hof Darstellung ändern - Zeitverlauf Geschwindigkeit der Animation hängt von der Frame- Rate ab Frame-Rate ist abhängig von: Geschwindigkeit des Rechners Grafikkarte Rechnerauslastung... Dieser Ansatz ist für viele Anwendungen nicht geeignet (zum Beispiel Uhr) Darstellung Geometrie Beobachter

FH-Hof Definition eines Alpha Ein Alpha liefert ein periodisches Signal in Abhängigkeit von der Systemzeit Beispiele für Konstruktoren: Alpha(int loopCount, long increasingAlphaDuration) Alpha(int loopCount, long triggerTime, long phaseDelayDuration, long increasingAlphaDuration, long increasingAlphaRampDuration, long alphaAtOneDuration) Darstellung Geometrie Beobachter

FH-Hof Parameter für ein Alpha Darstellung Geometrie Beobachter

FH-Hof Beispiel für Behavior-Klasse mit Alpha 1 public class AlphaBeh extends Behavior { private TransformGroup tg; private Alpha alpha; private Transform3D tr = new Transform3D(); private Vector3f v = new Vector3f(0,1,0); private AxisAngle4f aa = new AxisAngle4f(); private WakeupCondition wakeup = new WakeupOnElapsedFrames(10); public AlphaBeh (TransformGroup g, Alpha a) { tg = g; alpha = a; }... Darstellung Geometrie Beobachter

FH-Hof Beispiel für Behavior-Klasse mit Alpha 2... public void initialize () { wakeupOn(wakeup); } public void processStimulus(Enumeration criteria) { aa.set(v,(float) (alpha.value()*2*Math.PI)); tr.setRotation(aa); tg.setTransform(tr); wakeupOn(wakeup); } Darstellung Geometrie Beobachter

FH-Hof Verwendung der Behavior-Klasse: Beispiel public BranchGroup createSceneGraph() {... TransformGroup trans = new TransformGroup(); trans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(trans); trans.addChild(new ColorCube(0.2)); Alpha alpha = new Alpha(-1,4000); AlphaBeh abeh = new AlphaBeh(trans, alpha); abeh.setSchedulingBounds(new BoundingSphere()); trans.addChild(abeh);... } Darstellung Geometrie Beobachter

FH-Hof Vordefinierte Unterklassen von Behavior ColorInterpolator KBSplinePathInterpolator PathInterpolator PositionInterpolator RotationInterpolator ScaleInterpolator SwitchValueInterpolator TCBSplinePathInterpolator TransparencyInterpolator Darstellung Geometrie Beobachter

FH-Hof Beispiel für die Verwendung eines Interpolators public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); TransformGroup trans = new TransformGroup(); trans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(trans); trans.addChild(new ColorCube(0.2)); Alpha alpha = new Alpha(-1,10000); RotationInterpolator rot = new RotationInterpolator(alpha,trans); rot.setSchedulingBounds(new BoundingSphere()); trans.addChild(rot); objRoot.compile(); return objRoot; } Darstellung Geometrie Beobachter

FH-Hof Änderung der Geometrie (Morphing) Definition von zwei oder mehr Geometrien mit identischer Anzahl an Punkten Erzeugung eines gleitenden Übergangs mit einem Objekt der Klasse Morph Steuerung der Änderung mit Hilfe eines Behavior- Objekts Darstellung Geometrie Beobachter

FH-Hof Beispiel Blasebalg (Pump) - Geometrie 1 Darstellung Geometrie Beobachter

FH-Hof Beispiel Blasebalg (Pump) - Geometrie 2 Darstellung Geometrie Beobachter

FH-Hof Beispiel für ein Morph-Objekt public BranchGroup createSceneGraph() {... GeometryArray[] garray = new GeometryArray[2]; garray[0] = new PumpFull(); garray[1] = new PumpEmpty(); Morph mo = new Morph(garray); mo.setCapability(Morph.ALLOW_WEIGHTS_WRITE); objRoot.addChild(mo); Alpha alpha = new Alpha(-1, 2000); alpha.setMode(Alpha.INCREASING_ENABLE | Alpha.DECREASING_ENABLE); alpha.setDecreasingAlphaDuration(2000); PumpBeh beh = new PumpBeh(mo, alpha); beh.setSchedulingBounds(new BoundingSphere()); objRoot.addChild(beh);... } Darstellung Geometrie Beobachter

FH-Hof Behavior-Klasse für ein Morph-Objekt - Teil 1 public class PumpBeh extends Behavior { private Morph mo; private double weights[] = new double[2]; private Alpha alpha; private WakeupCondition wakeup = new WakeupOnElapsedFrames(0); public PumpBeh (Morph m, Alpha a) { mo = m; alpha = a; }... Darstellung Geometrie Beobachter

FH-Hof Behavior-Klasse für ein Morph-Objekt - Teil 2... public void processStimulus(Enumeration criteria) { weights[0] = alpha.value(); weights[1] = 1 - weights[0]; mo.setWeights(weights); wakeupOn(wakeup); } Darstellung Geometrie Beobachter