PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwischenschritt zwischen "Medium und "Quality" gesucht?-Texturen Konversion Anleitung


DaBrain
2005-07-20, 20:39:20
Nachdem ich in diesem (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=182902) Thread grob erklärt habe, wie man die Artefakte in den Bumpmaps auf der Einstellung "Medium" entfernen kann, habe ich mehrere PMs erhalten. Es wurde nach ein ausführlicheren Anleitung gefragt.


Die Anleitung ist langweilig und simpel, sollte aber schnell abgearbeitet sein.
Sie hat noch eine kleine Macke (siehe *).

Der Speicherbedard ist höher als bei der "Medium" Einstellung. Die Artefakte sind dafür viermal kleiner, also prakisch verschwunden.

Für diese Methode braucht ihr:

I-View 32 (http://www.irfanview.de/)
DDS Converter 2 (http://eliteforce2.filefront.com/file/DDS_Converter;29412)
WinRar (http://www.winrar.de)

Als erstes öffnen wir die pak004.pk4 Datei mit WinRar. Das textures Verzeichnis extrahieren wir komplett.
Jetzt öffnen wir I-View und wählen unter "File" "Batch Conversion".
Als nächstes öffnen wir das extrahierte Verzeichnis und durchsuchen es nach "local" Dateien.
Die gefundenen Files ziehen wir bei I-View in das "Input Files" Fenster. Unten im Batch Fenster wählen wir nun "Batch
conversion" und stellen das Format auf Targa-TGA.

Jetzt müssen wir noch eine Kleinigkeit bei den "Advanced options" einstellen.
Es sollte erstmal nichts ein Häkchen haben, bis auf Resize. Wir nehmen die unterste Einstellung und stellen sie auf 200% width und 200% height ein.
Zusätzlich setzen wir noch ein Häkchen bei "Preserve aspect ratio" und "Use Resample".

Dann wähen wir noch links "overwrite exsisting files" und "create subdirectories in destination folder".
Zu Schluss um Hauptfenster noch das Output directory angeben. (Man kann die alten Dateien einfach gleich überschreiben).

Der Batch ist fertig.

Jetzt kommt der letzte Schritt:

Als erstes müssen wir unter Options die Voreinstellungen ändern.
Alle Häkchen entfernen.
„DevIL“ auf "Less memory usage" stellen-
Bei „DDS Producer“ wählen wir "Nvidia" und als DXTc Format DXT5.*


Wir öffnen den DDS Converter und wechseln zu dem Output Directory, dass wir vorher in I-View gesetzt hatten.
Jetzt gehen wir einfach die Verzeichnisse ab, angefangen mit "base_door".
(Das Input Format sollte TGA sein.)
Einfach alles markieren, dann auf den ".\" Button klicken. (Neben Output folder.)
Dann „Convert“ drücken.

Das machen wir jetzt noch mit den restlichen Verzeichnissen.
(Achtung: Nie das ".\" vergessen!!!)

Fertig. Den gesamten Ordner nach *.TGA durchsuchen, alle TGAs löschen und den kompletten "Textures" Ordner in das "Base
Verzeichnis von Doom3 kopieren.


Falls ihr die Texturen konvertieren wollt, einfach bei der ersten Windows Suche nicht nach "local" sondern nach *.tga suchen.



*Doom3 verwendet einige Alpha Texturen. DXT5 ist ein DXTc Format, dass einen Alpha Kanal unterstützt. Eigentlich ist es
Speicherverschwendung für alle Texturen DXT5 zu verwenden. Wer sich die Mühe machen will, kann die Texturen ohne Alpha Kanal mit
DXT1 komprimieren.
Leider kenne ich kein einfaches, schnelles Verfahren, die Texturen mit Alpha Kanal herauszufiltern.

Man kann auch einfach alle Texturen mit DXT1 komprimieren. Das würde enorm Speicherplatz sparen, aber man hätte keine
transparenten Texturen mehr...

Dummerweise macht die Anleitung erst wirklich Sinn, wenn man die non-Alpha Maps mit DXT1 komprimiert...


Wenn jemand der Anleitung an dieser Stelle verbessern könnte, wäre ich sehr dankbar.



An die Doom3 Kenner: Haben die Datein, die direkt im 'base' Ordner sind eine höhere Priorität, als die Datein in den PK4 Packages?

Ich habe an Doom3 selber noch nie etwas verändert...

Gast
2005-07-20, 21:48:19
so lange du keine neuen details in die normalmaps einfügst hat das ganze wenig bis garkeinen sinn.

es stimmt zwar dass du die qualität im verhältnis zu medium verbesserst (die komprimierungsartefakte sind kleiner) allerdings kommt diese trotzdem nicht an high-details ran, denn die vergrößerten normalmaps haben deshalb nicht mehr details.

der performanceeinbruch sollte sogar noch größer sein als direkt high-details zu nehmen. der speicherverbrauch ist mit 4x so großen, dafür dxt5-komprimierten texturen zwar gleich groß, aber der texturfilter muss mehr arbeiten (durch die höher aufgelöste textur muss früher auf die erste mip-map gewechselt werden -> der trilineare filter muss früher einsetzen, ebenso muss der anisotrope filter früher mehr samples nehmen da die texel schneller verzerren)

du hast als ergebnis also bessere qualität als standard-quality, aber schlechter als als "normales" high-quality bei (zumindest etwas) schlechterer performance.

wenn du wenigstens DXT1 verwenden würdest hättest du eine speicherplatzersparnis, die höheren füllratenanforderungen bleiben aber. doom3 hat in der praxis gezeigt dass es eigentlich auch mit 128MB-karten sehr gut läuft, karten mit noch weniger speicher werden wohl eher an zu geringer füllrate als an speichermangel kranken.

die idee ansich halte ich für sehr gut, aber wie gesagt nur wenn man in die texturen mehr details einarbeitet. dann könntest du eine sehr viel höhere qualität als HQ, bei relativ geringen anforderungen an die mehrperformance erreichen. (das wäre dann der wirklich sinnvolle UQ-modus)

DaBrain
2005-07-21, 02:58:24
Ja ärgert mich auch. Für mich selber könnte ich die paar Maps finden, die keine DXT5 Kompression brauchen, aber dafür braucht man schon mehr Software und es wird komplizierter.

---> Hier bitte eine Lösung einfügen.


Es handelt sich ka um sehr wenige Maps mit Alpha Kanal...

Wenn dieses Problem gelöst ist und größtenteils DXT1 verwendet wird, wäre man bei ca. der Hälfte des Speicherbedarfes von "High" für Normal Maps. (Naja, knapp über der Hälfte.)

Dann könnte man locker noch AA benutzen und die Qualität wäre fast auf "High" Niveau. :)

medium verbesserst (die komprimierungsartefakte sind kleiner) allerdings kommt diese trotzdem nicht an high-details ran, denn die vergrößerten normalmaps haben deshalb nicht mehr details.

Ist klar. Ich will nur die Artefakte bekämpfen. Die Normal Maps wurden sehr wahrscheinlich mit Hilfe von 3D Modellen erstellt. An die "zusätzlichen Details" kommt man nicht ohne die Modelle.
(Ok, man könnte eine Height map erzeugen, hochskalieren und bearbeiten, aber das ist eindeutig zu viel Arbeit.)

DaBrain
2005-07-21, 15:31:44
Ich bin einmal alle Normal Maps mit Alpha Kanal durchgegangen.
Mir ist aufgefallen, dass der Alpha Kanal bei den meisten Normal Maps einfach keinen Sinn hat, oder ich ihn nicht verstehe. Der größte Teil der Alpha Maps hat einen fast komplett weißen Alpha Kanal. Nur am Rand kann man einen schwachen, leicht dunkleren, 1 Pixel breiten Strich finden...
Ich dachte zu erst, das solle eine 3d Kante simulieren, aber dafür sind ja die Farbkanäle da. Der Alpha Kanal sorgt ja hier für Transparenz.
Also selbst wenn diese Alpha Maps einen Sinn haben, ist die Auswrikung einen Pixel breit, sehr schwach und hat nichts mit Bumpmapping zu tum.
Sehr überflüssig IMO.

Ansonsten habe ich noch ein paar Maps mit komplett weißem Alpha Kanal gefunden. Der Alpha Kanal is überflüssig wenn er komplett weiß ist. Bei der gorßen Zahl der Normal Maps denke ich, dass es sich einfach um ein paar kleine Fehler handelt.

Wenn ihr mich fragt reicht es die Maps, die keine Bemerkung haben mit DXT5 zu komprimieren und den Rest einfach mit DXT1. Damit sollte man ordentlich Speicher gegenüber den "High" Mode sparen.
Wer wirklich Bedenken hat, kann zusätlich die Maps, mit dem "naja" Kommentar mit DXT5 komprimieren. Auf diesen Maps ist ein wenig (wirklich nur wenig) mehr als nur ein Strich am Rand im Alpha Kanal.
Leider bin ich kein Programmierer und kann keinen Batch anbieten der das automatisch macht.

Ich kann die bearbeiteten Map auch nicht ins Netz stellen, da das Content Id gehört. Eigentlich sollte man schon nichts daran herummodifizieren, aber das wird ID wohl wenig stören.


Hier die Liste (hat ordentlich lange gedauert):

lfwall15_local.tga
lfwall16_local.tga
lfwall17_local.tga
lfwall18_local.tga (fast komplett weiß)
lfwall19_local.tga (fast komplett weiß)
lfwall1_local.tga (fast komplett weiß)
lfwall20_local.tga
lfwall21_local.tga (der Alpha Kanal ist fast komplett weiß, daher ignorieren)
lfwall23_local.tga
lfwall24_local.tga
lfwall25_local.tga (fast weißer Alpha Kanal)
lfwall2_local.tga (fast weißer Alpha Kanal)
lfwall3_local.tga (fast weißer Alpha Kanal)
lfwall4_local.tga (fast weißer Alpha Kanal)
lfwall5_local.tga (ignorieren, der Alpha Kanal ist komplett weiß)
lfwall6_local.tga
lfwall8_local.tga
lfwall9_local.tga (fast weißer Alpha Kanal)
mintechrect1_local.tga
mintechrect2_local.tga
mintechrect3_local.tga
reactorwall1_local.tga (fast weißer Alpha Kanal)
rib_panel2_local.tga (naja...)
rib_panel_local.tga (fast weißer Alpha Kanal)
shortpanel_local.tga (fast weißer Alpha Kanal)
skpanel11_local.tga (fast weißer Alpha Kanal)
skpanel12_local.tga (fast weißer Alpha Kanal)
skpanel13_local.tga (fast weißer Alpha Kanal)
skpanel17_local.tga (fast weißer Alpha Kanal)
skpanel18_local.tga (ignorieren, der Alpha Kanal ist komplett weiß)
skpanel1_local.tga
skpanel20_local.tga (fast weißer Alpha Kanal)
skpanel25_local.tga (fast weißer Alpha Kanal)
skpanel26_local.tga (fast weißer Alpha Kanal)
skpanel3_local.tga (fast weißer Alpha Kanal)
skpanel4_local.tga (fast weißer Alpha Kanal)
skpanel5_local.tga (fast weißer Alpha Kanal)
skpanel6_local.tga (naja...)
skpanel7_local.tga (fast weißer Alpha Kanal)
skpanel8_local.tga (fast weißer Alpha Kanal)
slpanel1_local.tga (fast weißer Alpha Kanal)
slpanel2_local.tga
slpanel3_local.tga
snpanel12_local.tga
snpanel15_local.tga (naja...)
snpanel17_local.tga (fast weißer Alpha Kanal)
snpanel18_local.tga (fast weißer Alpha Kanal)
snpanel1_local.tga (fast weißer Alpha Kanal)
snpanel22_local.tga (fast weißer Alpha Kanal)
snpanel25_local.tga (fast weißer Alpha Kanal)
snpanel26_local.tga
snpanel2_local.tga (fast weißer Alpha Kanal)
snpanel3_local.tga
sopanel10_local.tga (naja...)
sopanel12a_local.tga
sopanel13_local.tga (fast weißer Alpha Kanal)
sopanel15_local.tga (fast weißer Alpha Kanal)
sopanel16_local.tga
sopanel18_local.tga
sopanel19_local.tga (fast weißer Alpha Kanal)
sopanel1_local.tga (fast weißer Alpha Kanal)
sopanel1a_local.tga (fast weißer Alpha Kanal)
sopanel20_local.tga
sopanel21_local.tga
sopanel22_local.tga
sopanel23_local.tga (fast weißer Alpha Kanal)
sopanel24_local.tga (fast weißer Alpha Kanal)
sopanel25_local.tga (fast weißer Alpha Kanal)
sopanel25a_local.tga (fast weißer Alpha Kanal)
sopanel26_local.tga
sopanel27_local.tga (fast weißer Alpha Kanal)
sopanel28_local.tga (fast weißer Alpha Kanal)
sopanel29_local.tga
sopanel30_local.tga
sopanel31_local.tga
sopanel32_local.tga
sopanel36_local.tga
sopanel3_local.tga (fast weißer Alpha Kanal)
sopanel4_local.tga (fast weißer Alpha Kanal)
sopanel6_local.tga
sopanel7_local.tga
sopanel8_local.tga (naja...)
sopanel9_local.tga (fast weißer Alpha Kanal)
superpipes_local.tga
a_sgirder2_local.tga
reactorep_local.tga (fast weißer Alpha Kanal)
reactorgirder1_local.tga
reactorpipe_local.tga (naja...)
striplight2_local.tga (irgnorieren, hat einen klplett weißen Alpha Kanal)
striplight_local.tga (fast weißer Alpha Kanal)
striplightxl1_local.tga (Was soll der Alpha Kanal hier? Sieht merkwürdig aus...)
diafloor_local.tga (fast weißer Alpha Kanal)
reactorfloor1_local.tga (fast weißer Alpha Kanal)
reactorfloor2_local.tga (fast weißer Alpha Kanal)
reactorwalk1_local.tga (fast weißer Alpha Kanal)
sflgratetrans1_local.tga (komplett weißer Alpha Kanal, der deshalb 100% überflüssig ist)
sofloor1_local.tga (fast weißer Alpha Kanal)
sofloor2_local.tga (naja...)
sofloor3_local.tga (fast weisser Alpha Kanal)
cpubossdoor_local.tga (fast weisser Alpha Kanal)
smalldoortex_local.tga (fast weisser Alpha Kanal)
smdoor1a_local.tga
rfthinbeam01_local.tga (sehr naja..)


Noch mal nur die Maps, die IMO wirklich DXT5 brauchen:

lfwall15_local.tga
lfwall16_local.tga
lfwall17_local.tga
lfwall20_local.tga
lfwall23_local.tga
lfwall24_local.tga
lfwall6_local.tga
lfwall8_local.tga
mintechrect1_local.tga
mintechrect2_local.tga
mintechrect3_local.tga
skpanel1_local.tga
slpanel2_local.tga
slpanel3_local.tga
snpanel12_local.tga
snpanel26_local.tga
snpanel3_local.tga
sopanel12a_local.tga
sopanel16_local.tga
sopanel18_local.tga
sopanel20_local.tga
sopanel21_local.tga
sopanel22_local.tga
sopanel26_local.tga
sopanel29_local.tga
sopanel30_local.tga
sopanel31_local.tga
sopanel32_local.tga
sopanel36_local.tga
sopanel6_local.tga
sopanel7_local.tga
superpipes_local.tga
a_sgirder2_local.tga
reactorgirder1_local.tga
smdoor1a_local.tga

DaBrain
2005-07-21, 15:51:28
Ok, das können wir vergessen. I-View speichert den Alpha Kanal offensichtlich nicht beim Batch... :(

Ich habe keine Ahnung wie man das mit kostenloser Software hinbekommen soll.

Muss mal wieder Gimp rauskramen.


Edit: Ok, das hat einfach keinen Sinn. Doom 3 scheint bei DDS Texturen die Normal Map anders zu verwenden... Leider kann ich weder die orginal DDS Normal Maps öffnen, noch kann ich brauchbare Infos zu dem Thema finden.

Angeblich sind die DDS Dateien in den PK4s, nur Platzhalter...