Texture seams

Posted By: Blattsalat

Texture seams - 01/31/07 17:06

Hi,

For some reason gs creates seams arround model uvw coordinates:



as you can see there is nothing on the original skin that produces this white line arround the model.
There is nothing visible neither on the skin nor in med, but as soon as imported into WED and compiled the white stripes are there.

Does anybody know a sollution or hint to solve this?

Thanks in advance for any help.

cheers
Posted By: Blattsalat

Re: Texture seams - 01/31/07 20:26

Another point:
Is there a way to turn the shading off for selected models?

cheers
Posted By: Wicht

Re: Texture seams - 02/01/07 10:50

Leider habe ich ebenfalls selbiges Problem.
Dazu hatte ich diese Frage gestellt.

Was allerdings hilft ist folgendes: Nimm in Deinem 3D-Modeller die Funktion MaxUV. So heisst es zumindest in Maxon's Bodypaint. Das bedeutet, daß alle UV-Polygone auf die gesamte Textur gelegt werden. Also JEDES UV-Polygon die GESAMTE Textur verwendet. Das macht natürlich nur dann Sinn, wenn nur diese Textur auf dem Modell erscheinen soll. Sollen sich aber nur gewisse Teile der Textur wiederholen, wirst Du mit dieser Methode nicht glücklich.
Posted By: Blattsalat

Re: Texture seams - 02/01/07 12:59

Hi,

vielen dank für den post. Ich werd gleich mal einige sachen versuchen und meine "erfolge" hier posten.


cheers
Posted By: Harry Potter

Re: Texture seams - 02/01/07 13:28

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!
Posted By: Wicht

Re: Texture seams - 02/01/07 14:07

Das nenne ich mal eine gute und ausführliche Erklärung. Sehr fein.

Achja, heute musste ich mir einen neuen Toner kaufen. Dieser wird dann gleich mit dieser Erklärung eingeweiht ...
Posted By: Blattsalat

Re: Texture seams - 02/01/07 14:21

Hi,

danke für die ausführliche anleitung.
für die weißen linien bzw ränder wahren wirklich die mipmaps schuld bzw die tatsache das meine uvwmap immer 100% des skins genutzt hat.

allerdings löst das nut die hälfte meines problems:


durch die tatschse das es immer unterschiedliche modelle sind, werden sie nicht 100% gleich geshadet.
jetzt würde ich gerne wissen ob man das shading für einzelne modelle bzw entities ausschalten kann. bzw warum mein level im WED anders beleuchtet wird als ingame - sprich ob ich ingame das WED shading haben kann?

cheers
Posted By: Harry Potter

Re: Texture seams - 02/01/07 14:35

Das Shading auszuschalten ist eigentlich ganz einfach. Einfach nur beim Model das UNLIT-Flag setzen. Und AMBIENT auf den Wert 100 stellen.

Ich habe in meinem Spiel generell das Shading ausgeschaltet, weil dadurch die fotorealitischen Texturen noch realistischer aussehen. Zusätzlich passe ich dann noch mit den Materialeinstellungen die Helligkeit an (je nach Tageszeit). Ich weiß nicht mehr genau, WELCHE Werte ich da anpasse - da müsste ich zu Hause mal nachschauen.

lg
Thomas
Posted By: Harry Potter

Re: Texture seams - 02/01/07 14:42

Ach ja, und Du kannst ja natürlich auch unterschiedlichen Models unterschiedliche Materialien zuordnen. Also Du kannst dadurch z.B. den Boden OHNE Shading rendern lassen, und die Panzer (oder was auch immer über diesen Boden fahren/gehen wird) können dennoch Shading benutzen.

Ich verwende in meinem Spiel grundsätzlich 3 Materialien:

- eines für Objekte, die sich im Freien befinden (Helligkeit wird per Skript je nach Tageszeit angepasst).

- eines für Objekte die sich innerhalb eines Hauses befinden. Sind meistens etwas dunkler, und die Helligkeit bleibt immer konstant.

- und eines für Feuer - dieses soll ja IMMER hell leuchten, egal ob es nun Tag oder Nacht ist.

lg
Thomas
Posted By: Blattsalat

Re: Texture seams - 02/01/07 14:56

Hi,

danke für die tipps.

jcl hat im "ask conitec" forum netter weiser geantwortet:
"If you need the 16 models for some reason: Setting the ambient, diffuse, and specular colors to zero and emissive to nonzero removes any shading."

glaube das es jetzt hinhaut. Ist ein sehr spezieller fall für mich, aber er scheint lösbar.


cheers und danke an alle die sich die zeit genommen haben mir hier zu antworten!!
Posted By: mk_1

Re: Texture seams - 02/02/07 18:06

Nur mal zu dem Rand:
Im Shader beim wrapping einfach "mirror" nehmen, dann wird am Rand gespiegelt und die Probleme lösen sich von selbst.
Posted By: Blattsalat

Re: Texture seams - 02/02/07 21:22

das level darf keine shader benutzen

cheers
Posted By: mk_1

Re: Texture seams - 02/03/07 02:03

ffp, das sind keine Shader und naja... die hat wirklich jeder, der nicht gerade eine Voodoo2 hat.
Posted By: JibbSmart

Re: Texture seams - 02/03/07 12:44

gday, i cant understand any of the german, so i dont kno if anyone has suggested this, but it looks like a side-effect of chunking terrain? im sorry i cant be more helpful i probably am not helpful at all but i dont know if anyone has said this.

julz
Posted By: Blattsalat

Re: Texture seams - 02/03/07 22:13

@mk1: theoretisch ja, aber ich kann nicht mall ffp nutzen. Das terrain in diesem speziellen fall muss aus mehreren "tiles" bestehen. Sogar shader wären keine wirkliche option

@julzmighty: sorry for switching the language.
thanks for your hint. its not really the chuncking but more the texture layout. the uvw map was covering 100% of the skin and therefor went also along the borders of it.
so ingame the pixel at the border where recalculated and this led to the seams.
in such a special case as mine they where visible.
but with shrinking the uvw map to less then 98% of the skinsize it now works.

cheers
Posted By: mk_1

Re: Texture seams - 02/04/07 22:44

Also vllt. hast du mich falsch verstanden. Die Ränder kommen ja dadurch, dass die Map "weiterläuft". Wenn die Tiles (also deine einzelnen Terrains) an den Rändern gespiegelt oder geclampt werden, sind die Übergänge korrekt.
© 2024 lite-C Forums