Zieltext abgeschnitten

Willkommen in der OMSI-WebDisk!
Als Gast kannst du nur Inhalte in deiner ausgewählten Sprache sehen. Registrierte Nutzer können die Sichtbarkeit anderer Sprachen in ihrem Kontrollzentrum aktivieren, weitere Infos hier.
Alle Themen sind in den Foren mit einer Sprachflagge gekennzeichnet: = Englisch [EN], = Deutsch [DE], = Französisch [FR]. Wenn du die angegebene Sprache nicht beherrschst, schreibe auf Englisch!
  • Moin,

    ich hab mir eine Matrix in den NLC eingebaut und hab die entsprechend breiter gemacht. Vorher war die Auflösung der Frontanzeige 32x200 und ich hab sie jetzt mathematisch ( :D ) auf 32x216 erweitert. Also Textur, Mesh und Mapping angepasst. In Omsi funktioniert das auch, nur wird noch nicht der Platz ausgenutzt.


    Die Textur der Matrix hat von der Frontanzeige bis zum rechten Bildrand einen Abstand von 440 Pixeln. Nachdem ich meine 16 Dots drangeklatscht habe, habe ich das Bild nochmal so erweitert, dass der wieder 440 Pixel Platz hab und hab dann die neue Auflösung der Textur in die model.cfg aufgenommen.


    Die Auflösung war danach 2176x1024.


    Und nach meinem Verständnis bedeuten die Zahlen bei den Skripttexturen das hier:


    Aber in Omsi sieht es halt so aus:

    A


    Ich hoffe, jemand kennt sich da aus xD


    Liebe Grüße

  • es gibt noch Einträge in der Vmatrix_constfile_K++.txt


    die ersten 3 sind selbsterklärend

    Pixel Faktor, keine Ahnung


    dazu solltest dir ggf. noch einen neuen Bitmap-Ordner zulegen. Sonst finde ich auch keine Hinweise weiter, wo die Auflösung gesteuert wird


    Code: vMatrix.osc
                "..\..\Anzeigen\Krueger\230x32\palettes\" (L.$.yard) $+ ".bmp" $+
    Code: vMatrix.osc
    ' else-1-3
                    "..\..\Anzeigen\Krueger\"
                    (L.L.Matrix_Res) 2 =
                    {if}
                        "230x32\" $+
  • Moin, also zunächst muss ich dich enttäuschen: Die Matritzen in den MAN NLC von Schröder Reisen und DB Regio Nord-Ost haben alle eine Auflösung von 240x32, also 40 Pixel mehr als die reguläre 200x32-Matrix, wie man sie von aktuell allen BVG-Fahrzeugen kennt.


    Ich vermute mal, du hast als Grundlage die Matrix aus dem MX C2 genommen. Es ist in jedem Fall nötig, im Script ein paar Änderungen vorzunehmen. Evtl. reicht es jedoch schon aus, die 200 durch eine 240 zu tauschen und es geht alles wie gewollt.


    Da die Textur 256 Pixel breit ist, brauchst du gar keine breitere Auflösung, denn 240 < 256. Also gehen auch 1024 weiterhin für die hochskalierte Textur. Übrigens mag OMSI gerne Texturen mit 2er-Potenzen als Auflösung. 1024x1024 geht, aber auch sowas wie 512x64, es müssen also nicht quadratische Texturen sein.

  • Ich habs :)


    Die Matrix ist keine K++ und die constfile hat mir deswegen nicht wirklich weitergeholfen, aber ich hab jetzt ein Macro im Skript gefunden, wo die Auflösung festgelegt wird xD


    Dann war's am Ende doch so einfach.


    Trotzdem vielen Dank :)


    Moin,

    ich hab jetzt ein anderes Problem und dachte, ich funktioniere diesen Thread einfach um xD


    image.png?ex=65f5aaeb&is=65e335eb&hm=89b2d3ef3b252680191e794d813f733c2b93bbcdb891b9445ad2a02b5953f5d4&=

    Der Zieltext wird unten abgeschnitten, obwohl da noch genug Platz wäre. Das Mapping passt perfekt in Blender und ich habe nichts mehr im Skript oder bei den Skripttexturen verändert. Vielleicht kann mir jemand helfen :)


    Es hat ja vorher (s. oben) noch normal funktioniert, aber auf einmal nicht mehr

    2 Mal editiert, zuletzt von Lenn () aus folgendem Grund: Ein Beitrag von Lenn mit diesem Beitrag zusammengefügt.

  • Lenn

    Hat den Titel des Themas von „Skripttextur Breite erweitern“ zu „Zieltext abgeschnitten“ geändert.
  • Moin,

    ich hab mir jetzt die Mx Anzeige eingebaut (ich hatte vorher die aus dem 300er Solaris) und jetzt hab ich hier auch dasselbe Problem.

    Im Skript ist alles richtig und die Skripttextur funktioniert eigentlich auch, weil er alles drauf zeichnet.


    image.png?ex=6630d883&is=661e6383&hm=34633d4af28445f4cd9b62a8c8acf1c76faa6e6efbcbca2fc6930d5465df990b&=


    PS: es ist jetzt auch eine 32x240 Anzeige ;)

    • Hilfreichster Beitrag

    Also ich weiß zwar nicht, was dich an meiner Anzeige aus dem 300er Solaris gestört hat, aber darum geht es ja hier nicht. ^^

    Das Problem liegt jedenfalls in zu wenigen Durchläufen beim pixelweisen Übertragen der ersten Skripttextur auf die zweite Skripttextur mit einer höheren Auflösung (doppelte Höhe+Breite soweit ich weiß). Diese werden im Skript unten im Makro Matrix_PrintBitmap festgelegt:



    Dabei wird geguckt, welche Anzeige (Vorne, Fahrerseite/Heck oder Linie) gerade übertragen werden soll. In jedem Fall wird aber die Pixelanzahl der Linienanzeige übertragen (siehe Zeile 3-6), was 48 x 26 = 1248 Pixel sind. Die Variable Matrix_Modul entscheidet nun, wie viele Pixel noch für die jeweilige Anzeige übertragen werden müssen. Beim Wert 0 handelt es sich um die Frontanzeige, also die Anzeige, die nun um 40x32 Pixel größer geworden ist. Übertragen werden aber nur 200 x 32 = 6400 Pixel, es müssten aber nach der Vergrößerung 240 x 32 = 7680 Pixel sein, es fehlen also 1280 Pixel. Das sind 5 und 1/3 Reihen, wie auch auf dem Bild von dir zu sehen.
    Die Makros Matrix_PrintBitmapPixelXX definieren nun also die Anzahl der Durchgänge. Dabei gilt: Anzahl = 2^XX. Somit muss man die Zahl 7680 nach Abzug der 1248 Pixel von der Linienanzeige in eine Binärzahl umwandeln. 6432 sieht in binärer Schreibweise so aus: 1100100100000. Nun muss man also von hinten an mit 0 beginnend (!) abzählen, wo eine 1 steht. Dabei kommen die Zahlen 5, 8, 11 und 12 raus. Nun einfach viermal das Makro Matrix_PrintBitmapPixelXX unter (L.L.Matrix_Modul) 0 = und dem darauffolgenden {if} mit den genannten Zahlen für XX aufrufen lassen und es wird genau die korrekte Anzahl an Durchgängen durchgeführt, sodass kein Pixel am Ende in OMSI auf der Anzeige fehlt (sofern ich keinen Rechenfehler hatte :D):


    Ich hätte die Lösung jetzt auch in zwei Sätzen ohne weitere Erläuterung schreiben können, aber ich wollte, dass man versteht, wie sich das ganze zusammensetzt. Evtl. findet es ja sogar jemand interessant, wer weiß. ^^

  • Also irgendwie sah deine Matrix immer so dunkel aus xD Vielleicht hab ich auch nur was beim Einbauen verhauen oder so :D Hab den MAN halt nochmal komplett neu angefangen. Und ich hab bei deiner Matrix das irgendwie nicht hingekriegt, dass durch die größere Breite der Abstand zwischen den Zeichen größer wird. Irgendwie war es bei mir eher gestretched. Aber vielleicht bau ich mir die doch dann wieder lieber ein, vor allem, weil die auch schöne Texturen hat :D


    Aber deine tolle Erläuterung werde ich trotzdem auf jeden Fall ausprobieren, dankeschön :D

  • Ah, also das mit der Helligkeit ist darauf zurückzuführen, dass die Mipmaps der .dds-Dateien beim Vergrößern auf 240x32 wieder gelöscht oder zmd. wieder mit den automatisch erzeugten Mipmaps überschrieben wurden. Wenn du dir die Originaltexturen aus dem Solaris mal in GIMP (!) ansiehst, wirst du auf den unteren, kleineren Mipmaps sehen, dass irgendwann alles komplett weiß wird, was bei der modifizierten Textur nicht mehr so sein wird. Normalerweise wird bei den automatischen Mipmaps die Textur nämlich deutlich grauer und sieht somit deutlich weniger hell aus, da die Originaltextur in voller Größe einige dunklere Zwischenräume hat, die zusammen mit den eigentlichen Pixeln beim Verkleinern zu einem Grau heruntergemischt werden.
    In der Ferne werden dann die kleineren, dunklen Mipmaps angezeigt (Nah: Größte Mipmap, Fern: Kleinste Mipmap -> dazwischen werden jeweils die Abstufungen mit Übergang zur nächst größeren oder kleineren Mipmap angezeigt). Damit es nun aber nicht nur von Nahem, sondern auch in der Ferne noch schön hell und weiß aussieht, muss man die Mipmaps jeweils manuell aufhellen bzw. ab einem bestimmten Grad einfach komplett weiß färben in GIMP.

    Ich hänge dir hier mal die beiden .dds-Dateien an, also Lightmap und normale Textur, wo das ganze bereits für die 240x32-Matrix geschehen ist.


    Zum Thema Skript: Dort reicht es aus im Makro Matrix_SetCoords bei (L.L.Matrix_Modul) 0 = die Matrix_Width auf 240 zu setzen und am Ende des Skripts die in meinem letzten Post genannten Änderungen fürs Übertragen der ersten Skripttextur auf die zweite Skripttextur anzuwenden.

    Dazu kommen dann nur noch die Änderungen im Modell der vorderen Anzeige, das proportional breiter gemacht werden müsste, also mit dem Faktor 240 / 200 = 1,2 skaliert werden muss. Das Mapping der Textfläche muss dann nur noch um 40 "Pixel" bzw. eigentlich 320 Pixel weiter nach rechts erweitert werden. Der Hintergrund der Anzeige besteht aus einer geloopten Textur, die ebenfalls um 320 Pixel nach rechts erweitert werden muss.
    Das sollte es dann schon gewesen sein. ^^

  • Moin,

    also ich hab jetzt nochmal von vorne angefangen xD Und ich nutze jetzt wieder deine Matrix. Und ich bin grad bei dem Skriptteil mit den PrintBitmapPixel. Wie du ja schon gesagt hattest müssen die Zahlen 5, 8, 11 und 12 sein. Und diese Zahlen zum Quadrat müssen dann hier eingesetzt werden? Matrix_PrintBitmapPixelXX

    Also müsste ich doch dann das hier haben?

    Code
        {if}
    '        6432 (7680) Pixel
            (M.L.Matrix_PrintBitmapPixel144)
            (M.L.Matrix_PrintBitmapPixel121)
            (M.L.Matrix_PrintBitmapPixel64)
            (M.L.Matrix_PrintBitmapPixel25)

    Also, wenn ich das richtig verstanden habe.


    Nur ist das irgendwie in deinem originalen Skript nicht nach dem Muster gemacht. Oder ich verstehe hier grad irgendwas falsch xD

    Bei dir sieht das ja so aus:

    Code
        {if}
    '        5152 (6400) Pixel
            (M.L.Matrix_PrintBitmapPixel4096)
            (M.L.Matrix_PrintBitmapPixel1024)
            (M.L.Matrix_PrintBitmapPixel32)

    Und die Zahl 5152 sieht ja in binär so aus: 1010000100000

    Also haben wir da doch dann dementsprechend die Zahlen 5, 10, 12

    Aber die 4096, 1024 und 32 sind ja keine Quadratzahlen von diesen. Deswegen verstehe ich das gerade nicht so ganz...


    Oh, ich hab mich verlesen xD Nicht XX^2, sondern 2^XX xD

    Dann ergibt das Sinn


    Jetzt funktioniert alles super und der Text leuchtet auch wieder schön :)


    Vielen Dank!

    2 Mal editiert, zuletzt von Lenn () aus folgendem Grund: Ein Beitrag von Lenn mit diesem Beitrag zusammengefügt.

  • Schön, dass es funktioniert! Mir fällt nur gerade auf, dass ich bei meiner Erklärung etwas verwirrt habe. Gut, dass du aber selber so schlau warst und es trotzdem hinbekommen hast. :"D
    Ich habe immer von Matrix_PrintBitmapPixelXX gesprochen, aber da ich bei der Matrix aus dem Solaris die Makros wohl alle umbenannt habe in die jeweilige Anzahl der übertragenen Pixel und nicht mehr den Exponent für die Benennung genutzt habe, würde das gar nicht wie in dem Code meines Beitrages beschrieben funktionieren. Hab da ausversehen mit einem anderen Skript erklärt, wo ich das nicht getan hatte. Aber da hat ja dann evtl. die lange Erklärung doch beim Verständnis geholfen.
    Ich hoffe, du hast jetzt nicht allzu lange rumgerätselt, sorry. :covereyes: