2009-06-22 4 views
0

Ich habe ein gerades Bild und ich möchte es in einer wellenartigen Weise zu verformen.Kann diese Art von Wackelbild Deformation auf dem iPhone ohne Verwendung von OpenGL gemacht werden

Originalbild:

straight texture http://img145.imageshack.us/img145/107/woodstraight.png

und ich will es so aussehen (außer animiert):

bent texture http://img145.imageshack.us/img145/8496/woodbent.png

Ich habe die Lernkurve von openGL noch nicht in Angriff genommen, so Wenn ich das mit Core Animation machen könnte, wäre das großartig.

Ist das möglich?

+0

hey willc2 - müssen Sie die Verformung einmal oder in einer Animation durchführen? –

+0

in einer Animation, läuft kontinuierlich, mit wechselnder Größe der Wackel. Es würde auch eine Rotation geben. – willc2

+0

Das Bild selbst würde sich jedoch nicht ändern. – willc2

Antwort

0

Leider denke ich, das ist ein Job für OpenGL. Sie könnten denselben Effekt in Quartz erreichen, indem Sie das Bild vertikal aufteilen und Segmente mit verschiedenen vertikalen Offsets zeichnen ... aber ich denke nicht, dass Sie eine ausreichend gute Leistung erzielen könnten, um es zu animieren. (Zumindest mit 1px oder 2px breiten Scheiben)

Sie könnten das Bild auch stationär lassen und mit Quartz einen Maskierungspfad animieren, der die Wellenkanten erzeugt. Das würde wahrscheinlich nicht so natürlich aussehen.

Soweit ich weiß, ist Core Animation auf dem iPhone auch dazu nicht in der Lage. Auf dem Mac kommt es mit einigen fortgeschrittenen Filtern, aber ich denke, dass Sie wahrscheinlich viel mehr Zeug sehen würden, wenn die iPhone-Filter es tun könnten:

OpenGL hat eine ziemlich Lernkurve, aber hier ist was Sie möchten das tun, um den Effekt zu erzielen: Erstellen Sie ein flaches Rechteck in OpenGL mit mehreren Vertices entlang seiner Länge. Richten Sie die Kamera auf das Rechteck, so dass es flach erscheint. Verwenden Sie dann eine sine() - Funktion, um die Vertices vor und zurück zu animieren.

Dieser Ansatz wird auch verwendet, um den Plätschern-Wasser-Effekt zu erzielen, und Sie könnten ein oder zwei Beispiele davon finden.

Entschuldigung, schlechte Nachrichten zu bringen :-) Hoffe, dass hilft!

+0

Es war einen Versuch wert. – willc2