Langsame(re) Bewegungen / Animationen

Luk10

Top Contributor
Grüße,

Ich probiere gerade ein bissche mit bewegten und/oder animierten 2D - Sprites herum.
Ich habe also ein BufferedImage[] mit vielen (40 in meinem konkreten Beispiel) Einzelbildern, die ich dann wie ein Daumenkino animiere. Die Images sind 50x50 Pixel, und die Zeichenoberfläche 400x300 groß.

Es funktioniert soweit alles sehr gut. Allerdings nur wenn ich eine Animation von [50ms / neues Image] bzw [50ms / Pixel in x und/oder y Richtung] habe.
Ab einer "Geschwindigkeit von > 100 ms fängt die Bewegung an zu ruckeln bzw sie sieht nicht mehr flüssig aus. Genauso bei der Animation, wobei man hier mit mehr Einzel-Images entgegenwirken kann. Jedoch kann ich mein Bild nicht um 0,5 Pixel bewegen und mehr als 80 Einzelbilder ist ein riesiger Aufwand.

Ich will aber eine langsamere Bewegung / Animation meines Sprite (200-500 ms / Pixel, Image) flüssig umsetzten...
Kann mir jemand einen Tipp geben wie ich das auch ruckelfrei hinbekomme? Oder ist das schlichtweg nicht möglich?
Würde micht sehr über Hilfe freuen. Muss nichts konkretes sein sondern eher Ideen bzw Ansätze.

Danke,
-Luk10-
 
Zuletzt bearbeitet:

Cola_Colin

Top Contributor
Zur Animation:
Hier kommst du wohl kaum daruum herum mehr Zwischenbilder darzustellen, wenn du nur alle 100ms ein neues Bild zeigst sind das 10 Bilder pro Sekunde > ruckelt eben...

Zur Bewegung:
Ähnliches Problem, wenn du nur 10mal pro Sekunde um einen Pixel nach rechts gehst, so sind das eben nur 10 Bilder die Sekunde und die kann dein Kopf noch recht gut auseinanderhalten. Hier würde ich es mit Kantenglättung versuchen. Beispiel:
X sei ein schwarzes Pixel, Y ein graues und O ein weißes pixel:

XOOOO
XYOOO
YXOOO
OXYOO
OYXOO

usw...

Praktisch der Unschärfefilter, den viele Spiele aktuell gerne mal anwenden, um alles ein bisschen flüssiger wirken zu lassen.
 

Luk10

Top Contributor
Hmhmhm ... danke erstmal für deine Antwort.

Animation ... gut da werde ich evt. noch weiter mit mehr Bildern rumprobieren.
Zum Thema Kantenglättung:

Ich verwende bereits halbtransparente Pixel in den .png Datein die ich dann als Images verwende ... Hat des dann überhaupt noch einen Effekt die Kanten nochmal zu Glätten? Wie kann man sowas bewerkstelligen?

Danke,
-Luk10-
 

Cola_Colin

Top Contributor
Mit Java2D kannst du sowas probieren:

Java:
           RenderingHints renderQuality;

        renderQuality = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);

            renderQuality.put(RenderingHints.KEY_RENDERING,
                    RenderingHints.VALUE_RENDER_QUALITY);

            renderQuality.put(RenderingHints.KEY_TEXT_ANTIALIASING,
                    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

            renderQuality.put(RenderingHints.KEY_FRACTIONALMETRICS,
                    RenderingHints.VALUE_FRACTIONALMETRICS_ON);

            renderQuality.put(RenderingHints.KEY_DITHERING,
                    RenderingHints.VALUE_DITHER_ENABLE);

            renderQuality.put(RenderingHints.KEY_INTERPOLATION,
                    RenderingHints.VALUE_INTERPOLATION_BILINEAR);

            ((Graphics2D) g).addRenderingHints(renderQuality);

           // nun auf g rumzeichnen.

Den Effekt verstärken kann man, indem man erst alle Sprites einzeln mit Kantenglättung auf ein BufferedImage zeichnet und diese gesamte Bild dann nocheinmal mit Kantenglättung in die Sichtfläche des Spielers zeichnet.

Ob diese Glättung nun ausreicht, um dein Problem zu lösen, weiß ich nicht, für den Zweck habe ich das nie verwendet.

Zur Transparenz: wenn du die Bilder zum Rand hin immer transparenter machst, dann dürfte das einen ähnlichen glättenden Effekt haben. Wenn sie dagegen gleichmäßig überall transparent sind, bringt es nichts. Denke ich...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Doopy Langsame Beschleunigung darstellen Spiele- und Multimedia-Programmierung 5
B Fehlerhafte Mob Bewegungen in Tower Defense Spiel Spiele- und Multimedia-Programmierung 2
A Bewegungen mit JOGL Spiele- und Multimedia-Programmierung 12
G Bewegungen von Spielfigur Spiele- und Multimedia-Programmierung 2
E Java - Schnellere bewegungen Spiele- und Multimedia-Programmierung 27
G Flüssige Bewegungen Spiele- und Multimedia-Programmierung 7
G Vordefinierte Bewegungen Spiele- und Multimedia-Programmierung 4
DEvent ein kleines Billiard Spiel und die bewegungen der Kugeln Spiele- und Multimedia-Programmierung 3
B Animationen Spiele- und Multimedia-Programmierung 4
G 2D animationen LWJGL Spiele- und Multimedia-Programmierung 0
J Flackern bei Animationen Spiele- und Multimedia-Programmierung 6
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
Maxim6394 [Java3D] Probleme mit KeyFrame Animationen Spiele- und Multimedia-Programmierung 9
Luk10 Tipps für bessere Animationen / Grafik Engine Spiele- und Multimedia-Programmierung 2
E Animationen und Pfadinterpolation auf basis von Swing Spiele- und Multimedia-Programmierung 2
Plastagen Frameworls für Animationen und co Spiele- und Multimedia-Programmierung 3
F schöne Animationen auf 2D Canvas Spiele- und Multimedia-Programmierung 4
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
T Bitte um Hilfe bei Animationen Spiele- und Multimedia-Programmierung 10
W Animationen? (grundlegendes) Spiele- und Multimedia-Programmierung 5
A Animationen und Hintergrund Spiele- und Multimedia-Programmierung 4
B Einfache Animationen darstellen Spiele- und Multimedia-Programmierung 12
G gif animationen werden schnell abgespielt Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben