SingleSurface & Texturebleeding
Übersicht

ProblemchenBetreff: SingleSurface & Texturebleeding |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
Problemchen hat da wieder ein Problem ![]() Ich erstelle ein Mesh, definiere verschiedene Surfaces/Brushes, adde jeweils die Vertices, dann verbinde ich die entsprechenden Triangles und painte diese mit dem zugehörigen Brush. So weit, so gut. Nun habe ich 6 Surfaces mit verschiedenen Texturen. Um ein Singlesurfacemesh zu erstellen, lege ich alle Vertices in eine Surface und backe die Texturen in eine Singletexture (zB. 256x1024) und rechne alle Texturecoords um. Klappt auch super, allerdings wird von jeder Textur ja eine MipMap erstellt und diese Mipmap wird automatisch gefiltert. Dadurch das nun mehrere Texturen in einer großen Textur sind, 'bluten' sozusagen benachbarte Texturen ineinander, was sehr unschön bei harten Kontrasten zwischen benachbarten Texturen aussieht wenn man weiter weg ist. Das Helle wird ins Dunkle gerechnet und umgekehrt. Das gibt unschöne Ränder an den Polygonkanten, wenn man wie geschrieben weiter weg ist und die Grafikkarte eine MipMap benutzt um das Mesh zu texturieren. MipMapping ausschalten verbietet sich von alleine, da dann heftige Moiremuster die Optik stören. Irgendwer eine gute Idee dazu? Vielen Dank schonmal... Problemchen |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
UV Koordinaten anpassen, so das du einen Padding Rand um die Textur hast. Wenn du die UV Kante an Kante legst, ist das Problem nicht lösbar. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ...und backe die Texturen in eine Singletexture (zB. 256x1024) und rechne alle Texturecoords um...
Auch wenn es in der deutschen OH nicht so steht, werden auch Brushes für die Grafikkarte ins Quadrat gezogen. In diesem Fall um 1024x1024. mache daraus lieber 512x512 und du hast keine Speicherverschwendung. |
||
![]() |
Terror-State |
![]() Antworten mit Zitat ![]() |
---|---|---|
is das selbe wie mit "createcube". ich dachte immer das müssten 8 Vertices sein und 12 triangles... is aber nicht so. es sind 4*6=24 Vertices und 12 triangles. jede fläche hat 4 eigene Vertices.
=> wenn du klare kanten haben willst musst du manche Vertices "doppelt setzen" |
||
Ob friedlich oder militant, wichtig ist der Widerstand |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein Cube hat nur deshalb für jede Fläche 4 Vertices, damit auf Cubes (erstellt mit CreateCube) ohne weiteres eine Textur gezogen werden kann. Also eine die auf allen Flächen gleich aussieht aber auch um damit eine Skybox machen zu können. Ansonsten müsste immer irgend ein Triangle die Textur wieder 'zurück spulen' damit's passt.
Wenn bei UV-Koordinationen die Übergänge ineinander 'bluten', so hat es andere Ursachen. Zunähst sollte beachtet werden, wenn man zB eine 256x256er -Textur hat und in dieser 4 Bilder packt, so sollte ein Bild maximal auf 127x127 -Pixel ausgelesen werden, um Übergänge ins nächste Bild zu vermeiden. Und - wie den meisten geläufig - begint ein Pixel bei 0.5x0.5, vorrausgesetzt die UV-Größen wurden beim laden eines Brushes mit angegeben. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ändert am Textureproblem nix, da es unabhängig von den Vertices ist. Das ist ein Tiling Verhalten das Hardwareseitig so drin ist, weils einfacher ist, was aber speziell bei 2D in 3D und ähnlichen Ansätzen zu recht unschönen resultaten führt.
Die einfachste Lösung ist dann normalerweise: 1 Pixelränder um die Texturen (also 126x126 nutzbar) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group