Jump to content

LoD, Textur, Objektnamen


Zweigleisig

Empfohlene Beiträge

Hallo Gemeinde,

ich habe ein paar Fragen bzgl. der in den LoD verwendeten Texturen und der Benenneung von Objekten.

Für die Texturen habe ich mich für das .dds Format entschieden. Nach einigem Ausprobieren (nvdxt oder Gimp) exportiere ich nun transparente Texturen mit dem Gimp-Plugin als dxt5 mit mipmaps und nicht transparente Texturen als dxt1.

  • Ist es sinnvoll für kleinere LoD auch kleinere Texturen zu erstellen?
  • Ist es sinnvoll mipmaps zu erstellen?

Die LoD befinden sich alle innerhalb EINER Blender-Datei. Das klappt beim Export soweit auch ganz gut allerdings habe ich das Gefühl, daß ich bestimmte Objekte vor dem Export umbennen muss, da sie sonst nicht wie gewünscht funktionieren. So kann ich z.B. Rad0_Lod_0 nicht benutzen, aber Rad0 funktioniert. Da sich alle LoD innerhalb einer Datei befinden, müssen die Objekte eindeutige Namen haben und momentan benenne ich sie vor jedem Export um.

Gibt es die Möglichkeit alle Präfixe so zu verwenden, daß es dem Parser egal ist was dahinter steht?

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

die Entscheidung für DXT 1 oder DXT 5 ist gut. Ob du Mipmaps selber generierst ist dir überlassen, spätestens das Studio erzeugt immer welche. Erzeugst du selber die Mipmaps, hast du mehr Kontrolle darüber, da das Studio nur ein einfaches Herunterskalieren für die Generierung verwendet. Kleinere Texturen für kleinere LoD zu verwenden ist nicht sinnvoll, da dies nur mehr Speicher verbraucht. Das Studio wählt automatisch die perfekte Mipmap aus, passend zur Anzeigegröße des Modells.

Mehrere LoD-Stufen in einer Blender-Datei (bzw. einer X-Datei) unterstützt das Studio nicht, du musst daher deine LoD-Stufen in getrennten Dateien abspeichern.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

vielen Dank für die schnelle Antwort. DXT5 ist leider notwendig, da ich keine Fensterrahmen im Wagenkasten habe und die Bereiche innerhalb der Textur halbtransparent gemacht habe, um auf die _LS-Objekte schauen zu können. Mit DXT1 geht dann leider die Transparenz verloren (egal, ob mit nvdxt oder Gimp). Dadurch ist die eine Textur 5,5 MB groß und verursacht eine Warnung. Stört mich jetzt aber nicht weiter.^^

Mit der Benennung kann ich mir helfen, indem ich nach dem Export in der .x Datei "suchen & ersetzen" drüberlaufen lasse,

 

Grüße,

Zweigl

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

da sich die Beschriftung mit auf der Textur befindet ist sie 2048x2048. Die halbe Größe habe ich noch nicht ausprobiert, werde ich aber mal machen. Alternativ könnte ich auch eine HighDetail/LowDetail Variante machen, was mein ursprünglicher Plan war, allerdings in der Datenbank zu "Dubletten" führen würde.

Hat MBS eigentlich einen Shader für Normalmaps bzw. andere Environment Maps?

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

eine Möglichkeit wäre es auch, die Beschriftung auf einer extra Textur zu verwenden. Das erhöht zwar die Anzahl an Unterobjekten, aber wenn man dadurch mehrere MB an Texturspeicher einsparen kann, ist das auch ein Vorteil. Kommt immer auf die Situation drauf an.

Einen Shader für Normal- und Environmentmaps gibt es noch nicht, steht aber bereits auf meiner ToDo-Liste.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

die Idee mit der ausgelagerten Beschriftung habe ich einmal ausprobiert. Die ursprüngliche Textur ist nun nur noch 1024x1024 und knapp über 1MB. Die Aufkleber habe ich auf eine 512x256 große Textur gebracht die 130K groß ist. Insgesamt eine gute Ersparnis bei geringem Qualitätsverlust der Kasten-Textur, aber ein großer Qualitätsgewinn bei den Anschriften.

Anschrift1.jpg

Wenn ich allerdings rauszoome sieht es so aus:

Anschrift2.jpg

Die Aufkleber werden komplett unleserlich und gelb gekrisselt.

Die Faces/Planes liegen nicht direkt auf den dahinter befindlichen, sondern sind 1mm von diesen entfernt. Weiter weg sieht nicht gut aus, wenn man von der Seite guckt, dichter ran habe ich nicht ausprobiert.

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

das könnte viele Gründe haben, vielleicht ist es ein Mipmap-Problem, vielleicht ein Transparenzproblem. Wenn du willst, schick mir das Modell einfach mal per Mail inkl. der Texturen zu, dann kann ich das schnell erkennen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

du hast deine Anschriften in einer transparenten DXT5-Textur gespeichert. Das ist aus mehreren Gründen problematisch. DXT 5 sollte nur dann verwendet werden, wenn das Objekt Halbtransparenzen verwendet, wie z.B. Glasscheiben. Eine rein digitale Transparenz (ja/nein) sollte als DXT 1 gespeichert werden. Sobald eine DXT 5-Textur zum Einsatz kommt, muss das Studio auf interne Optimierungen verzichten.

Abgesehen davon sind Transparenzen für Schriften nicht geeignet, denn bei der Berechnung der Mipmaps verschmelzen sie mit dem Hintergrund. Und wenn dieser transparent ist, kommt es zu solchen Erscheinungen. Mein Tipp: Nimm eine nicht-transparente Textur und füge den Wagonhintergrund hinter die Schriften ein. Das wird ein deutlich besseres Ergebnis bringen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

schade, daß ausgerechnet Schriften nicht für Transparenz geeignet sind.

Da der Wagenkasten schmutzig ist, wirken die Aufkleber wie Fremdkörper, da es mir nahezu unmöglich ist den Hintergrund der Anschrift so aussehen zu lassen wie der Hintergrund über dem die Anschriftentextur liegt. Die Anschriften sind auf der Anschriftentextur komplett anders skaliert als auf der ursprüngichen Textur. Ich denke ich werde den bisherigen Weg über eine Textur gehen, wenn die Anschriften aufgrund des Hintergrundes eh nicht anders skaliert werden können.

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

dass die Hintergrundfarbe von Beschriftungsfeldern von der Farbe des restlichen Fahrzeugs abweicht, kommt auch bei der großen Eisenbahn vor. Dann fahren die Fahrzeuge halt mit einem "Fleckerlteppich" herum. Ist also teilweise sogar vorbildtreu ;).

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo BahnLand,

solche Wagen kenne ich und ich finde es sehr schön, wenn etwas nicht fabrikneu aussieht. Allerdings wäre es mir lieber, solche Effekte beabsichtigt einer Textur hinzuzufügen.^^

Die Idee, die Anschriften auf eine extra Textur zu bringen (Microsoft nennt das Ganze "Decaling"), ist auch sehr sinnvoll, da die Grundtextur deutlich kleiner ausfallen kann, wenn die "Aufkleber" ausgelagert werden. Solche Decals müssen aber in Verbindung mit der Grundtextur anders gerendert werden, damit die Decals nicht auf der Grundtextur flimmern.

Da ich aber 3 Wagen bzw. Texturen habe, (B, AB, BD) hätten sie alle an denselben Stellen den Patchwork-Look, was ich nicht so hübsch finde. Da ich die Anschriften, wie auch den Rest der Details, relativ zeitaufwändig gegoogelt und als Vektorgrafiken erstellt habe, möchte ich sie natürlich auch nicht als kleine Striche zu Gesicht bekommen. ;)

Deswegen die 2048x2048 Textur. Beim Runterskalieren auf 1024x1024 geht halt vieles verloren.

 

Ist jetzt aber auch nicht weiter schlimm, eine Mittelklasse GraKa mit 2GB RAM wuppt das locker und ich werde die Umbauwagen dann wohl nur lokal nutzen.

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

Zitat

... und ich werde die Umbauwagen dann wohl nur lokal nutzen.

es wäre sehr schade, wenn Du die schönen Umbau-4-Achser nicht der MBS-Gemeinde zur Verfügung stellen würdest. Diese könnte man nämlich auch sehr schön mit den Umbau-3-Achserh von Seehund kombinieren.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

wenn du es schaffst, dass die 2048er Textur statt DXT 5 nur mit DXT 1 gespeichert wird, dann hast du auch schon wieder viel erreicht und dann ist die Größe auch in Ordnung. So wie ich das gesehen habe, benötigst du für die Wagonhülle keine Halbtransparenzen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für eure Vorschläge. Genug Motivation, um doch noch eine Lösung - mit Kompromiss - zu finden.^^

Auf die Halbtransparenz der Fenster zu verzichten ist kein großes Problem. Mit DXT1 & Volltransparenz kann ich trotzdem die Löcher für die Rücklichter in die Textur bohren. Auch wäre eine Beleuchtung des Innenraumes mit volltransparenten Fenstern möglich, dann sind die "Scheiben" allerdings in der Farbe der _LS-Planes im Innenraum. Umgekehrt texturiert hätten die _LS-Planes den Farbton der Fenster, weswegen es nachts dann in Fensterfarbe leuchten würde. Ich denke mal, daß es nur beleuchtete Rücklichter geben wird.

Sobald keine DXT5 Textur mit im Spiel ist, klappt es mit den volltransparenten DXT1 Decals um einiges besser. So hat das Flimmern deutlich abgenommen und auch wenn die Schriften teilweise etwas krakelig (liegt wohl an DXT1) aussehen, empfinde ich ein leichtes Flimmern während der Fahrt und beim Bewegen der Kamera nun nicht mehr als störend. Alle Texturen zusammen wiegen jetzt knapp 800K und LoD 0 hat etwas mehr als 10K Polys.

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hello again,

mit DXT1 (Alpha=1) sieht der Wagen nun so aus.

4yg_phase_2.jpg

Weil das Modell keine modellierten Fenster hat, schaut man jetzt durch die volltransparenten Stellen der Textur in das Innere des Wagen. Auch wenn durch die kleinere Textur und die Kompression die Fensterrahmen nicht so optimal aussehen, finde ich es ganz akzeptabel, da dadurch deutlich weniger Polys anfallen.

Irgendwie hätte ich aber trotzdem gern die Fensterscheiben in halbtransparent.

So wie ich es verstanden habe verstehen sich DXT5 (halbtransparent) und DXT1 (volltransparent) aber nicht miteinander. Selbst wenn ich die Fenster modelliere, wäre es dann ja immer noch ein Gemisch aus DXT5 & DXT1. Mir fehlt da ein bisschen das Verständnis, darum frage ich mal so rum.

Wie kann ich ein Modell mit halbtransparenten Texturen (z.B. Fensterscheiben), volltransparenten Texturen (z.B. Aufkleber) und nicht transparenten Texturen (z.B. Wagenkasten) zusammenstellen?

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

du kannst DXT-1 beliebig mit DXT-5 mischen, da gibt es keine Probleme. Du musst dann aber eben die Bereiche auf deinem Wagon klar voneinander trennen. Im Moment hast du alles auf einer Textur, was performance-technisch das Optimum ist. Willst du nun aber halbtransparente Scheiben, ohne die anderen Bereiche zu beeinflussen, dann musst du die Scheiben als extra Mesh modellieren und eine DXT-5 Textur zuweisen. Wie immer gilt es hier einen Kompromiss zwischen Qualität und Performance zu finden.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

prima, wichtig ist jetzt nur noch zu beachten, dass du die Scheiben in deinem Programm zu einem einzelnen Mesh verknüpfst, da das Studio sonst jede Scheibe einzeln rendern muss (siehe Unterobjekte). Am besten du fasst die Scheiben jeder Wagonseite zu einem Mesh zusammen, sodass am Ende nur 2 getrennte Unterobjekte entstehen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

ist es sinnvoll, die Meshes nach Materialien zu trennen? Bisher habe ich alles nach Funktion vereinigt.

  • _Scale_1_100
  • Rad0
  • Rad1
  • Kasten

Der Maßstab ist ein Empty. Rad0 und Rad1 habe ich zu je einem Mesh zusammengefasst. Der Rest ist im Kasten als ein Mesh gelandet, der aber mehrere Materialien hat. Sieht so auch OK aus. Trotzdem hat das Modell nach dem Import ins MBS, 12 Unterobjekte. Insgesamt gibt es 9 Materialien/Texturen + Rad0 + Rad1 + Kasten = 12, nehme ich an.

So würde ich die Scheiben als einen Mesh joinen, bzw. mit dem Kasten joinen, damit es nur ein Objekt ist. Wenn das Studio allerdings alles nach Materialien aufdröselt, kann ich mir das ja ersparen. Bisher habe ich angenommen, daß ich mich an bestimmte Vorgaben halten muss und deswegen alles gejoint. Wenn ich mich allerdings gar nicht darum kümmern muss ist das viel angenehmer.

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zweigl,

bereits der Blender-Exporter trennt die Meshes nach Materialien auf. Selber joinen musst du normale Meshes nicht, denn das Studio fasst automatisch alle Meshes, die das gleiche Material verwenden und nicht speziell animiert werden, zu einem Mesh zusammen. Lediglich transparente Meshes spielen hier eine Sonderrolle, denn diese kann das Studio nicht selber zusammenfassen, da es diese beim Rendern je nach Blickwinkel unterschiedlich sortieren muss. Daher ist hier der Modellbauer gefragt, der alle auf einer Ebene liegende, transparente, das gleiche Material verwendete Meshes zu einem Mesh zusammenfügt.

Aber es schadet nie einen Blick auf die Unterobjekte zu werfen und sich immer bewusst zu sein, woher diese kommen und ob es Einsparpotential gibt, z.B. durch Verwendung von weniger Materialien etc...

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

ja einsparen geht noch. Eine einfarbige Kachel kann ich noch verlagern. Die anderen Kacheln sind mit 64x64 Pixeln jeweils 2878 Byte groß. Die Drehgestelle, Anschriften, der Kasten und das Innenleben haben jeweils eigene Texturen. Das neue Fenster nicht zu vergessen. Insgesamt sind es ca. 880K in 8 Texturen und 12K im Lod0 an Polys. Wenn die Kacheln in dieser Größe allerdings spürbare Performance Einbußen verursachen sollten, könnte ich mir nochmal Gedanken machen.

 

Edit:

Nach erneutem Aufteilen der UV-Koordinaten reichen letztendlich doch 2 Texturen aus. 1024x1024, DXT1 und 4x4, DXT5 zusammen 682k.

 

Grüße,

Zweigl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...