3D NIF verursacht Fehler bei Shadern

TheDarkRuler

Hortator
Hallo zusammen,

in diesem Post hier ( http://www.scharesoft.de/joomla/forum/showpost.php?p=791438&postcount=3810 ) habe ich ein Problem mit einer NIF geschildert.

Ich dachte zunächst, dass es an einem Shaderproblem liegt, doch Lazarus sagte mir.

Lazarus schrieb:
Ich würde auf unglücklich gewählte/unnötige Einstellungen in Nifskope tippen, insbesondere was die AlphaProperty anbelangt.

Ich habe hier mal die NIF hochgeladen.
Es wäre echt super nett, wenn mir jemand helfen könnte.
http://www.zshare.net/download/826401335ad32243/
 
Ich würde die Alpha Property mal ganz raus nehmen (die ist in der Nif total unnötig ;)). Wenn du schon dabei bist kannst du auch gleich die ganzen NiVertexColorProperty raus nehmen (Die wird für Haare gebraucht damit sie sich im Rassen menü Färben lassen. Was haben die eigentlich in einer Rüstung zu suchen :?: )
 
Zuletzt bearbeitet:
  • Like
Reaktionen: TheDarkRuler
Ich hoffe ich kann mich mit meiner Frage hier dranhängen, da sie wie ich finde mit demselben Problem zu tun hat. Ich arbeite bei meinen Texturierungen selbst gern mit Alpha-Kanälen, logischerweise setze ich auch die NiAlphaProperty häufig (weil unerlässlich) ein. S.o. wurde ja bereits erwähnt das dies zu Fehlern mit diversen Shadern führt. Meine Frage zielt nun darauf ab, warum ist das so? Warum haben z.B. Haare und folglich auch mit Alpha-Kanälen texturierte Kleidungsstücke keinen Schatten (z.B. Canopy-Shadow wenn man unter einem Baum steht) und wie ließe sich das beheben ohne die NiAlphaProperty der Nifs zu löschen?
 
Die Engine scheint unter Standardbedingungen nur die oberste transparente Schicht zu rendern. Es resultiert vor allem bei Haaren der > Mottenfraßeffekt.
Bethesda trickst diesen Effekt mit der _hl.dds bei den Haaren aus. Für Perücken oder transparente Kleidung kann man aber keine _hl.dds verwenden, weil die die Anbindung an das Animationsskelett stört (Kleidung/ Haare schweben "wie am Gummiband" hinterher und bleiben steif).

Rechtsklick auf die NiAlphaProperty > Flags zeigt eine Reihe von Einstellmöglichkeiten.
Zur Minimierung des Mottenfraßes sollten
- ENABLE TESTING angehakelt sein
- ALPHA TEST FUNCTION auf GREATER stehen
- ALPHA TEST THRESHOLD auf > 0 (20, 40, 80) stehen. Je höher, desto härter wird das Alpha- Graustufenbild kontrastiert.

Abschalten kann man den Mottenfraß mit SOURCE BLEND MODE: DST ALPHA gegen INV DST ALPHA. Dies erzeugt auch etwas härteres Alpha- Blending.
Allerdings führt das bei allen Nvidia- und einigen ATI- Karten zur Unsichtbarkeit der Items.
 
Zuletzt bearbeitet:
Vielen Dank für die Erklärungen, kann man über Multitexturing und/bzw. über die Vergabe aller Texturen (Normal-, NormalMap-, Detail- und Glossy-Texturen) da noch etwas drehen, meist ist ja nur die erste Basistextur in der NiF-eingetragen?

Hauptsächlich verwende ich in der NiAlphaProperty die Flags 4845 oder 6819, aber auch diese Werte scheinen noch nicht richtig zu sein, durchsichtige Dreiecke bei der gegenüberliegenden (durchscheinenden) zweiten Seite eines Alpha-Gegenstandes - z.B. Kleid Vorder- und Rückseite oder die Rückseite fehlt komplett.



Warum die Schattensdarstellung auf Haaren (s.o.) und Kleidern mit Alpha-Channel fehlt wenn man wie im Beispiel unter einem Baum steht bleibt aber weiterhin offen....

Ich bekomme zumindest eine grobe Ahnung was sein könnte, wenn ich die Material-Bezeichnung eines Body-Meshes von 'skin' in meinetwegen 'Haut' ändere, sofort ändert sich ingame die Darstellung der Hautoberfläche, obwohl alle Farbwerte (Emissive, Specular, Ambient, Diffuse) die Glossiness und der Alpha-Wert absolut identisch bleiben. Soweit ich das verstanden habe, legt das Material namens "skin" den Skin-Shader aus der Shaderpackage0**.sdp fest, ist vielleicht da ein Ansatzpunkt?
 
Zuletzt bearbeitet von einem Moderator:
Das Material scheint teilweise hardcoded und entscheidet über die Färbbarkeit via Regler im showracemenu (Haut, Haare).

"Skin" als Material erzwingt z.B. die Verwendung der jeweiligen Hauttextur, die sich aus dem Wortstamm der Strip ableitet.
Heißt die Strip also FootIrgendwas, wird bei männlichen Chars die footmale.dds und bei weiblichen die footfemale.dds erzwungen.

Daneben sind auch noch die Lage der Datei im richtigen Pfad und der Dateiname der .dds ausschlaggebend. Am besten bei fehlerhafter Darstellung ein Original betrachten.

Ansonsten ist das Material u.a. für den Trefferklang codierend. Daher sollte man möglichst sauber arbeiten und nicht mit 3D- Auswurf wie "Material.001" hausieren gehen.
 
  • Like
Reaktionen: 1 Person
Ich poste die Bilder-Serie auch hier, da sie direkt mit dem Shader-Fehlern zu tun hat - und meinen Tests bei der Entfernung der Neck-Seams - eine Breitseite verpaßt hat. Im rechten Bild habe ich das Material von 'skin' in 'Haut' umbenannt, wobei man im Vergleich zu den anderen Bildern sehr gut erkennen kann das sich das Shading der Hauttextur völlig verändert - es soll nicht unerwähnt bleiben das die sogenannten "Trompeten" (störende Highlights die aussehen wie stylisierte Trompeten auf Erhebungen bzw. in Vertiefungen) nun auf dem Oberkörper finden *Grummel*

Wie man im mittleren und rechten Bild sehr gut sehen kann führt die Vergabe der NiAlphaProperty (egal welches Flag bzw. welchen Threshold man setzt) direkt zum Ausfall des Körperschattens.
 

Anhänge

  • Normal+Seam.JPG
    Normal+Seam.JPG
    14,5 KB · Aufrufe: 142
  • Alpha-Property.JPG
    Alpha-Property.JPG
    14 KB · Aufrufe: 146
  • Alpha-Gradient.JPG
    Alpha-Gradient.JPG
    15,4 KB · Aufrufe: 151