Autor Thema: Infos zu Texturen  (Gelesen 5317 mal)

Offline lukash

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 1900
    • Loksim Tools Downloads
Infos zu Texturen
« am: März 30, 2015, 19:57:39 Nachmittag »
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

Offline RainerZ

  • Betatester
  • Hero Member
  • **
  • Beiträge: 1118
Re: Infos zu Texturen
« Antwort #1 am: März 30, 2015, 21:31:24 Nachmittag »
Hallo Lukas,

danke für die Erläuterung bzgl. der "Vergrößerung" von Texturen im Loksim, die keine Kantenlängen mit ganzzahliger Zweierpotenz aufweisen.

Gruß
Rainer

Offline RainerB

  • Standard-Benutzer
  • *
  • Beiträge: 83
Re: Infos zu Texturen
« Antwort #2 am: März 31, 2015, 13:29:04 Nachmittag »
Hallo Lukas,
das mit den Texturgrößen habe ich verstanden. Sollte auch nicht schwierig sein, das in Zukunft zu beachten. Leider habe ich Probleme beim Verständnis mit dem Alphakanal.
Was haben denn diese Dateien für eine Dateierweiterung? Ich verwende z.Z. Corel Photo Paint8 für meine Texturen. Das kann solche Sondersachen nur im Corel-Format abspeichern und ist wahrscheinlich für Loksim ungeeignet. Das Programm wird auch nicht mehr von den neueren Windows-Versionen unterstützt und läuft auf einer virtuellen XP-Variante.
Gruß Rainer

Offline KlausN

  • Betatester
  • Hero Member
  • **
  • Beiträge: 904
    • VEB Verkehrs AG
Re: Infos zu Texturen
« Antwort #3 am: März 31, 2015, 13:31:41 Nachmittag »
Hallo Rainer,

einen Alphakanal haben z.B. Portable Network Graphics (.PNG), wenn Du sowas mit Corel nicht direkt speichern kannst, sollte es eine Exportieren-Funktion dafür geben.

Gruß, Klaus
"Für Lob gibt es das Projektbilderforum, im Betatest werden Fehler gefunden." - KlausN

Offline RainerB

  • Standard-Benutzer
  • *
  • Beiträge: 83
Re: Infos zu Texturen
« Antwort #4 am: April 01, 2015, 14:09:51 Nachmittag »
Hallo Klaus,
vielen Dank für Deine Antwort. Kannst Du mir vielleicht mal so eine kleine Datei mit Alphakanal zukommen lassen?
Ich würde sie gerne mal beschnuppern.
Gruß Rainer

Offline lukash

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 1900
    • Loksim Tools Downloads
Re: Infos zu Texturen
« Antwort #5 am: April 01, 2015, 20:38:15 Nachmittag »
Hallo Rainer,
ich bin zwar nicht Klaus, aber die beiden im ersten Beitrag verlinkten Bilder enthalten beide einen Alphakanal. Ich bin kein Bildbearbeitungsprofi, aber das im ersten Beitrag verlinkte Tutorial erklärt die Bearbeitung von Bildern mit Alphakanal im kostenlosen Paint.NET Editor.
Eine weiterführende Erklärung (und ein weiteres Beispielbild) findet sich zB auf Wikipedia

lg
Lukas

Offline AndreW

  • Betatester
  • Hero Member
  • **
  • Beiträge: 745
  • Schmalspurkomiker
    • meine Loksim Downloads
Re: Infos zu Texturen
« Antwort #6 am: April 01, 2015, 22:00:44 Nachmittag »
Bei Paint Shop Pro 9 könnte ich Hilfestellung geben.

Gruß André
"Gunngeln fuffzn Minutn gebsch eich noch abr den müssn wa weidafahn" Säschs Schmalspur-Romantik

Offline RainerB

  • Standard-Benutzer
  • *
  • Beiträge: 83
Re: Infos zu Texturen
« Antwort #7 am: April 02, 2015, 16:45:51 Nachmittag »
Hallo Lukas,
danke für den Tipp!
André ich werde es mir merken. Ich spiele mit dem Gedanken die alte Corel Version zu beerdigen, weiß aber nicht so recht worauf ich umsteigen soll.
Das Photo Paint 8 habe ich ja nun schon etliche Jahre und ich möchte auch bei Corel bleiben. Erstens bin ich da einigermaßen sattelfest und zweitens habe ich sehr viele bearbeitete Bilder im .cpt Format (nicht nur von Loksim)
Gruß Rainer

Offline Quork -inaktiv-

  • Standard-Benutzer
  • *
  • Beiträge: 83
  • -inaktiv-
Re: Infos zu Texturen
« Antwort #8 am: April 26, 2015, 18:59:13 Nachmittag »
Zwar schon paar Tage alt der Post, aber @RainerB: Ich war ebenfalls jahrelang Nutzer einer alten Version von Corel PhotoPaint (könnte sogar 8 sein, müsste auf dem alten Rechner mal nachgucken). Inzwischen bin ich aber auf GIMP umgestiegen und kann das auch guten Gewissens empfehlen. Ist ein kostenloses (open source sogar) Graphikprogramm, das vom Funktionsumfang mit den kommerziellen Produkten locker mithalten kann und inzwischen (früher war das noch sehr anders) sehr angenehm zu bedienen ist. Ich fand den Umstieg von Corel zu GIMP auch relativ leicht dafür, dass da um die zwei Jahrzehnte technischen Fortschritts dazwischen liegen.
-inaktiv-

Offline taler

  • Betatester
  • Hero Member
  • **
  • Beiträge: 2300
Re: Infos zu Texturen
« Antwort #9 am: November 22, 2016, 18:51:38 Nachmittag »
Tach Zusammen,

durch Diskussionen rund um den Fahrleitungsgenerator sind mir bezüglich Texturen dann doch einige Fragen gekommen.
Eine Umstellung von BMP auf PNG ist nicht die Frage, eher wie es mit der Transparenz aussieht.
Die Drähte der Hochketten werden ja nicht durch einfach durchgefärbte Flächen dargestellt, sondern mit zwei transparenten Bereichen. Das hat natürlich zur Folge, das wir ein Problem mit hintereinanderliegenden transparenten Objekten bekommen. Und jetzt zu meinen Fragen:
  • Die Drähte sollen ja 'rund' aussehen, wie müssen dann die Verktoren der Punkte gestellt sein wenn ich genau zwei/vier Flächen habe?
  • Oder ist es sinnvoll mit einem Körper zu arbeiten? Und wie sind die Vektoren dann zu stellen
  • Eine andere Frage ist, macht es Sinn bei Objekten der FL-Anlage grundsätzlich körperliche Objekte einzusetzen oder reicht es aus, plane Objekte zu nehmen wenn eine 'Körperlichkeit' nicht sichtbar ist. Auch hier stellt sich die Frage nach den Vektoren, allerdings nicht in der Schärfe wie beim Draht.
  • Und damit verbunden ist die Frage, in wie fern die Anzahl der Flächen einen Einfluß auf die Graphikleistung des Loksims hat. Wir sprechen immerhin von bis zu 52 bzw. 104 Rechteckflächen je Hochkette[/il]
Vielleicht ergeben sich hier erhellende Antworten.

Gruss
Uwe, grübelnd

Offline lukash

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 1900
    • Loksim Tools Downloads
Re: Infos zu Texturen
« Antwort #10 am: November 25, 2016, 21:05:26 Nachmittag »
Hallo Uwe!

  • Die Drähte sollen ja 'rund' aussehen, wie müssen dann die Verktoren der Punkte gestellt sein wenn ich genau zwei/vier Flächen habe?
  • Oder ist es sinnvoll mit einem Körper zu arbeiten? Und wie sind die Vektoren dann zu stellen
Bzgl. den Vektoren: Der 2.9.3er LoksimEdit besitzt die Funktion "Normalenvektoren berechnen (rundes Objekt)". Diese setzt die Normalenvektoren entsprechend. Bei einem flachen Objekt ist es aber schwierig. Ich würde der Funktion trotzdem vertrauen, die Normalenvektoren werden dann schlicht normal auf die Flächen stehen.
Ob es "Sinn macht" mit einem Körper zu arbeiten weiß ich nicht. Je nachdem wie schwierig die Umsetzung ist, würde ich es einfach mal probieren wie es aussieht.

  • Eine andere Frage ist, macht es Sinn bei Objekten der FL-Anlage grundsätzlich körperliche Objekte einzusetzen oder reicht es aus, plane Objekte zu nehmen wenn eine 'Körperlichkeit' nicht sichtbar ist. Auch hier stellt sich die Frage nach den Vektoren, allerdings nicht in der Schärfe wie beim Draht.
"Normalenvektoren berechnen (Standard)" ;) Sinnhaftigkeit wie oben :)

  • Und damit verbunden ist die Frage, in wie fern die Anzahl der Flächen einen Einfluß auf die Graphikleistung des Loksims hat. Wir sprechen immerhin von bis zu 52 bzw. 104 Rechteckflächen je Hochkette[/il]
Auch bei der Performance ist der einzig wirklich richtige Weg "testen" :) Bzgl. Testen kann ich bei Bedarf auch gerne helfen, ich habe dafür ein Programm geschrieben mit dem das recht schnell und einfach geht (wenn es entsprechende Teststrecken gibt).
Die Anzahl der Flächen sollte nicht allzu viel Einfluss haben. Wichtig wäre, dass möglichst wenig Texturen eingesetzt werden damit alles in "einem Rutsch" dargestellt werden kann.

lg
Lukas

Offline taler

  • Betatester
  • Hero Member
  • **
  • Beiträge: 2300
Re: Infos zu Texturen
« Antwort #11 am: November 26, 2016, 12:28:36 Nachmittag »
Hallo Lukas,

Hallo Uwe!

  • Die Drähte sollen ja 'rund' aussehen, wie müssen dann die Verktoren der Punkte gestellt sein wenn ich genau zwei/vier Flächen habe?
  • Oder ist es sinnvoll mit einem Körper zu arbeiten? Und wie sind die Vektoren dann zu stellen
Bzgl. den Vektoren: Der 2.9.3er LoksimEdit besitzt die Funktion "Normalenvektoren berechnen (rundes Objekt)". Diese setzt die Normalenvektoren entsprechend. Bei einem flachen Objekt ist es aber schwierig. Ich würde der Funktion trotzdem vertrauen, die Normalenvektoren werden dann schlicht normal auf die Flächen stehen.
die Funktion ist neu! ;) Ich habe es mir mal kurz angesehen, wie das Ergebnis aussieht und ich werde das so im FLG wohl umsetzten, solange ich bei der Hochkette mit genau zwei Flächen je Teilstück arbeite.

Ob es "Sinn macht" mit einem Körper zu arbeiten weiß ich nicht. Je nachdem wie schwierig die Umsetzung ist, würde ich es einfach mal probieren wie es aussieht.
Nun, die Frage ging eher an die verehrten Streckenbauer. Ich müsste das ja 'nur' Programmieren. Da stellt sich einfach die Frage nach dem Verhältnis von Aufwand zu Nutzen. Nachher ist das vielleicht sogar verschlimmbessert. :(

  • Eine andere Frage ist, macht es Sinn bei Objekten der FL-Anlage grundsätzlich körperliche Objekte einzusetzen oder reicht es aus, plane Objekte zu nehmen wenn eine 'Körperlichkeit' nicht sichtbar ist. Auch hier stellt sich die Frage nach den Vektoren, allerdings nicht in der Schärfe wie beim Draht.
"Normalenvektoren berechnen (Standard)" ;) Sinnhaftigkeit wie oben :)
Nun auch hier ging die Frage eher an die Streckenbauer.

  • Und damit verbunden ist die Frage, in wie fern die Anzahl der Flächen einen Einfluß auf die Graphikleistung des Loksims hat. Wir sprechen immerhin von bis zu 52 bzw. 104 Rechteckflächen je Hochkette
Auch bei der Performance ist der einzig wirklich richtige Weg "testen" :) Bzgl. Testen kann ich bei Bedarf auch gerne helfen, ich habe dafür ein Programm geschrieben mit dem das recht schnell und einfach geht (wenn es entsprechende Teststrecken gibt).
Die Anzahl der Flächen sollte nicht allzu viel Einfluss haben. Wichtig wäre, dass möglichst wenig Texturen eingesetzt werden damit alles in "einem Rutsch" dargestellt werden kann.
Naja, testen ist halt ein langer Weg und ich bin da eher, sagen wir mal, faul. 8)
Und was die Texturen angeht, so habe ich geplant, das die komplette FL-Anlage letztlich mit einer, maximal zwei Texturen auskommt.
Hab' also vielen Dank für Deine Ausführungen.

Gruss
Uwe

Offline PaulB

  • Standard-Benutzer
  • *
  • Beiträge: 28
Re: Infos zu Texturen
« Antwort #12 am: November 30, 2016, 07:35:27 Vormittag »
Hallo,

Zitat
Eine Umstellung von BMP auf PNG ist nicht die Frage, eher wie es mit der Transparenz aussieht.
Die Drähte der Hochketten werden ja nicht durch einfach durchgefärbte Flächen dargestellt, sondern mit zwei transparenten Bereichen. Das hat natürlich zur Folge, das wir ein Problem mit hintereinanderliegenden transparenten Objekten bekommen.

Bei mir verschwinden einige Hochketten, wenn man darunter durchfährt. Deshalb würde ich auf die Transparenz verzichten (hab noch nicht nachgeguckt, aber wozu dient die überhaupt?).

Zitat
Die Drähte sollen ja 'rund' aussehen, wie müssen dann die Verktoren der Punkte gestellt sein wenn ich genau zwei/vier Flächen habe?
Oder ist es sinnvoll mit einem Körper zu arbeiten? Und wie sind die Vektoren dann zu stellen

Ich würde in Hochketten generell auf Körper verzichten. Auf einer Nachspannlänge hat man bereits jetzt um die 1000 Punkte - mehr sollten es meiner Meinung nach nicht werden.

Der Aufwand würde sich (wie ich finde) nicht lohnen. Zumal einige Strecken ja auch so schon nicht ganz ruckelfrei sind.

Gruß
Paul

Offline taler

  • Betatester
  • Hero Member
  • **
  • Beiträge: 2300
Re: Infos zu Texturen
« Antwort #13 am: November 30, 2016, 22:18:05 Nachmittag »
Tach,
Hallo,

Zitat
Eine Umstellung von BMP auf PNG ist nicht die Frage, eher wie es mit der Transparenz aussieht.
Die Drähte der Hochketten werden ja nicht durch einfach durchgefärbte Flächen dargestellt, sondern mit zwei transparenten Bereichen. Das hat natürlich zur Folge, das wir ein Problem mit hintereinanderliegenden transparenten Objekten bekommen.

Bei mir verschwinden einige Hochketten, wenn man darunter durchfährt. Deshalb würde ich auf die Transparenz verzichten (hab noch nicht nachgeguckt, aber wozu dient die überhaupt?).
im Prinzip deshalb: http://www.loksimulatoren.de/index.php/Thread/367-Quertragwerke/?postID=6838#post6838

Ob das jetzt immer noch so sein muß, da bin ich überfragt. Wenn ich das bei mir soweit umgeschrieben habe, werde ich weitersehen. Es sei denn, das muß immer noch so sein...

Gruss
Uwe