Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Baldhild Wellnitz Geändert vor über 11 Jahren
1
FH-Hof Animation - Teil 1 Richard Göbel
2
FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing) Änderungen relativ zur Position des Beobachters Billboards Level of Detail
3
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
4
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
5
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
6
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
7
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
8
FH-Hof Parameter für ein Alpha Darstellung Geometrie Beobachter
9
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
10
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
11
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
12
FH-Hof Vordefinierte Unterklassen von Behavior ColorInterpolator KBSplinePathInterpolator PathInterpolator PositionInterpolator RotationInterpolator ScaleInterpolator SwitchValueInterpolator TCBSplinePathInterpolator TransparencyInterpolator Darstellung Geometrie Beobachter
13
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
14
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
15
FH-Hof Beispiel Blasebalg (Pump) - Geometrie 1 Darstellung Geometrie Beobachter
16
FH-Hof Beispiel Blasebalg (Pump) - Geometrie 2 Darstellung Geometrie Beobachter
17
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
18
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
19
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
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.