Hallo!
Wie kann ich mit Pygame auf festgelegten Bereichen (Polygone) eines Surface einen Wasserwellen Effekt machen?
Pygame: Wasser-Effekt auf Teile eines Surface
-
- User
- Beiträge: 42
- Registriert: Montag 8. November 2010, 15:25
- Wohnort: Braunschweig
- Kontaktdaten:
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Deine Frage ist zu allgemein gefasst.
Was exakt meinst du mit "festgelegtem Bereich" und welche Art Effekt soll das werden?
Was exakt meinst du mit "festgelegtem Bereich" und welche Art Effekt soll das werden?
-
- User
- Beiträge: 42
- Registriert: Montag 8. November 2010, 15:25
- Wohnort: Braunschweig
- Kontaktdaten:
Bereiche in einem vorgerenderten Standbild die durch Angabe von Kordinaten von Polygonen definiert werden sollen animiert werden.
Es soll so wie die Wasseranimationen im Adventure-Klassiker "Riven" aussehen.
Edit:
Hier sieht man das z.B.
https://www.youtube.com/watch?v=x_kRXvgQ_ls
Edit 2:
Man kann in Riven die Wasser-Animation auch abschalten.
Dann sieht man, dass es eigentlich nur Standbilder sind, wo das Wasser mit irgendeinem Algorithmus animiert wird.
Es soll so wie die Wasseranimationen im Adventure-Klassiker "Riven" aussehen.
Edit:
Hier sieht man das z.B.
https://www.youtube.com/watch?v=x_kRXvgQ_ls
Edit 2:
Man kann in Riven die Wasser-Animation auch abschalten.
Dann sieht man, dass es eigentlich nur Standbilder sind, wo das Wasser mit irgendeinem Algorithmus animiert wird.
Halbwegs glaubwürdiges Wasser ist nicht ganz einfach. Mit zu wenigen Polygonen und ordentlichen Reflexionen sieht es sehr billig aus. Eigentlich brauchst du auch noch Lichtbrechung, damit es einigermaßen aussieht. Wirf zu dem Thema mal die Suchmaschine deiner Wahl an, zu dem Thema gibt es wirklich hunderte von Tutorials und Papers.
Das Leben ist wie ein Tennisball.
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Ich bezweifle, dass er das meinte. Wenn ich es richtig verstanden habe, dann soll auf einem Bild ein Animationseffekt gezeichnet werden. Das hat nichts mit Polygonen im Sinne von Vertex-Animationen usw. zu tun.EyDu hat geschrieben:Halbwegs glaubwürdiges Wasser ist nicht ganz einfach. Mit zu wenigen Polygonen und ordentlichen Reflexionen sieht es sehr billig aus. Eigentlich brauchst du auch noch Lichtbrechung, damit es einigermaßen aussieht. Wirf zu dem Thema mal die Suchmaschine deiner Wahl an, zu dem Thema gibt es wirklich hunderte von Tutorials und Papers.
Wellenbewegungen kann man sehr leicht durch nachträgliches Manipulieren der einzelnen Pixel im Bild erzeugen. Als einfachste Lösung bietet sich dabei die Verschiebung der Pixel gemäß einer Sinus-Funktion mit festen Parametern an. Um das nur auf Wasser und nicht auf dem Rest des vorgerenderten Bildes zu sehen, maskiert man das Ganze dann nachträglich.
Ich kann es im Video nicht exakt erkennen, aber das Wasser könnte durchaus mit einem ähnlichen Verfahren "bewegt" werden. Freunden älterer Bildschirmschoner mit Wasserfällen usw. dürfte dieser Effekt gut bekannt sein.
-
- User
- Beiträge: 42
- Registriert: Montag 8. November 2010, 15:25
- Wohnort: Braunschweig
- Kontaktdaten:
Genau diesen Effekt meine ich.Madmartigan hat geschrieben: Ich bezweifle, dass er das meinte. Wenn ich es richtig verstanden habe, dann soll auf einem Bild ein Animationseffekt gezeichnet werden. Das hat nichts mit Polygonen im Sinne von Vertex-Animationen usw. zu tun.
Wellenbewegungen kann man sehr leicht durch nachträgliches Manipulieren der einzelnen Pixel im Bild erzeugen. Als einfachste Lösung bietet sich dabei die Verschiebung der Pixel gemäß einer Sinus-Funktion mit festen Parametern an. Um das nur auf Wasser und nicht auf dem Rest des vorgerenderten Bildes zu sehen, maskiert man das Ganze dann nachträglich.
Ich kann es im Video nicht exakt erkennen, aber das Wasser könnte durchaus mit einem ähnlichen Verfahren "bewegt" werden. Freunden älterer Bildschirmschoner mit Wasserfällen usw. dürfte dieser Effekt gut bekannt sein.
Wie nennt sich dieser Effekt genau?
Ich finde bei Google bei EIngabe von "Sinus Wasser Animation Effekt" nichts.
Mit Polygonen meine ich eben keine 3D Polygone, sondern einen Bereich in einer 2D-Grafik (so wie z.B. die Freihand-Auswahl oder das Lasso-Werkzeug von GIMP).
Nennt man das nicht Polygone?
Dann such mal in die Richtung "caustics, texture, animated". Dann kannst du dir einige Kaustiken anschauen (oder diese verwenden). Zu dem Thema gibt es auch Generatoren, aber mit dem passenden Suchbegriff wirst du es schon finden.
Das Leben ist wie ein Tennisball.
Vielleicht kann man sowas anwenden:
Code: Alles auswählen
''' pg_LiquidImage1.py
PyGame liquid effect on a single image
'''
import pygame as pg
import math
pg.init()
# set width and height of pygame window
w = 600
h = 400
screen = pg.display.set_mode((w, h), pg.HWSURFACE|pg.DOUBLEBUF)
pg.display.set_caption('Animation of single image')
# load an image file you have
# if not in the working folder, add full path
image_file = 'PythonHand2.jpg'
bitmap = pg.image.load(image_file)
# optionally double the image size
bitmap = pg.transform.scale2x(bitmap)
# put image and screen into the same format
if screen.get_bitsize() == 8:
screen.set_palette(bitmap.get_palette())
else:
bitmap = bitmap.convert()
increment = 0.0
x_list = range(0, w, 10)
y_list = range(0, h, 10)
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
raise SystemExit
increment += 0.08
for x in x_list:
xpos = (x + (math.sin(increment + x*0.01)*15)) + 20
for y in y_list:
ypos = (y + (math.sin(increment + y*0.01)*15)) + 20
screen.blit(bitmap, (x, y), (xpos, ypos, 20, 20))
pg.display.flip()
Atomkraftwerkaktienbesitzer