Der Keksalgorithmus
-
Hallo Leute,
ich stehe vor folgender Aufgabe:
Gegeben ist ein Bild (JPEG-Datei), welches ich in lauter Stückchen zerlegen/zerbrechen will. Die Stückchen sollen alle möglichst zufällig/unterschiedlich aussehen. Das ganze soll aussehen wie wenn ich ein Keks in lauter Stücke zerbreche oder ich eine Glasscheibe auf den Boden werfe.
Der Funktionskopf soll also ungefähr so aussehen:
List<Bitmap> zerlgeInStücke(Bitmap bild)
{
...
}Habt ihr eine Idee, wie ich diese Aufgabe machen könnte?
Meine Idee bis jetzt: Man zeichnet lauter Linie, welche Irgentwo am Rand starten und dann krumm und verschnörkelt durchgehend gezogen werden. Die Linie muss dann wieder am Rand Enden. Auf diese Weise entsteht ein Bild, was bissel so aussieht:
http://meme.lachflaesh.de/_ph/5/1/123893692.jpg
Andere Idee: Ich nehme das große Stück und breche immer wieder ein kleines Stück davon ab.
Die Ideen sind alle noch sehr vage. Ich brauche Input Leute^^
-
Dazu verwendet man gerne Voronoi Zellen.
-
XMAMan schrieb:
Andere Idee: Ich nehme das große Stück und breche immer wieder ein kleines Stück davon ab.
Genau, du brauchst nur eine Funktion, die ein Viereck in zwei Teile zerbricht. Diese Funktion kannst du dann rekursiv auf die neuen Teile anwenden, bis du genug Splitter hast.
-
Danke.
Voronoi-Diagramme ist genau das was ich gesucht habe. Ich muss jetzt nur noch rausfinden, wie diese Diagramme konkret Funktionieren.
-
Naja, Voronoi macht nur konvexe Splitter.
Vierecke immer weiter in Vierecke teilen? Gehn wir weiter und bleiben bei Rechtecken und nennen uns Mondrian.
Man könnte auch kritzeln und dann färben.
Aber wenn Du Voronoi für angemessen hälst, gute Wahl, ist perfekt einfach zu implementieren. Gibt endlos Beispielcode im Netz.
-
Mir ist es wichtig, dass die Splitter möglichst keine Rechtecke sind. Bei Voronoi-Diagrammen kann man benachbarte ja auch wieder verbinden, so das ich dann Stücke erhalte, die ein bisschen wie eine Banane oder L-Stück aussehen, anstatt einfach nur lauter 5-Ecke. Diese Stücke müssten dann schon ziemlich ähnlich wie eine Glasscheibe aussehen, die ich runter schmeiße.
-
Vielleicht kannste bei Voronoi bleiben und am Ende die Geraden austauschen und gelegentlich mal einen leichten Bogen malen statt der Geraden oder mal einen Knick reinmachen.
-
XMAMan schrieb:
Diese Stücke müssten dann schon ziemlich ähnlich wie eine Glasscheibe aussehen, die ich runter schmeiße.
Bei so einem Scherbeneffekt ist die Form der einzelnen Teile viel weniger entscheidend als die Struktur des Ganzen (Beispielbild).
Und die Struktur kann man bei Voronoi gut beeinflussen weil man die Zentren der Zellen ja vorgibt und zB am Aufschlagpunkt einfach dichter verteilen kann.
-
-
http://www.youtube.com/watch?v=FIPu9_OGFgc
das ist eigentlich top notch bei spielen
-
rapso schrieb:
http://www.youtube.com/watch?v=FIPu9_OGFgc
das ist eigentlich top notch bei spielenPerfekt. In die Richtung wollte ich auch noch gehen. Zuerst wollte ich Voronoi nur für 2D-Spiele verwenden und dann später für 3D.
D.h., dass ist schon mal der richtige Ansatz.
-
Ok, ich hab mit Voronois Hilfe jetzt mal eine Funktion geschrieben, welche ein Bild in Einzelteile zerlegt. Die Anzahl und Position der Scherben kann über die Stützpunkte gesteuert werden.
http://img51.imageshack.us/img51/71/voronoi.jpg
Jetzt gehts zum nächsten Level^^
-
SO... Ich habe Mr. Voronoi nun auch in mein Motorradspiel, was ich hier schonmal gezeigt habe, eingebaut.
Das Motorrad fliegt nun in Einzelteile, wenn man gegen eine Wand fährt.
-
XMAMan schrieb:
SO... Ich habe Mr. Voronoi nun auch in mein Motorradspiel, was ich hier schonmal gezeigt habe, eingebaut.
Das Motorrad fliegt nun in Einzelteile, wenn man gegen eine Wand fährt.
Krass!
Das sieht wirklich gut aus.