Erweiterung für XBUE-System (WSSB-Technik)

    • Offizieller Beitrag

    Vielleicht wäre es Ratsam, das lieber als Corona-Effekt zu gestalten? http://online.ts2009.com/mediaWiki/index.php/Corona_Effect

    Die Texturtausch-Funktion in Trainz ist gerade bei statischen Objekten ein großer Performancekiller. Das ist fast nur bei Bahnfahrzeugen vertretbar, da diese sowieso schon recht imperformant sind.





    Greets, Mika

  • Wenn ich das richtig verstehe, ist die Korona eine Leuchterscheinung in Form einer Textur, in meinem Fall die Textur der Streuscheibe.

    Ist es auch möglich, die Korona mit einer von einem Script generierten Blinkfrequenz zu steuern? So möchte ich den Gleich- und Wechseltakt mehrerer Andreaskreuze gewährleisten, sowie die exakte Übereinstimmung mit den Signalweckern. Mit anderen Worten sollen alle Komponenten der WSSB-Anlage von einem zweiphasigen Blinksignal gesteuert werden, welches von einem Script generiert wird.

  • Moin!
    Alternativ kann man das ganze auch über ein zusätzliches Mesh lösen. So wurde es bisher von allen Autoren bei den bisherigen xBUe-Objekten, egal ob Signalgeber für die Straße oder Überwachungssignale gelöst.


    Dabei wird ein zusätzliches Mesh, welches nur die leuchtenden Flächen beeinhalten knapp über bzw. vor das Hauptmesh gelegt. Das Zusatzmesh kann nun relativ einfach über das Skript mit SetMeshVisible ein und ausgeblendet werden. Theoretisch bietet das sogar die Möglichkeit, das ganze sanft ein- und ausblenden zu lassen (fadeDuration). Das war bisher aber leider immer verbuggt. Alternativ gibt es auch noch eine Variante das ganze über eine Animation zu steuern. Dabei versenkt man die leuchtenden Flächen, wenn der Signalgeber dunkel sein soll, ganz einfach ein paar Hundert Meter im Boden. Aber das ist nicht immer problemlos.

    • Offizieller Beitrag

    Ja, Coronas können via Script gesteuert werden, wenn dir der eingebaute Blinkmodus nicht gefällt. Ich weiß tatsächlich gar nicht, ob das eingebaute blinken für jedes Objekt einzeln startet oder von einem zentralem Takt abhängt, in welchem Falle das sogar synchron wäre... Hab ich nie drauf geachtet, weiß nur, dass in einigen anderen Spielen sowas der Fall ist und dann immer alle Blinker schön synchron sind. :face_with_tongue:


    Theoretisch bietet das sogar die Möglichkeit, das ganze sanft ein- und ausblenden zu lassen (fadeDuration). Das war bisher aber leider immer verbuggt. Alternativ gibt es auch noch eine Variante das ganze über eine Animation zu steuern. Dabei versenkt man die leuchtenden Flächen, wenn der Signalgeber dunkel sein soll, ganz einfach ein paar Hundert Meter im Boden. Aber das ist nicht immer problemlos.

    Das mit dem Fade müsste in TRS19 eigentlich problemlos funktionieren. Jedenfalls hab ich schonmal mein Ebula mit einem superkurzen Fade ausgehen lassen als Spielerei. Das hängt aber davon ab, was für Lampen man verbaut hat. LEDs macht ein Fade eigentlich keinen Sinn, bei älterer Lichttechnik (Glühbirnen) nur ein ganz kurzer.


    Statt Animation im Boden versenken kann man sie auf einfach in das Lampenmesh hineinschieben, aber SetMeshVisible dürfte weniger Aufwand und besserer Performance in dem Fall bedeuten, weil für animierte Objekte Mesh Stitching usw nicht verfügbar sein dürfte. Aber ob die Auswirkungen hierbei so spürbar sind wie bei gespammten Texturwechseln? Warscheinlich nicht.



    Greets, Mika

  • Hallo allerseits.


    Moin!
    Alternativ kann man das ganze auch über ein zusätzliches Mesh lösen. So wurde es bisher von allen Autoren bei den bisherigen xBUe-Objekten, egal ob Signalgeber für die Straße oder Überwachungssignale gelöst.

    So möchte ich es gerne realisieren, dann passt es auch zum gesamten System.:winking_face: Aber trotzdem vielen Dank für Deinen Vorschlag Mika.:thumbs_up:

    Mir ist bei den Andreaskreuzen von Christian auch schon aufgefallen, dass die Variante mit der Animation zum Tragen kommt, die leuchtende Fläche ist standardmäßig im Andreaskreuz versteckt. Ich persönlich ziehe allerdings das Ein- und Ausblenden des Meshes in Erwägung, vielen Dank für diesen Tipp.:thumbs_up:

    Bei der Umsetzung einer Animation bin ich mir immer ein wenig unsicher, da man die animierte Fläche bestimmt nicht immer wenige Zentimeter weiter hinten verstecken kann und sie darum zum Beispiel im Boden verstecken müsste, was dazu führen könnte, dass man die Fläche außerhalb der Effektstelle zwischen Boden und Lampe bei Ablauf der Animation kurzzeitig sieht.


    Eigentlich müsste ich ja nur meine Streuscheibe duplizieren und daraus ein zweites Mesh machen. Anschließend könnte ich exportieren und müsste zwei IM-Dateien erhalten, für die eine stelle ich dann auto-create auf 1 und für die andere auf 0.

  • Es muss eine "Fakultät von 2" sein. (Steht auch so in der Fehlermeldung :winking_face: )

    Also

    2x2 Pixel

    4x4 Pixel

    8x8 Pixel

    16x16 Pixel

    32x32 Pixel

    64x64 Pixel

    128x128 Pixel

    256x256 Pixel

    512x512 Pixel

    1024x1024 Pixel

    2048x2048 Pixel


    Mehr wird z.Z. m.W.n. nicht unterstützt.

    16066-signaturbild-ujb

    Früher war nicht alles besser.

    Es war nur unsere Zeit, unsere Kindheit und Jugend.

  • Vielen Dank.:)

    Also immer mal 2.


    Wäre es für die Performance jetzt besser, eine 2048^2 UV-Map zu erstellen, sie aber nur bis auf das Nötigste auszufüllen, oder wäre eine zweite UV-Map gleicher Größe, wenn es passt auch kleiner, besser?

    • Offizieller Beitrag

    da kommt immer darauf an, wie viel von der geladenen Textur im Spiel praktisch genutzt werden kann.


    Wenn ich zum Beispiel ein Haltestellenobjektset erstelle (Haltestellenhäuschen, Schilder, Bänke etc) wobei die Einzelteile eigentlich aus dem gleichen Metall/Plastikmix sind und diese Objekte häufig zusammen verwendet werden, so macht es Sinn, eine größere Texturdatei zu erstellen, die die Texturen für alle Objekte beinhaltet. Noch besser: Ich kann alle Objekte aus dem gleichen Material basteln und sogar Platz auf der Textur (z.b. grün bemaltes Metall) für mehrere Objekte gleichzeitig verwenden.


    Was jedoch keinen Sinn machen würde, wäre jetzt ein Haus und ein Verkehrsschild zu erstellen, und dabei eine riesige Textur zu machen, die Haus und Verkehrsschild beinhaltet. Es könnte nämlich jemand ein paar von den Verkehrsschildern verbauen und dann muss ständig die riesige Textur für das Haus mitgeladen werden, obwohl nur ein kleiner Teil davon tatsächlich verwendet wird. Das gleiche mit Objekten mit Jahreszeitenfunktion (z.b. Schnee). Zwei Jahreszeiten treten in der Theorie nie gleichzeitig auf, es macht wenig Sinn, gleichzeitig die Herbst und die Sommertextur zu laden, wenn immer nur die Hälfte davon verwendet wird.

    Wenn du Objekte erstellst frage dich also: Wie werden diese später verbaut? Wenn die Objekte zu einem zusammenpassenden Set gehören, versuche, diese in eine Library zu packen, sodass du die gleichen Materials (im Idealfall nur ein einziges für alle Objekte des Sets bei Kleinteilsachen!) und eine einzige Textur pro Jahreszeit für alles verwenden kannst. Die Performancevorteile der mehrfach verwendeten Materials überwiegen dann über die Nachteile, die die größere Textur im Videoram verursacht.


    Wenn die Objekte jedoch nicht klar ersichtlich zusammengehören, so versuche, die Texturen möglichst klein zu halten, um den Videoram für detaillierte Objekte mit großen Texturen freizuhalten und nicht mit einem kleinen Andreaskreuz zu "besetzen".



    Greets, Mika

  • Texturen müssen nicht quadratisch sein, solange sowohl Höhe als auch Breite eine Potenz von 2 sind (2, 4, 8, ... , 2048). Das Verhältnis von Höhe zu Breite darf dabei höchstens 1:8 bzw 8:1 betragen (z.B. 16x128, 32x128, ... , 128x32, 128x16).


    Peter

  • Wenn du Objekte erstellst frage dich also: Wie werden diese später verbaut? Wenn die Objekte zu einem zusammenpassenden Set gehören, versuche, diese in eine Library zu packen, sodass du die gleichen Materials (im Idealfall nur ein einziges für alle Objekte des Sets bei Kleinteilsachen!) und eine einzige Textur pro Jahreszeit für alles verwenden kannst. Die Performancevorteile der mehrfach verwendeten Materials überwiegen dann über die Nachteile, die die größere Textur im Videoram verursacht.

    Wenn ich das richtig verstehe, könnte ich 10 Objekte erstellen und jedem die gleiche Textur-Karte zuweisen. Wenn ich dann alle 10 Objekte platziere, wird von Trainz die Textur-Karte nur einmal geladen. Ich bin mir jetzt nur nicht sicher, ob es genügt, diese Textur immer wieder ganz normal dem jeweiligen Objekt in Blender zuzuordnen. Wenn ich wüsste, was eine Library in Trainz ist, könnte ich mir die Frage selbst beantworten, so tief stecke ich da aber leider noch nicht drin. Ich weis nur, dass man sich zu manchen Objekten noch eine Mesh-Library herunterladen muss, darum denke ich, dass es eben nicht reicht, dieselbe Textur immer wieder dem jeweiligen Material in Blender zuzuordnen, sondern die Textur extern gleichzeitig mehreren Objekten zugeordnet wird. Ist die Mesh-Library vielleicht eine externe Textur-Karte oder ein externes Material mit einer Textur, welches außerhalb von Blender mehreren Objekten zugewiesen wird?


    Da mein WSSB-Paket sehr umfangreich werden soll, halte ich es für sehr unwahrscheinlich, dass gleiche Kombinationen relativ oft auftreten, darum möchte ich einzelne Texturen erstellen.


    Texturen müssen nicht quadratisch sein, solange sowohl Höhe als auch Breite eine Potenz von 2 sind (2, 4, 8, ... , 2048). Das Verhältnis von Höhe zu Breite darf dabei höchstens 1:8 bzw 8:1 betragen (z.B. 16x128, 32x128, ... , 128x32, 128x16).

    Also könnte meine UV-Map auch 1024x2048 Pixel groß sein?


    Eigentlich bleibt mir ja dann nur eine nächstgrößere UV-Map übrig, wenn die standardmäßige nicht reicht. Wenn ich die ungenutzten Teile der UV-Map frei lasse, würde doch eigentlich nur der texturierte genutzte Teil die Performance belasten, oder?

  • Also könnte meine UV-Map auch 1024x2048 Pixel groß sein?

    Klar, nur sollte man moeglichst quadratische Formate bevorzugen, da die GPU immer mit solchen arbeitet.

    One of the painful signs of years of dumbed-down education is how many people are unable to make a coherent argument. They can vent their emotions, question other people’s motives, make bold assertions, repeat slogans—anything except reason.“ (Thomas Sowell)

  • Dann wäre es vielleicht doch besser, das 2048x2048 Format zu wählen, wobei ich nur 1224x1224 Pixel benötige. Ist meine Idee, den großen unbenutzten Bereich der UV-Map einfach nicht zu texturieren überhaupt erstrebenswert? Denn der ungenutzte Bereich wäre schon immens, ich könnte auch noch zwei 1024x1024 Formate wählen. Dann hätte ich aber zwei UV-Maps.

    • Offizieller Beitrag

    also ich weiß jetzt nicht, wie deine UV Map aussieht, was da genau alles drauf ist. Aber wenns nur Texturen für ein solch ein Andreaskreuz sind, sollte sogar 512 x 512 reichen meiner Meinung nach.





    Greets, Mika

  • Das ist die UV-Map, es sind auch noch einige Flächen hinzugekommen, die hier nicht zu sehen sind. Eine kleinere Map würde nicht reichen, da wären die Texturen auf den Flächen zu unscharf. Es sind vor allem die Details, welche die UV-Map füllen. Die Details wurden aber schon weit reduziert.


    Eine hoeher Aufloesung waere eine Idee...

    Dann könnte ich meine UV-Map theoretisch auf 1024x1024 reduzieren ohne Schärfequalität zu verlieren. Aber benötigt man für eine höhere Auflösung nicht auch mehr Pixel? Das würde ja dann wieder für die größere UV-Map sprechen.

    Oder meinst Du damit, dass ich bei Verwendung einer größeren Map die Textur auf die volle Größe skalieren soll?

    2 Mal editiert, zuletzt von Willi S ()

  • Schönen guten Abend.


    In wie fern verwendet man eigentlich in Trainz selbst für matte, ausgeblichene und rauhe Oberflächen Glanzeinstellungen? Da WSSB-Anlagen schon ziemlich alt sind, treffen diese Eigenschaften darauf zu, darum habe ich die Glanzeinstellungen am Material erstmal komplett auf 0 gesetzt. Ich bin jedoch am Überlegen, ob geringe Glanzeinstellungen vielleicht sogar ganz angebracht wären. Darum frage ich, was für eine Glanzeinstellung dafür empfehlenswert wäre. Dann ist da noch die Frage, wie man mit einem Material verschiedene Glanzeinstellungen treffen kann. Ich weis, dass es bestimmte Materialien-Typen extra dafür gibt und man mit einer Schwarz-Weiß-Maske die glänzenden Flächen definieren kann. Wie das allerdings genau funktioniert, konnte ich der Beschreibung auf TrainzOnline noch nicht entnehmen. Außerdem kann man mit der Schwarz-Weiß-Maske nur einstellen, welche Bereiche glänzen sollen, aber nicht, welche Bereiche wie stark glänzen sollen. Das soll aber angeblich auch irgendwie mit nur einem Material möglich sein.:thinking_face:

  • Ist es denn üblich, Glanzeinstellungen für alle oder nur für bestimmte Objekte zu verwenden? Der Betonmast sieht auch ohne Glanzeinstellungen gut aus, weil er ja rauh ist. Bei den lackierten Flächen bin ich mir jedoch nicht sicher, ob Glanzeinstellungen angebracht wären. Meine Frage ist einfach, wie man mit den Glanzeinstellungen am besten umgehen sollte und welche Materialien man dafür am besten verwendet, wenn verschiedene Glanzeinstellungen auf einem Mesh erforderlich sind, was beim Andreaskreuz sehr wahrscheinlich ist (m.onetex, m.reflect, ...?). Mein Andreaskreuz soll schließlich nicht zu staubtrocken, aber auch nicht zu neu aussehen.

    Es geht mir nur um ungefähre Richtwerte für Glanzeinstellungen bei matten, ausgeblichenen und rauhen Oberflächen, damit meine System-Erweiterung später nicht von der optischen Norm abweicht und natürlich geht es mir um ein gutes Material dafür. M.reflect und m.gloss kommen für mich in Frage, weil ich bei beiden eine Reflexionskarte einbringen kann, um verschiedene Einstellungen zu übertragen. Welches ist aber nun besser?


    Eigentlich könnte man sich selbst die Frage beantworten, ob Glanzeinstellungen bei matten, ausgeblichenen und rauhen Oberflächen nötig sind, logischerweise natürlich nicht. Allerdings habe ich mein Andreaskreuz probehalber in TANE integriert und gemerkt, dass noch eine gewisse "Aura" fehlt. Ich werde den Gedanken nicht los, dass es ganz zarte Glanzeinstellungen sein könnten, die mein Andreaskreuz noch vertragen könnte. Die Logik "matt, ausgeblichen, rauh = Glanzeinstellung auf 0 und brandneu, glatt = Glanz auf hohem Niveau" hat nur im Groben Gültigkeit. Glanz entsteht wegen des Reflexionskoeffizienten von Oberflächen und ist analog, wie alles in der Physik. Darum kann man ihn auch nicht nur mit "ja und nein" beschreiben, wenn man es genau machen möchte, so wie ich. Darum frage ich nach, welche Einstellungen für solche Oberflächen in Ordnung sind. Denn auch alte in die Jahre gekommene Oberflächen haben Reflexionskoeffizienten, welche durch die Einstellung des Glanzes berücksichtigt werden sollten, allerdings wäre das nicht sehr viel, vielleicht nur 0.010, aber das ist meine Frage an euch.

    Einmal editiert, zuletzt von Willi S ()