Mipmap-Fehler

Hier kann alles Allgemeine rund um Zusi 3 gefragt und beantwortet werden. Neuigkeiten zum Programm werden hier erscheinen.
Antworten
Nachricht
Autor
Benutzeravatar
Jens Strumberg
Beiträge: 2185
Registriert: 09.04.2003 16:13:19
Wohnort: Bochum

#1 Beitrag von Jens Strumberg »

Hallo.
Ich habe im Betrachter folgendes Problem bei der Texturdarstellung:
Ich habe die Tage die Werkstatthalle von Oberhausen-Osterfeld als LOD-2-Objekt gebaut. Wenn ich mir das Ergebnis jetzt im Betrachter angucke kommt es je nach Sichtwinkel zu weißen Schummerungen an den Kanten des Daches.

Bild

Schaue ich orthogonal auf das Dach sind diese nicht sichtbar, je mehr ich den Sichtwinkel in die horizontale ändere tritt der Fehler verstärkt auf. Ein Artefakt basierend auf Mipmaping sollte es nicht sein, da die 1x1, 2x2 und 4x4 Grafiken alle die Farbe des Daches haben. Auch die Normalenvektoren stehen richtig.
Schöne Grüße,
Jens

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33512
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#2 Beitrag von Carsten Hölscher »

Das ist 99,9% ein Mipmap-Problem. Schalte mal den Mipmap-Test an, dann siehst Du ,welcher Mipmap-Level dort zum Einsatz kommt. Ich tippe, die Texturen sind zu knapp belegt, also sehr scharf an den Rändern ausgerichtet. So rutscht dann bei den Mipmaps etwas von den nachbarpixeln mit rein. Es wäre keine Überraschung, wenn die nachbarbereiche auf der Textur dort ca. weiß sind ;)

Carsten

Benutzeravatar
Jens Strumberg
Beiträge: 2185
Registriert: 09.04.2003 16:13:19
Wohnort: Bochum

#3 Beitrag von Jens Strumberg »

Ja, sie sind wirklich weiß, die Übergänge sind allerdings nicht besonders knapp.
Textur im Ganzen:
Bild
Textur im Detail:
Bild

Auch wenn die Textur keine .dds ist - rechnet der Betrachter trotzdem in Mipmaps? Ich hab es auch mit einer .png probiert, das Ergebnis ist das Selbe.

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33512
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#4 Beitrag von Carsten Hölscher »

Mipmaps werden benutzt (also ggf. erzeugt, wenn nicht in der dds-Datei vorhanden), wenn der Mipmap-Wert auf 0 steht. Bei 1 wird ohne Mipmaps gearbeitet, bei 2, 3, 4 usw. nur die ersten 2, 3, 4,... Mipmapstufen.

Vergrößere doch einfach mal die Dachbereiche auf der textur in den weißen Bereich rein.
Kannst mir auch mal schicken das ganze - dann bereite ich das noch mit Bildern so auf, daß man es gut nachvollziehen kann.

(bish hier war's ein beitrag vom 10.06., der beim Trennen des Thema verloren gegangen war)


Also zur Analyse von Jens' Halle. Solche Farbverschmierungen sind eigentlich immer Mipmap-Probleme. Das muß man halt erkennen. Den Rest kann man z.B. folgermaßen analysieren:

Die Halle in der Problemansicht mit den verfärbten Dachkanten:

Bild

In der Mipmaps-Ansicht sieht man, daß der Fehler mit der gelben Stufe korrespondiert.

Bild

Das ist also die 64x64er Mipmapstufe. Schaut man sich also mal die 64er Stufe an, hier in Originalgröße:

Bild

Ist immer wieder erstaunlich, wie klein die benutzten Texturen sind. Vergrößert man die Textur (nur unterer Ausschnitt), sieht man das Problem: Durch die Mipmaperstellung mischt sich unten weiß mit rein.

Bild

Ich habe sicherheitshalber mal nen 1 Pixel lila-Streifen drüber gemalt (hier im Bild nur auf der rechten Seite, um den Unterschied zu zeigen), und schon wird der Fehler lila statt weiß.

Also man könnte die Textur in der 64er Stufe manuell bearbeiten, indem man das Dach dort einen Pixel breiter zeichnet oder man läßt in der Ausgangstextur etwas mehr Reserve an den Rändern.

Carsten
Zuletzt geändert von Carsten Hölscher am 12.06.2007 00:56:53, insgesamt 1-mal geändert.

Benutzeravatar
Rolf Reichardt
Beiträge: 663
Registriert: 11.11.2003 08:27:07
Wohnort: Berlin
Kontaktdaten:

#5 Beitrag von Rolf Reichardt »

Ich versuche gerade, mit dem Nvidia-dds-Plugin für Photoshop 6.0 eine dds-Datei zu erstellen. Bild

Unten sieht man, dass es funktioniert. Dann habe ich die Textur nochmals geändert, und wollte sie wiederum als dds speichern. Jetzt klappt es es nicht mehr, siehe Screenshot oberes Fenster. Öffne ich die Dateien mit ddsview, sagt er in beiden Fällen in der Statusleiste "1024x1024 (mipmap 1/5), 32 bpp +Alpha". Was könnte ich da falsch gemacht haben?

Grüße

Rolf

Edit: Gib mir ein "s"
Zuletzt geändert von Rolf Reichardt am 19.06.2007 18:32:42, insgesamt 1-mal geändert.
Tradition ist die Weitergabe des Feuers, nicht die Anbetung der Asche!
Gustav Mahler (1860-1911)

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33512
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#6 Beitrag von Carsten Hölscher »

Noch ein wichtiger Hinweis zum Thema Mipmap:

Bisher war die anisotrope Filterung im Betrachter auch aus, wenn man sie ausgewählt hat. grund war schlichtweg, daß noch zusätzlich ein Parameter gesetzt werden muß, was die DirectX-Doku aber an der Stelle, wo man es wissen müßte, nicht erwähnt. Ich bin eben über Umwege drauf gestoßen.

Es betrifft die Effekte beim schrägen Draufschauen. Also im Extremfall sowas wie das hier, wo im oberen Bild die Mipmaps sehr schnell "entarten":

Bild

Unten ist's ohne Mipmaps, dann mit den bekannten Flimmereffekten bei Bewegung.
Bei korrekt eingestellten Filtern (und Grakas, die das unterstützen), ist der Fehler deutlich entschärft. Zwar sind immer noch leichte Mipmap-Fehler zu erkennen, aber es sieht fast so aus wie auf dem unteren Bild, ohne die Flimmerprobleme. Betrachter-Update mit passend eingerichteten Defaultwerten folgt dann in Kürze. Ob's auch bei Problemen wie bei Jens oben hilft, muß man noch mal testen.

Auf die Wahl der Texturgröße hat's übrigens keinen Einfluß, also es wird weiterhin für jedes Pixel derselbe Mipmap-Level wie bisher benutzt.

Carsten

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33512
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#7 Beitrag von Carsten Hölscher »

@Rolf: Hast Du evtl. beim 2. Speichern noch einmal "generate mipmps" aktiviert? Wenn schon mipmaps da sind, muß man "no mipmaps" aktivieren.


Carsten

Benutzeravatar
Rolf Reichardt
Beiträge: 663
Registriert: 11.11.2003 08:27:07
Wohnort: Berlin
Kontaktdaten:

#8 Beitrag von Rolf Reichardt »

Ne, eigentlich nicht. Ich habe in beiden Fällen die Photoshop PSD-Datei mit "speichern unter ..." als dds konvertiert. Aber alles halb so schlimm , der "DDS Converter 2" bekommt es mit weniger Optionen trotzdem hin.

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33512
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#9 Beitrag von Carsten Hölscher »

die Photoshop PSD-Datei mit "speichern unter ..." als dds konvertiert.
dann kommt doch der Diaolg mit den Optionen. Dort mußt Du beim 2. mal die Mipmaps ausstellen.
S. auch meine Folien vom Treffen zum nicht gehaltenen Vortrag.

Carsten

Benutzeravatar
Patrick Polzin
Beiträge: 62
Registriert: 12.08.2004 17:40:04

#10 Beitrag von Patrick Polzin »

@Carsten: Das Problem sollte sich beim Einstellen des MultiSamples 2x aufwärts deutlich verringern. Gilt auch mit den "Kanten" eines Vertices, welche farblich an der Kante gefärbt werden (gibt aber später etwas hässliche Effekte beim Schatten). Siehe hierzu das AntiAlias-Sample vom DX SDK.

Desweiteren hast du schon die verschiedenen Filter mit der SetSamplerState Methode von D3DDev mit den Parametern, MIP MIN MAG mit den verschiedenen Möglichkeiten versucht? Mit MipMap-Filtern bin ich persönlich "etwas vorsichtig" und lasse den User über eine Datei entscheiden, welches Setting er hierfür nimmt.

Mit HLSL-Shadern dürfte sich dieses Problem sogar minimieren lassen, obwohl ich mich doch dort erstmal selbst schlau machen muss, bevor ich dem 100% zustimmen kann. Na ja, da du aber kein HLSL einsetzt, bleibt dir nur der Weg über die D3DPRESENT_PARAMETERS::MultiSampleType, SetSamplerState-Methode oder eine entsprechende Einstellung in der D3DXCreateTextureFromFileEx-Funktion. So ist das halt im Leben ;D.

MfG, ;) Patrick Polzin

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33512
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#11 Beitrag von Carsten Hölscher »

Multisampling beeinfluißt das nicht groß. Den Rest habe ich ja oben schon geschrieben.

Carsten

Benutzeravatar
Rolf Reichardt
Beiträge: 663
Registriert: 11.11.2003 08:27:07
Wohnort: Berlin
Kontaktdaten:

#12 Beitrag von Rolf Reichardt »

Carsten Hölscher hat geschrieben:@Rolf: Hast Du evtl. beim 2. Speichern noch einmal "generate mipmps" aktiviert? Wenn schon mipmaps da sind, muß man "no mipmaps" aktivieren.


Carsten
Ich habe den Fehler gefunden: Das NVidia-DDS-PlugIn für Adobe Photoshop 6.0 arbeitet nur dann richtig, wenn Photoshop mit Administrator-Rechten ausgestattet ist. Ich habe XP Profesionell SP 2 auf dem Rechner. Siehe auch hier Link.
In der Regel arbeite ich mit einem einem eingeschränkten Benutzerkonto.


Gruß

Rolf
Tradition ist die Weitergabe des Feuers, nicht die Anbetung der Asche!
Gustav Mahler (1860-1911)

Antworten