Verwendung von Texturen (Alphakanal)

:!!!: Leider sind die in diesem Artikel enthaltenen Bilder nicht mehr verfügbar. Wir arbeiten an einer Lösung.


Ab Loksim 2.8.3 wird es möglich sein, Texturen mit Alphakanal zu verwenden. Ab diesem Zeitpunkt ist dies auch die bevorzugte Variante für transparente Texturen und den alten Optionen "Schwarz ist transparent", "Transparenz ist die Farbe des Pixels links/oben" bzw. "Transparenz aus Graustufenbild" vorzuziehen.


Aus diesem Grund möchte ich an dieser Stelle schon jetzt ein paar Tipps geben, wie man solche Texturen mit Paint.NET anlegt.


Es gibt sicherlich auch andere - eventuell auch bessere - Wege um das gleiche Ergebnis zu erreichen. Die Tipps hier sollen allen helfen, die zuvor noch nichts von einem Alphakanal gehört haben.

Konvertieren von "Transparenz aus Bitmap"

Dafür ist zuerst der Download eines Plugins notwendig: http://forums.getpaint.net/ind…ha-mask-import-plugin-20/

Die "AlphaMask.zip" herunterladen, in einen beliebigen Ordner entpacken und die enthaltene .dll ins Paint.NET\Effects Verzeichnis kopieren

bei mir C:\Program Files\Paint.NET\Effects


Das zu konvertierende Bitmap öffnen, Effekte - Alpha Mask wählen. Unter "Mask File" das Graustufenbild auswählen und OK klicken

Konvertieren von "schwarz ist transparenz" und "Transparenz ist Farbe des Pixels links/oben"

Den "Zauberstab" auswählen, den gewünschten Bereich damit markieren und "Entf" drücken. Wenn der gelöschte Bereich zu groß oder zu klein ist, die "Toleranz" des Zauberstabs ändern. Leider werden dabei hin und wieder "Sünden" sichtbar, da Loksim bei der Transparenz relativ "tolerant" ist und nicht nur vollkommen transparente Bereiche ausblendet

Bei neuen Texturen sollte man aber unbedingt darauf achten, dass Pixel die ausgeblendet werden sollen, auch tatsächlich komplett transparent sind


https://s16.postimg.org/e55gbuexd/image.png


https://s16.postimg.org/dgwlswg7l/image.png

Halbtransparente Texturen erstellen

Bei einem neuen Bild zuerst den gesamten Hintergrund "löschen". Am einfachsten mittels Strg + A alles markieren und "Entf" drücken.


Variante 1:

Eine neue Ebene anlegen


https://s28.postimg.org/vao3m39bd/image.png


Auf der Ebene ganz normal zeichnen


"Ebeneneigenschaften" wählen und die "Deckfähigkeit" ändern


https://s28.postimg.org/art7h0ve1/image.png


Variante 2:

Direkt mit einer "transparenten Farbe" zeichnen. Dazu muss im Farbdialog auf "Mehr" geklickt werden und anschließend "Transparenz - Alphakanal" eingestellt werden


https://s28.postimg.org/8bre36dbd/image.png


Im Moment macht es keinen Unterschied, ob man im LoksimEdit "Transparenz aus Alphakanal - alle Transparenzwerte möglich" oder "Transparenz aus Alphakanal - nur sichtbar/unsichtbar" auswählt. In Zukunft könnte das allerdings für Optimierungen verwendet werden.

"alle Transparenzwerte möglich" sollte man wählen, wenn im Bild auch halbtransparente Bereiche vorkommen. "nur sichtbar/unsichtbar" ist besser, wenn keine solchen halbtransparenten Pixel vorkommen. Also alle Pixel entweder komplett sichtbar oder komplett unsichtbar sind.

Anders gesagt, bei allen Texturen wo man bisher "schwarz ist transparenz" bzw "Transparenz aus Pixel links/oben" gewählt hat, sollte man "nur sichtbar/unsichtbar" wählen. Bei Texturen wo man "Transparenz aus Bitmap" verwendet hat, ist "alle Transparenzwerte möglich" die richtige Wahl

Texturgröße

Ein wichtiger Faktor für die Performance (und damit die erreichbaren fps) ist die Anzahl der so genannten "Draw Calls." Sehr einfach gesagt ist ein Draw Call der Befehl an die Graphikkarte eine (fast) beliebige Anzahl an Dreiecken mit einer bestimmten Textur an einem bestimmten Ort zu zeichnen. Insbesondere bei der derzeit von Loksim verwendeten Graphikschnittstelle spielen diese Draw Calls eine wichtige Rolle.

Dies bedeutet im Umkehrschluss, dass für die Anzeige von zwei Objekten die eine unterschiedliche Textur nutzen auch zwei Draw Calls notwendig sind.


Unter Berücksichtigung dieser Tatsachen ist es sinnvoll mehrere kleinere Texturen auf einer größeren Textur zusammenzufassen. Insbesondere bei Objekten die (fast) immer gemeinsam angezeigt werden: Beispielsweise die Teilobjekte eines Gruppenobjekts. Jedoch kann diese Optimierung auch für Texturen von mehreren Gruppenobjekten die fast immer ''nebeneinander'' angezeigt werden, Sinn machen. Hierzu gehören zB mehrere Gebäude eines charakteristischen Bahnhofs. Da durch das Zusammenfassen von Texturen eine größere Textur entsteht, sollte man jedoch Texturen von Objekten die häufig nicht miteinander angezeigt/aufgestellt werden, nicht zusammenfassen. Denn kleine Texturen sind sowohl bei der Darstellung als auch beim Laden effizienter.


Andererseits sollten Texturen stets so klein wie möglich sein und den vorhandenen Platz möglichst gut ausnutzen. Auch wenn der Festplattenspeicher (und meist auch der Arbeitsspeicher) heute meistens groß genug ist (Loksim kann als 32Bit Anwendung nicht mehr als 4GB Hauptspeicher nutzen), so sind die Speicher auf - insbesondere integrierten - Graphikkarten nicht immer so groß. Zusätzlich ist zu beachten, dass kleinere Texturen schneller von einem Speicher in den anderen übertragen werden können. Die Wahl einer sinnvollen Texturgröße macht also immer noch Sinn.

Zum einen ist dabei die Überlegung wichtig, wie groß das Objekt für welches die Textur gedacht ist, in der Simulator dann tatsächlich angezeigt wird. Eine Textur für ein Signallicht muss deshalb nur wenige Pixel breit sein. Andere Texturen wie zB die Texturen die für die Himmelsdarstellung verwendet werden, sollten auch für FullHD (1920x1080px) genug Details beinhalten. 4K Monitore können derzeit von Loksim nicht voll ausgenutzt werden und müssen deshalb beim Objektbau (noch) nicht beachtet werden. Eine Hausmauer die beispielsweise hin und wieder den halben Bildschirm des Simulators ausfüllt, kann also ruhig eine Breite von 1024px aufweisen. Größere Texturen sollte man eher vermeiden und bei Bedarf eher das Objekt zweiteilen: Eine Mauer wird zB selten den ganzen Bildschirm ausfüllen und sicherlich oftmals auch nur zum Teil dargestellt werden. Dann ist es effizienter, zwei halb so große Texturen zu benutzen und nicht eine einzige die doppelt so groß ist. Auch ist die Standardeinstellung der maximalen Texturgröße im Loksim derzeit 1024px. Ist eine Textur größer als diese Maximalgröße, wird die Textur beim Laden auf die Maximalgröße verkleinert.

Zusätzlich ist zu beachten, dass zur Laufzeit intern immer mit Texturen die Zweierpotenzen als Seitengröße haben gearbeitet wird. Eine Textur der Größe 200x70px wird also beispielsweise beim Laden auf eine Textur mit 256x128px vergrößert. Die Textur wird dabei nicht tatsächlich "vergrößert", sondern es wird ein - nicht benutzter - Rand eingefügt. Die bedeutet, dass eine Textur der Größe 200x70px und eine mit 256x128px zur Laufzeit gleich viel Speicherplatz benötigt. Man könnte also entweder die Textur der Größe 200x70px auf 256x128px vergrößern, um mehr Details darstellen zu können oder man verwendet den "nicht genutzten Rand" für ein zweites/weiteres Objekt. Es sei gesagt, dass Texturen die keine Zweierpotenzen als Seitenlängen benutzen ''nur'' den Nachteil der Platzverschwendung haben.

Transparenz

Für transparente Objekte sollten die Optionen „schwarz ist transparent“, „Transparenzfarbe ist die Farbe des Pixels links/unten“ und „Transparenzfarbe aus Bitmap“ nicht mehr verwendet werden. Diese sind beim Laden aufwändiger zu behandeln wie die zwei neuen Methoden. Transparenz sollte bei neuen Objekten also nur mehr durch den Alphakanal in der Textur umgesetzt werden.

Dafür stehen zwei Einstellungen zur Verfügung:


Transparenz aus Alphakanal – nur sichtbar/unsichtbar

Diese Option sollte gesetzt werden, falls die Textur nur vollkommen durchsichtige bzw. undurchsichtige Bereich enthält.

Beispielbild (lokal abspeichern um Transparenz betrachten zu können)


Transparenz aus Alphakanal – alle Transparenzwerte möglich

Diese Option muss gesetzt werden, falls die Textur auch halbtransparente Bereiche enthält.

Beispielbild (lokal abspeichern um Transparenz betrachten zu können)


Ist man sich nicht sicher, sollte „Transparenz aus Alphakanal – alle Transparenzwerte möglich“ gesetzt werden. In einer zukünftigen Loksim-Version könnten Objekte mit „Transparenz aus Alphakanal – nur sichtbar/unsichtbar“ jedoch eventuell schneller dargestellt werden.

Achtung: Derzeit gibt es keine Unterscheidung zwischen diesen beiden Optionen. Dies muss jedoch in Zukunft nicht so sein, und wenn bei einem Objekt fälschlicherweise „Transparenz aus Alphakanal – nur sichtbar/unsichtbar“ eingestellt ist, kann es zu Fehldarstellungen kommen.


Kurzes Tutorial für Texturen mit Alphakanal



(Original-Thread: Verwendung von Texturen (Alphakanal))

Kommentare 1

  • Schauen Sie russischen Hochzeitsfotografen über die Schulter, wie sie die Liebe in jedem Bild einfangen. Dieser Artikel Russische Hochzeit erforscht die Kunst der Hochzeitsfotografie in Russland und beleuchtet die einzigartigen Stile und Techniken, die jedes Album zu einem visuellen Meisterwerk machen. Von ungestellten Momenten bis hin zu gestellten Porträts - entdecken Sie, wie russische Hochzeitsfotografen bleibende Erinnerungen für Paare schaffen, die sie in Ehren halten.