Forum: PC-Programmierung Gitter bewegen


von Sam .. (sam1994)


Lesenswert?

Hi

Ich habe schon öfter animationen gesehen, bei denen Bilder aufgewellt 
werden als ob sie irgendwie von der Seite geschüttelt werden oder Wellen 
durchlaufen (Hoffe ihr wisst was ich meine).
Ich kann mir schlecht vorstellen wie man so was implementieren sollte.

Ich würde das gerne mal an einem Gitter probieren. Aber wie macht man 
was. Pixel setzen dauert ewig. Man müsste das doch mit irgendwelchen 
Kurvenfunktionen machen. Oder was DirectX mäßiges (da ist Pixel 
bearbeitung nicht mehr langsam).

Ein Link zum einarbeiten wäre mir auch recht.

Wenn jemand Geometry Wars Retro Evolved kennt, da ist auch so ein Effekt 
dieser Art dabei.

von hp-freund (Gast)


Lesenswert?

Für solche Infos schaue ich zuerst bei youtube vorbei z.B.:

http://www.youtube.com/watch?v=1EFFfde_rog

Teilweise gibt es dann vom Entwickler die Gleichungen oder den ganzen 
Code auf seiner Webseite bzw. einen link....

von Karl H. (kbuchegg)


Lesenswert?

Samuel K. schrieb:

> Ich würde das gerne mal an einem Gitter probieren. Aber wie macht man
> was. Pixel setzen dauert ewig.

Sowas macht man auch normalerweise nicht auf Pixelebene.

> Man müsste das doch mit irgendwelchen
> Kurvenfunktionen machen. Oder was DirectX mäßiges (da ist Pixel
> bearbeitung nicht mehr langsam).

Der Trick liegt meistens darin, dass man im Programm einen Buffer hat, 
der das Bild enthält. Alle Bildmanipulationen macht man in diesem Buffer 
und erst dann, wenn das nächste Teilbild fertig ist, schmeisst man es in 
einem Rutsch auf die Anzeige. Dann sieht man nicht, wie das Bild 
pixelweise zusammengesetzt wird.
Ob dieser Buffer jetzt bei dir im Programm ist, oder ob die Grafiklib 
diesen Buffer vorhält, ist gehupft wie gesprungen. Wichtig ist, dass es 
etwas derartiges gibt.

Ich denke es gibt da draussen genügend Tuorials, die einen in die 
Grfaikprogrammierung einführen. Sind alle mit Google zu finden.

von Sam (Gast)


Lesenswert?

Also mit Spiele und Grafikprogrammierung kenne ich mich schon ein 
bisschen aus. Da nutzte ich bei größeren Programmen immer Pageflipping, 
sonst einen Buffer im Videoram.

Letzendlich wird aber doch auf pixelebene gearbeitet (auch wenn in einer 
Liste).

Karl heinz Buchegger schrieb:
> Ich denke es gibt da draussen genügend Tuorials, die einen in die
> Grfaikprogrammierung einführen. Sind alle mit Google zu finden.

Das was da beeschrieben wird brauche ich nicht mehr. Ich weiß wie ich 
Bilder rotiere, transparent zeichen, eine konstante Framerate erzeuge, 
Timer benutze...

Bisher habe ich immer (z.t. auch transparente) Partikeleffekte genutzt. 
Das ist aber auch deutlich leichter.

von Vlad T. (vlad_tepesch)


Lesenswert?

ich würde mit direct 3d eine Gitter erzeugen und das eigentliche Bild 
als Textur drauflegen.
dann kannst du die 3d Punkte verändern wie du willst und die Graka 
berechnet die Verzerrung

von Sam .. (sam1994)


Lesenswert?

Vlad Tepesch schrieb:
> ich würde mit direct 3d eine Gitter erzeugen und das eigentliche Bild
> als Textur drauflegen.
> dann kannst du die 3d Punkte verändern wie du willst und die Graka
> berechnet die Verzerrung

Muss ich mal ausprobieren. Allerdings habe ich mit bisher nur ein paar 
Sachen mit DX9/10 gemacht. Texturen hab ich noch nicht benutzt (hab noch 
keine richtigen 3d Spiele programmiert, außer Isometrische Persp.).

Für das was ich jetzt machen will brauch ich das grad nur für ein 
Gitter. Das möchte ich auch mit einer 2d Lib machen. Da gibts zwar auch 
ein paar 3d Funktionen, allerdigns blick ich da noch weniger durch als 
bei DX3D.

von Sam .. (sam1994)


Lesenswert?

OK, das ganze nennt man tatsächlich Wave Equation.
http://en.wikipedia.org/wiki/Wave_equation

Leider ist das in Englisch. Kennt jemand den Fachbegriff im Deutschen?

von Karl H. (kbuchegg)


Lesenswert?

Samuel K. schrieb:
> OK, das ganze nennt man tatsächlich Wave Equation.
> http://en.wikipedia.org/wiki/Wave_equation
>
> Leider ist das in Englisch. Kennt jemand den Fachbegriff im Deutschen?

Einfach 1:1 übersetzen: Wellengleichung


Allerdings ist das da viel zu komplex um es für Computergrafik zu 
verwenden. Da braucht man einfache, schnell zu berechnende Dinge.

Hast du es denn jetzt schon geschafft, mit der 3D Lib deiner Wahl eine 
einzelne Fläche (zb Dreieck oder Rechteck) im 3D zu bauen und 
anzuzeigen? Lass fürs erste Farbe, Schattierung oder Textur links 
liegen. Reines Drahtmodell ist für den Anfang gut genug.

von Sam (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Allerdings ist das da viel zu komplex um es für Computergrafik zu
> verwenden. Da braucht man einfache, schnell zu berechnende Dinge.

Kennst du Galaxie Wars für den PC (Retro Evolved)?
Da ist das so gemacht.

> Hast du es denn jetzt schon geschafft, mit der 3D Lib deiner Wahl eine
> einzelne Fläche (zb Dreieck oder Rechteck) im 3D zu bauen und
> anzuzeigen? Lass fürs erste Farbe, Schattierung oder Textur links
> liegen. Reines Drahtmodell ist für den Anfang gut genug.

Das ist kein Problem. Wie gesagt ich hab schon mal in 3D reingeschaut. 
Ein X- File hab ich noch nie geladen, aber das brauch ich dafür ja 
nicht.

Im Prinzip muss man nur einen Buffer mit den Punkten erzeugen und in 
anzeigen.
Achja ich mach das mit c#, da ich es damit einfacher finde, aber das 
macht ja kein Unterschied.

von Kalka (Gast)


Lesenswert?

Hey,

also im Grunde ist das gar nicht so schwer. Mit dem Drahtgitter-Modell 
würde ich es auch versuchen. Je nachdem, wie viele Punkte du verwendest, 
desto "runder" sieht dein Effekt nachher aus.

Im folgendem Beispiel wird zum Beispiel ein Gitter aus 45*45 Punkten 
erzeugt. Jeder Punkt enthält dabei eine x,y und z Koordinate - das ist 
später praktisch zum zeichnen (einmal die x und y Werte berechnen - 
fertig). Durch verändern der z-Koordinate kannst du nun solche Effekte 
erzeugen.

Das ist ein Tutorial über OpenGL, in welchem eine Flagge gerendert wird. 
Ist natürlich nicht analog zu DirectX, aber das Prinzip sollte das 
gleiche sein. Vielleicht hilft es dir weiter ;)

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=11

Grüße, Kalka

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.