Hallo Blattsalat!


Ich schreibe Dir einfach mal ein paar Tipps und Tricks zusammen, wie man solche Nahtstellen vermeiden kann.

Zunächst einmal gibt es 2 Ursachen für solche Kanten/Nahtstellen.

1.) Die kachelbare Textur selbst - an diese Ursache denken nur die wenigsten:
Wenn man eine kachelbare Textur mit einem Malprogramm VERKLEINERT, dann entstehen an den Rändern sichtbare Kanten. Das heißt: nach dem Verkleinern von kachelbaren Bildern, sind diese eigentlich nicht mehr perfekt kachelbar. Der Grund dafür ist ganz einfach: beim Verkleinern oder Vergrößern von Bildern werden ja die Pixel "gefiltert" bzw. interpoliert.

Also nehmen wir mal an, in einer Bitmap (1024x1024 Pixel) befinden sich 2 Linien nebeneinander. Beide Linien sind jeweils 1 Pixel breit. Die eine Linie ist schwarz, die andere Linie ist weiß. Wenn die Bitmap nun auf 512x512 Pixel verkleinert wird, dann wird nachher anstatt den beiden Linien nur noch eine einzige GRAUE Linie zu sehen sein. Also die beiden nebeneinanderliegenden Pixel verschmelzen zu einem einzigen Pixel, und dieser neue Pixel hat dann die Durchschnittsfarbe von den beiden ursprünglichen Pixel.

Das ist ja grundsätzlich gut so. Aber ein Problem gibt es dann bei den RÄNDERN von der Bitmap. Weil eigentlich müssten die Pixel am rechten bzw. oberen Bildrand ebenfalls mit den Pixeln am linken bzw. unteren Rand "verschmolzen" werden. Also wenn sich am linken Rand eine schwarze Linie befindet, und am rechten Rand eine weiße Linie, dann müsste eigentlich genaugenommen nachher an den Rändern eine graue Linie zu sehen sein. Aber die meisten Malprogramme "wissen" ja nicht, dass es sich bei dem Bild um ein KACHELBARES Bild handelt, und daher wird bei der Filterung nicht berücksichtigt, dass ja eigentlich der Pixel am rechten Rand direkt neben dem Pixel am linken Rand liegt. Das Ergebnis ist dann, dass auf dem verkleinerten Bild am rechten Rand immer noch eine schwarze Linie zu sehen sein wird, und am linken Rand wird eine weiße Linie zu sehen sein.

Und je nach Auflösung des Bildes wird man solche Kanten dann in der kachelbaren Textur mehr oder weniger deutlich sehen können.


2.) Die wichtigste Ursache für solche Nahtstellen ist jedoch die Anordnung der UV-Flächen:
Grundsätzlich gilt: Zusammenhängende UV-Flächen werden von der Engine ohne Nahtstellen gerendert. Aber sobald 2 Polygone aneinandergrenzen, deren UV-Flächen nicht miteinander "vernäht/verbunden" sind, dann gibt es sichtbare Kanten. Das betrifft aber nicht nur die Acknex-Engine, sondern das ist ein generelles Problem.

Man sollte also beim Modellieren bzw. Skinnen immer darauf achten, dass möglichst viele Flächen auch auf der Skin "zusammenhängen". Nahtstellen sollte man nur dort machen, wo sie am wenigsten auffallen.



Hier nun ein Tipp, wie ich bei meinen gekachelten Boden-Models dafür sorge, dass man die Nahtstellen nicht sieht:

1.) Zunächst einmal bearbeite ich meine kachelbaren Texturen immer in einer möglichst großen Auflösung. Nachher werden die Bilder dann verkleinert, und zusätzlich wird etwas "Schärfe" hinzugefügt. Dadurch ist die Bildqualität später am besten. Also nehmen wir mal an, ich bearbeite die kachelbare Textur zunächst in einer Auflösung von 2600 x 2600 Pixel.

2.) Normalerweise würde man jetzt die Textur auf z.B. 1024x1024 Pixel verkleinern. Und diese Textur würde man dann als Skin benutzen. Aber genau das tue ich NICHT. Stattdessen vergrößere ich den Arbeitsbereich von dem ursprünglichen Bild. Also die neue Bitmap hat dann z.B. eine Größe von 2800 x 2800 Pixel. Und in der Mitte von diesem Bild befindet sich dann die eigentliche Textur (2600x2600 Pixel). Das Bild hat also einen Rand in der Breite von z.B. 200 Pixel bekommen.


3.) Nun verkleinere ich dieses Bild auf die Größe von 1024x1024 Pixel. Dieses Bild benutze ich nun beim Modellieren als Skin. Die UV-Koordinaten werden nun so ausgerichtet, dass sie genau mit der Textur in der Mitte des Bildes übereinstimmen. Natürlich werden jetzt noch im Model Kanten zu sehen sein.

4.) Aber nun bearbeite ich nochmals das ursprüngliche Bild (2800x2800 Pixel), und fülle dabei die Ränder auf. Also in den unteren Rand kopiere ich den oberen Teil von der Textur. In den oberen Rand-Bereich den unteren Teil der Textur. Das ganze auch rechts und links und an den Ecken. Das Bild wird also mit Textur-Kacheln aufgefüllt.

5.) Als nächstes verkleinere ich nun dieses Bild auf 1024x1024. Da nun die Randbereiche der Textur mit schmalen Kachel-Streifen aufgefüllt wurden, funktioniert jetzt auch die Filterung beim Verkleinern der Textur optimal.

6.) Bei meinem Model ersetze ich nun die vorherige Textur (die mit den Rand-bereichen) durch die neue Textur. Die vorherige Textur diente also nur als Hilfsmittel, damit ich die UV-Flächen korrekt anpassen kann. Weil bei der neuen Textur kann man ja nicht mehr genau erkennen, wo genau die eigentliche Textur-Kachel ihre Ränder hat.

Das wäre es dann eigentlich. Jetzt dürften keine Nahtstellen mehr sichtbar sein (vorausgesetzt, dass die UV-Flächen genau ausgerichtet wurden).

Übrigens: Falls man 3DStudioMAX und das MaxToModel-Plugin benutzt, dann sollte man am besten nach dem Export die UV-Koordinaten mit dem MED nochmals nachbearbeiten. Weil oft gibt es nach dem Export kleine Abweichungen bei den UV-Koordinaten (minimale Abweichungen von ca. 1 bis 2 Pixel).


Ich hoffe, das war halbwegs verständlich?

Ach ja, noch ein Tipp: In einigen Fällen sind Nahtstellen einfach nicht zu vermeiden. Dann hilft ein weiterer Trick. Einfach die Nahtstelle überdecken - z.B: mit einem streifenförmigen TGA-Sprite/Model, das zu den Rändern hin immer transparenter wird.

LG,
Thomas

Edit: Ups, jetzt sehe ich erst, dass ich die meisten von diesen Tipps damals schon im Beitrag vom Wicht geschrieben hatte!

Last edited by Harry Potter; 02/01/07 13:30.