Nahtlos wiederholbare Texturen aus 4D Rauschen


Unlängst schrieb ich noch, dass ich nicht weiß, wie man nahtlos wiederholbare Texturen aus Simplex Noise erzeugen kann. Versuche per Modulo-Operator zu wiederholbaren Mustern zu kommen schlugen fehl. Ich denke trotzdem, dass es per Modulo gehen müsste, aber mir fehlt das Verständnis für die „Innereien“ der Simplex Noise, um den Eingriff richtig durchzuführen.

Bei einer Recherche nach hilfreichen Informationen bin ich dann auf diesen Artikel gestoßen:

https://www.gamedev.net/blogs/entry/2138456-seamless-noise/

Die Idee mit dem 3D Torus hatte ich auch schon, aber aus eben dem Grund verworfen, den der Autor des Artikels auch nennt – es gibt Verzerrungen im Muster, weil der innere Radius des Torus kleiner ist als der äußere und die abgerollte Fläche streng genommen kein Rechteck ist, bzw. wenn man sie auf ein Rechteck abbildet, dann wird das Muster auf der Fläche verzerrt.

Was ich nicht wusste, ist, dass man den Torus-Trick auch in vier Dimensionen machen kann, und dass sich die Einbettung zweier Kreisbewegungen in vier Dimensionen verzerrungsfrei auf ein Rechteck abbilden lässt.

Nahtlos wiederholbares Muster
Nahtlos wiederholbares Muster

Der Nachteil ist, dass die Berechnung der Simplex Noise in vier Dimensionen deutlich langsamer ist als in zwei Dimensionen. Aber zumindest habe ich jetzt eine Möglichkeit, nahtlos wiederholbare Texturen zu errechnen.

Wiederholung 2x2
Wiederholung 2×2

Da fragen die Leute immer, wozu im Leben man so viel Mathe braucht – also wenn man mit prozeduraler  Computergrafik arbeitet, dann beantwortet sich die Frage von selbst. Und selbst wenn ich viel Mathe im Studium gelernt habe, es war immer noch nicht genug für diese Art von Anwendungen. Sonst könnte ich jetzt die Simplex Noise auch Modulo rechnen und müsste nicht über den 4D Trick gehen, der sich mir auch nur ungefähr erschliesst – auch wenn ich die Abwicklung eines 3D Torus auf eine 2D Fläche mathematisch gerade noch so hinbekommen hätte, in 4D hätte ich das ohne die Hilfe des Artikels nicht geschafft, besser gesagt, ich hätte mir nicht mal vorstellen können, dass es für 4D eine analoge und verzerrungsfreie Abwicklung gibt.

 

 

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s