bildverzerrung à la liquify



  • hallo!

    ich würde gerne für ein projekt innerhalb meines studiums eine art von bildverzerrung implementieren, der so ähnlich funktionieren soll wie der liquify-filter von photoshop (zu finden unter Filer->Liquify). weiß vielleicht jemand mit welchen mitteln ich so etwas am besten lösen könnte?

    mein erster ansatz war das alles mit openGL zu lösen. ich lege sozusagen ein mesh über das bild und unterteile das in einzelne texturierte 'quads'. die vertices (und deren texturkoordinaten) werden dann verschoben und somit das bild verzerrt. ich bin mir jedoch nicht sicher, ob das die beste veriante ist. außerdem gibt es da schwierigkeiten mit der performance. mein pc is zwar nicht der allerschnellste, aber es haut irgendwie schon mit einem 20*30 raster nicht hin... die polygone zeichne ich mit dem glBegin(GL_QUADS) und glEnd() Befehen. aber vielleicht kann man ja auch da irgendwie mehr effizienz und eine bessere performance reinbringen.

    ich bin unendlich dankbar für jegliche art der hilfe.
    tausend dank,
    judif

    ps: ich bin ganz neu hier, also wenn ich blödsinn mache und es selbst nicht merke, einfach ganz laut schrei(b)en 🙂



  • Hi und willkommen!

    Ist "Chapter 13. Evaluators and NURBS" aus dem OpenGL Programming Guide nix für dich?



  • hallo!

    danke für den hinweis. leider bin ich ziemlich überfordert damit was es da zu lesen gibt. wenn ich mit derartigen dingen arbeiten würde, hätte ich dann eine bessere performance? welche vorteile würde es bringen?

    leider hab ich keinen plan, wie ich mathematisch vorgehen muß, um damit die gewünschte bildverzerrung hervorzurufen. das is mein größtes porblem dabei...

    lg, judif



  • Hmm, schwer.

    Also du könntest schauen, ob du mit http://libnurbs.sourceforge.net/index.shtml weiterkommst.
    Sollte schnell genug sein

    Das mit PixelShader zu realisieren, ist dann wohl auch zu schwer.

    Die Library ImageMagick hat auch ein paar schöne Funktionen zum Manipulieren von Bitmaps. Recht einfach zu bedienen.
    Ich nutze die allerdings nicht für RealTime Sachen, kann also zur Geschwindigkeit nix sagen.



  • Ich kenn den Photoshop Filter nicht. Aber grundsätzlich gibts 2 Möglichkeiten für Verzerrungen, nämlich Vertizen verschieben oder Texturkoordinaten. Wenn du das Bild in sagen wir 32*32= 1024 Vierecke unterteilst, hast du 2048 Tris. Das sollte heutzutage jede GraKa schaffen. Ist die Performance mies, liegt es vermutlich an dir.

    Bye, TGGC (Wähle deine Helden)


Anmelden zum Antworten