SingleSurface & Texturebleeding

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Problemchen

Betreff: SingleSurface & Texturebleeding

BeitragDi, Jan 16, 2007 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Problemchen hat da wieder ein Problem Sad

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

BeitragDi, Jan 16, 2007 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jan 17, 2007 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 21, 2007 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Jan 22, 2007 1:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jan 22, 2007 1:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group