Laden...

Texture Generator... Seamless Textures

Erstellt von dr4g0n76 vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.549 Views
dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 12 Jahren
Texture Generator... Seamless Textures

Vorneweg:

Würdet ihr das auch so machen, oder ein ganz anderes Verfahren wählen?

Ich möchte für die LowLevelGraphicsLibrary eine Funktion zur Verfügung stellen, die mit dem TextureCreator benutzt werden kann.

Wie die Überschrift schon sagt, sollen automatisch Seamless Textures erstellt werden können, aus einem Bild.

Ich schlage folgende Vorgehensweise vor:

Wenn P das Bild ist, wird automatisch p kopiert und viermal gegenüber gestellt:

P P
P P

Quasi wie Tiles in einem Spiel oder Landschaftseditor..., s. dazu auch angehängtes Bild....

Hier ist ja anhand der "Seams" noch klar erkennbar, wo die Grenzen des Ausgangsbilds sind.

Da das Bild jetzt so mit sich selbst 4 mal nebeneinander steht, kann ja quasi für jeden Rand, eine Überblendungsfunktion berechnet werden.

(Intern reicht es natürlich auch aus das Bild nur einmal zu haben und die gegenüberliegenden Seiten zu betrachten, jeweils links mit rechts und oben mit unten)

Also würde mir jetzt quasi eine Überblendungsfunktion reichen, die die Seams reduziert, zur Überprüfung würde es reichen, ob man noch Kanten findet.

Also nochmal:

Würdet ihr das auch so machen, oder ein ganz anderes Verfahren wählen?

P.S.: Für die Audiofreaks: Quasi wie ein Crossfade im Audiobereich... als Analogie...

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo dr4g0n76,

P1 P2
P3 P4

wenn P1 das Ausgangs-Tile ist, sollte es doch reichen es vertikal gespiegelt als P2, horizontal gespiegelt als P3 und diagonal (also vertikal und horizontal) gespiegelt als P4 zu verwenden.

herbivore

A
764 Beiträge seit 2007
vor 12 Jahren

@herbivore
Dann hat man aber immer so Inseln oder Viererblöcke. Das kann schon unschön aussehen imho.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Alf Ator,

der entstehende Vierblock ist auf jeden Fall seamless. Will sagen, mehrere davon passen nahtlos zusammen. Deren aneinanderstoßenden Randpixel haben auf jeden Fall exakt die gleiche Farbe.

Das bedeutet nicht, dass es die beste Lösung überhaupt ist. Insbesondere wenn das Ausgangs-Tile stark strukturiert ist (z.B. quergestreift), sieht man natürlich sofort, dass gespiegelt wurde. Aber bei Tiles wie dem gezeigten, wüsste ich nicht, was dagegen spricht.

herbivore

A
764 Beiträge seit 2007
vor 12 Jahren

Vielleicht kannst du ja mehrere Verfahren anbieten.

Das Aufklapp-Verfahren:

db
qp

und das äh Crossfade-Verfahren.

Die sollten sich doch ganz gut ergänzen, was die Ergebnisse betrifft.

Edit:
Achso. Ich kenn mich ja nicht aus mit dem Zeug, aber so wie du das beschrieben hast, hört sich das vernünftig an.

Übrigens sind die Videos zu deinem Projekt recht beeindruckend.

5.658 Beiträge seit 2006
vor 12 Jahren

Hi dr4g0n76,

ich hab mal was ähnliches programmiert, und hab eine sehr einfache Methode angewendet, mit der ich überraschend gute Resultate erzielt hab.

Zuerst hab ich die Textur nach rechts und unten um bspw. 10 % vergrößert. Den entstehenden Rand hab ich abgeschnitten und dann auf die linke bzw. obere Kante der Textur gelegt. Dann hab ich besagten "Crossfade" angewendet, damit die neuen Ränder in Richtung Bildmitte langsam "ausfaden". Danach kann man die Textur kacheln, ohne daß man die ursprünglichen Ränder erkennen kann.

Das klappt hervorragend bei natürlichen und unregelmäßigen Texturen wie Putz oder Vegetation. Bei Steintexturen klappt es natürlich nicht, weil dort die Fugen nicht aufeinander passen würden.

Christian

Weeks of programming can save you hours of planning

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

es gibt ja Bildbearbeitungsprogramme die sowas können. Einige gehen dabei so vor, dass das Bild in 4 Teile zerschnitten wird und diese dann mit Verlauf nach Transparent hin über das Originalbild gelegt werden. Am besten erkennt man den Effekt, wenn man ein Bild nimmt das sich für eine Textur überhaupt nicht eignet.
Der Anhang zeigt ein solches Bild einmal im Original, und enmal mit der Funktion "Nahtlos machen" vom GIMP bearbeitet. Das Prinzip sollte dabei gut erkennbar sein.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca