Beschriftungen und Beklebungen - Flimmern verhindern

Das Forum befindet sich im reduzierten Betrieb. Die Addon- und Supportforen bleiben weiterhin verfügbar.
Bitte beachte, dass OMSI nicht mehr weiterentwickelt wird. Ein Teil der Entwickler widmet sich inzwischen der Entwicklung eines neuen Simulators. Weitere Informationen zum LOTUS-Simulator findest Du hier.
  • Hallo,


    ich habe mich jetzt auch mal wieder mit dem Objektbau beschäftigt und bin inzwischen beim ersten Test meines Objekts (Haltestellenschild) in OMSI angelangt.
    Das Schild hat natürlich einige Beschriftungen, außerdem gibt es ein paar Aufkleber (davon einer optional per Variable und in einer separaten o3d). Um Platz auf der Textur zu sparen, habe ich die Aufkleber auf einzelne Polygone gemappt, die in derselben Ebene wie die Grundfläche liegen, jedoch kleiner sind (so groß wie die Aufkleber bzw. Beschriftung eben sein soll). Nun flimmert das ganze in OMSI natürlich genau so wie in Blender.


    Wie kann ich das unterbinden? Ich habe hier schon ein wenig gelesen, bin aber nicht sicher, ob ich es richtig verstanden habe und möchte mir die Arbeit mit dem erneuten Mapping, damit die Aufkleber auch die richtige Größe und Position haben, nicht unnötig machen. So wie ich es verstanden habe, müsste ich folgendes machen:


    1. Für jeden Aufkleber und jede Beschriftung die Fläche auf ein exaktes Duplikat der Grundfläche mappen. Sind auf einer Grundfläche also 3 Aufkleber und eine Beschriftung, dann muss ich die Fläche viermal duplizieren.
    2. Mapping so über die UV-Area hinaus skalieren und verschieben, dass der Aufkleber bzw. die Beschriftung die richtige Größe und Position hat. Für Beschriftungen müsste ich mir dazu noch eine Dummytextur mit einer Beschriftung erstellen, statt der 1x1-Pixel-Textur, die ich bisher verwendet habe.


    Nun bin ich nicht ganz sicher:
    3. Für alle Aufkleber/Beschriftungen, die auf derselben Grundfläche liegen sollen, muss ich ein eigenes Objekt machen, das in eine eigene o3d exportiert wird? Kann ich eigentlich Aufkleber, die auf unterschiedlichen Grundflächen liegen (z.B. auf der jeweils anderen Seite des Schilds), in eine o3d packen?
    4. Alle Beschriftungen/Aufkleber müssen unter dem Hauptmesh eingetragen werden. Wenn eine Beschriftung wiederum AUF einem Aufkleber liegen soll, muss deren Mesh in der sco-Datei UNTER dem Mesh des Aufklebers eingetragen werden.



    Dann hätte ich noch zwei Fragen zu Beschriftungen mit Texttexturen:
    a) Ist deren Auflösung (in der sco) frei wählbar oder vergrößert OMSI die Werte auf 2er-Potenzen?
    b) Was hat es mit dieser Verschiebegeschichte beim Kennzeichen im Fahrzeug-SDK auf sich? Ich kann einfach nicht nachvollziehen, warum das nötig ist und ob ich in Blender die Textur nun tiefer mappen muss oder höher. In meiner Flimmerversion passen die Texttexturen exakt ohne Verschiebung.

  • Gegen das Geflimmer einfach unter dem [matl_alpha] Eintrag [matl_noZwrite] drunter setzen.


    3: Textfelder kannst du beliebig viele gemischt mit normalen Mesh in eine o3d packen. (den per Variale ausblendbaren Aufkleber mal außen vor) Es darf allerdings nur pro Mesh ein Material/Textur drauf sein.
    Wichtig dabei ist, dass nachher in der model.cfg der Texturname jedes einzelnen Textfeldes auftaucht. (Also unter [matl])


    4: erledigt sich mit Punkt 3


    a) Man kann über den [texttexture] die Texttexture beliebig skalieren. Oder meinst du was Omsi intern damit anstellt?
    b) Wenns passt musst du eig nichts mehr in der Hinsicht tun.

  • Das hat nicht ganz den erwünschten Effekt gebracht:


    Links unten scheinen die Rückseiten des Rahmens durch, rechts sieht man nur die abgewandte Seite, die Aufkleber (hier z.B. VRR-Logo) haben dazu optisch einen deutlichen Abstand.


    Der Teil mit den Schrauben, der IM Rahmen steckt, scheint durch. Die Texttextur flimmert hier immer noch, weil ich beim Bild das [matl_noZwrite] vergessen hatte. Füge ich es hinzu, dann ist sie gar nicht mehr zu sehen.


    Muss ich die Textfelder und Aufkleber doch in eigene Objekte auslagern, damit ich beim Rahmen-Objekt als Träger des ganzen auf [matl_noZwrite] verzichten kann?
    Wobei ich gerade das [matl_noZwrite] beim Rahmen-Objekt entfernt habe und das separate o3d für den optionalen Aufkleber flimmert immer noch...

  • Hallo ACMG,


    insgesamt gibt es zwei Möglichkeiten, dieses flimmern zu unterdrücken. Ich kenne nur eine, die andere Variante kennt Chrizzly92.


    Mein Variante:
    Hier arbeitet man so wie Marcel es für das Kennzeichen gemacht hat.
    1. Jedes Schriftfeld, bekommt eine eigene o3d-Datei. Sollen zwei gegenüberliegende Textfelder das gleiche anzeigen, dann können diese zusammengesetzt werden.
    2. Jedes Textfeld bekommt als Textur die Kennzeichen.bmp oder die der Wagennummer. Dabei wird die Textur genau einmal komplett auf das Mesh gezogen.
    3. Das Mesh sollte dann etwa 1 mm vor dem Grundmesh sein. Somit wird das flimmern verhindert. Das flimmert tritt auch auf, wenn beide Mesh's den selben Objektursprung haben und deckungsgleich sind.



    Hier habe ich das Kennzeichen, zweimal untereinander auf zwei Mesh gesetzt. Diese liegen 1 mm über dem Kennzeichenblech. Man kann eine Textur auch kacheln:


    So wie Marcel es gemacht hat. Ist aber unnötig. Man kann auch die Textur sauber auf das geanze Mesh draufziehen. Das sich dabei die Kennzeichenschrift verzieht ist egal, diese sieht man später ohnehin nicht.
    Auf meinem Bild siehst du also 5 Objekte, den Bus, die Heckklappe, das Kennzeichenblech, das obere Kennzeichentextfeld und das untere Kennzeichentextfeld.


    a) Man kann über den [texttexture] die Texttexture beliebig skalieren.


    Das ist wichtig, für dich. Wie die Grundtextur auf dem Mesh aussieht ist absolut egal. Ziehe ruhig die ganze Kennzeichentextur komplett drauf. also die 128x128 Pixel auf ein Mesh das 20 Zentimeter hoch ist, und 1 Meter breit. In der model.cfg stellst du dann die Schrift ohnehin ein
    [texttexture]
    Befehl der Schrift- oder Bildanzeige,
    Font
    Anzahl der Pixel in der Breite
    Anzahl der Pixel in der Höhe
    Untergrundfarbe vom Font oder eigene Farbauswahl
    Farbwert Rot
    Farbwert Grün
    Farbwert Blau


    Bei Anzahl der Pixel stellst du ein, wieviele Pixel ein komplettes Schriftfeld hat. Hier werden nicht die 128x128 Pixel eingetragen.
    Wenn im Font jeder Buchstabe 10 Pixel breit ist, und zwischen den Buchstaben 2 Pixel sind, dann brauchst du für die Haltestelle: Mainz, Hauptbahnhof
    18 Buchstaben (inklusive Komma) + 1 Leerfeld = 19 Schriftteile = 190 Pixel
    + 18 Zwischenräume mit 2 Pixel = 36 Pixel
    = 226 Pixel


    Dein Schriftfeld sollte also mehr als 226 Pixel in der Breite haben.


    -------------------------------------------------------------------------------


    Es darf allerdings nur pro Mesh ein Material/Textur drauf sein.


    Du kannst ein Polygon immer nur mit einer Textur mappen. Du kannst außerdem mehrere Polygonflächen (Faces) in einer o3d-Datei, also als ein Objekt zusammenfassen. Dabei mußt du aber jedem einzelnen Schriftfeld ein Material zuweisen. Wie du in Blender mit mehreren Materialebenen arbeitest, kann dir Chrizzly oder Perotinus besser erklären.


    Hier sieht man das Panel des MAN ÜL 242. Jede einzelne Kontrollleuchte kann ein o3d-Objekt werden. Perotinus hat aber diese Kontrollleuchten in das Panel zusammen als ein einziges o3d-Objekt convertiert.
    Dafür arbeitet er mit mehreren Texturebenen:
    In der model.cfg steht dann nur das Panel.o3d drin, gefolgt von 19 Texturebenen. Das Panel ist die Ebene 0, die erste Kontrollleuchte ist dann
    [matl]
    panel.tga
    2


    die Kontrolleuchte für das Vorglühen ist hier:
    [matl]
    panel.tga
    19


    So kannst du alles als ein o3d-Objekt auslassen, sofern du nicht's mit einem visible-Befehl ausblenden möchtest. Was mit einem visible-Befehl ausgerüstet wird, bleibt ein seperates o3d-Objekt. Umgesetzt auf Textfelder bedeutet das:
    Jede einzelne Texturebene wird nun mit einem einzelnen Texttexturfeld in der model.cfg ausgerüstet. Für die Eintragungen in der model.cfg sieht das dann wie folgt aus:
    [mesh]
    Haltestellenschild.o3d


    [matl]
    H-Textur.bmp
    0


    [matl]
    Kennz.bmp
    1


    [useTextTexture]
    0


    [matl_alpha]
    2


    [matl]
    Kennz.bmp
    2


    [useTextTexture]
    1


    [matl_alpha]
    2


    und so weiter.

  • Hallo Tatra,


    zuerst schon einmal danke für deine Ausführungen!

    1. Jedes Schriftfeld, bekommt eine eigene o3d-Datei. Sollen zwei gegenüberliegende Textfelder das gleiche anzeigen, dann können diese zusammengesetzt werden.
    2. Jedes Textfeld bekommt als Textur die Kennzeichen.bmp oder die der Wagennummer. Dabei wird die Textur genau einmal komplett auf das Mesh gezogen.
    3. Das Mesh sollte dann etwa 1 mm vor dem Grundmesh sein. Somit wird das flimmern verhindert. Das flimmert tritt auch auf, wenn beide Mesh's den selben Objektursprung haben und deckungsgleich sind.


    Muss ich die Textfelder unbedingt in eigene o3d-Dateien auslagern? Ich weise den Flächen ja ein anderes Material zu und die Position wäre dann auch eindeutig vor dem Hintergrundmesh.


    Man kann eine Textur auch kacheln:
    [Bild]
    So wie Marcel es gemacht hat. Ist aber unnötig. Man kann auch die Textur sauber auf das geanze Mesh draufziehen. Das sich dabei die Kennzeichenschrift verzieht ist egal, diese sieht man später ohnehin nicht.
    Auf meinem Bild siehst du also 5 Objekte, den Bus, die Heckklappe, das Kennzeichenblech, das obere Kennzeichentextfeld und das untere Kennzeichentextfeld.


    Also hatte es keinen speziellen Grund, dass Marcel die Textur auf dem Bild über den kompletten unteren Bereich gezogen hat? Was passiert denn, wenn du beide Kennzeichentextfelder bei dir in ein Mesh packst? Das sollte ja kein Flimmern verursachen, wenn die nicht überlappen.


    Der texttexture-Eintrag war mir schon klar, passt ja bei mir auch prinzipiell schon.


    Du kannst ein Polygon immer nur mit einer Textur mappen. Du kannst außerdem mehrere Polygonflächen (Faces) in einer o3d-Datei, also als ein Objekt zusammenfassen. Dabei mußt du aber jedem einzelnen Schriftfeld ein Material zuweisen. Wie du in Blender mit mehreren Materialebenen arbeitest, kann dir Chrizzly oder Perotinus besser erklären.


    Okay, das hab ich ja bereits gemacht. Das Ding ist in Blender ein Objekt mit drei Materials (die normale Textur und zwei weitere für die Textfelder).



    Das sind aber die Submeshes, auf die mit der Nummer unter dem Texturnamen zugegriffen wird. Es wird ja immer dasselbe Material verwendet (panel.tga). Jetzt kann ich nur vermuten, dass man das erreicht, indem man mehrere Objekte in Blender hat, die man gemeinsam in eine o3d exportiert? Das wäre natürlich noch eine Frage, ob das Flimmern damit beeinflussbar ist. Bei mir ist wie gesagt derzeit alles in einem Blender-Objekt bis auf einen Aufkleber.


    Umgesetzt auf Textfelder bedeutet das:
    Jede einzelne Texturebene wird nun mit einem einzelnen Texttexturfeld in der model.cfg ausgerüstet. Für die Eintragungen in der model.cfg sieht das dann wie folgt aus:


    Okay, dadurch spare ich ein Material in Blender, bzw. eine Textur, die ja ohnehin durch die Texttextur ersetzt wird.


    insgesamt gibt es zwei Möglichkeiten, dieses flimmern zu unterdrücken. Ich kenne nur eine, die andere Variante kennt Chrizzly92.


    Jetzt würde mich natürlich noch die zweite Variante interessieren.

    :)


    Wenn ich dabei die Aufkleber auf eine Fläche mappen muss, die der Grundfläche entspricht, dann wäre das aber für mich bei den Aufklebern nicht nutzbar. Die habe ich ja extra auf kleinere Flächen gemappt, um mehr Details bei nur einer Texturdatei zu haben, ohne die Textur insgesamt aufzublasen.

  • So, ich klinke mich hier mal ein, und versuche es an einem Beispiel zu erklären:


    Das Hauptmesh des Schildes würde ich aus Modellsicht direkt so aufteilen, wie du es möchtest. Auch die Aufkleber sollten schon in das Mesh hineingearbeitet sein, auch wenn du diese über ein zweites Objekt einblenden möchtest.
    Im folgenden Beispiel möchte ich das "H" als Objekt einblenden lassen sowie 3 textfelder nutzen.



    auf o.g. bild erkennt man gut, wie ich das ganze aufteile. oben das (ausblendbare) "H", unten die Textfelder.
    Um flimmern zu vermeiden, und da muss ich Tatra widersprechen, reicht es zu, die Polygone deckungsgleich zu exportieren. Dabei ist es wichtig, dass der Objektursprung der selbe bleibt. Allerdings muss man hier aufpassen: verschiebt man auch nur einen punkt des Polygons, geht die Deckungsgleichheit flöten (auch wenns so gering ist, dass man es nicht erkennt) und die objekte fangen an zu flimmern.


    Ich selektiere also jedes betroffene Polygon, dupliziere es mit "Shift +D" und drücke direkt "Escape", um eventuelle Transformationen rückgängig zu machen. nun liegen 2 Polygone genau übereinander. Dannach drückt man "P" und trennt das ganze per "selection":



    nun habe ich das Haltestellenschild und den Aufkleber getrennt. diese kann ich auch unabhängig voneinander mappen, wichtig ist nur, dass ich die Objekte sowohl im editmode als auch im Objektmode nicht mehr verschiebe.


    Das gleiche mache ich nun mit den Textfeldern:




    Es ist nicht notwendig, das Haltestellenschild in seinen einzelteilen zu exportieren. jedeglich die Dinge, die du via visiblevariablen steuern möchtest, musst du einzeln exportieren.


    im folgenden Schritt weist du jedem Textfeld ein anderes Material zu, welches die selbe Textur nutzen kann. durch die Materialkanäle kannst du dann in der model.cfg jedes Mesh einzeln mit [matl] aufrufen, jedeglich der index ändert sich.



    Dannach mapst du deine Textfelder auf die Dummytextur und exportierst ALLE textfelder gemeinsam mit deinem Haltestellenschild. dafür selektierst du alle benötigten objekte im Objectmode und exportierst sie mit folgenden Einstellungen:



    In der entstandenen *.x Datei kannst du jetzt deine einzelnen Materialien begutachten - über diese steuerst du dann letztendlich jedes textfeld an.


    zu guterletzt schmeisst du das ganze durch den exporter und exportierst deine *.x in eine o3d, OHNE die objekte aufzusplitten.


    In der model.cfg lädst du jetzt dein Mesh und kannst über


    [matl]
    textfeld.tga
    0


    .
    .
    .


    [matl]
    textfeld.tga
    5


    jedes einzelne Textfeld ansteuern.



    Soviel zur Vorgehensweise, die Ich nutzen würde. ein einfaches verschieben der Meshes reicht prinzipiell auch, das sieht aber blöd aus und führt aus größeren Entfernungen genaus zu flimmereffekten. Eventuell musst du die Textfelder alle gemeinsam allein exportieren, sofern das schild hinter den textfeldern durchsichtig wird. dort entscheidet dann die Exportreihenfolge aus blender, was vorher gerendert wird. alternativ kannst du deine namensgebung dahingehend abändern, dass mit steigendem Index Objekte später gerendert werden.
    Ein gutes Beispiel bieten hier Scheiben: diese haben mehrere Texturen - Glas, Dreck, Beklebung und Regen. Da Ja die beklebung nicht über dem Regen gerendert werden soll, ergeben sich folgende reihenfolgen:
    Scheibe_00_Glas
    Scheibe_01_Beklebung
    Scheibe_02_Dreck
    Scheibe_03_Regen


    Du kannst dein Schild, sofern du die textfelder nicht getrennt exportieren willst, beispielsweise folgendermaßen benennen:


    Schild_00_traeger
    Schild_01_Visible1
    Schild_02_Visible2
    Schild_03_Textfeld1
    Schild_xx_Textfeldxx
    .
    .
    .



    Nun zu deinen Fragen:


    Die Textfelder müssen nicht in eine eigene Datei, sie müssen aber in Blender als einzelnes Objekt vorliegen. (Ob hier ein Material reicht, weiß ich nicht. )


    EIn Mappen der Textfelder um eine Texturgröße tiefer ist - sofern ich weiß - ein relikt aus OMSI 1 - ich mappe alle meine Textfelder auf texturhöhe und es kommt zu keinen Problemen. eventuell ist hier aber auch die konfiguration entscheidend - beispielsweise beim clamping von textfeldern.


    Es gibt für solche sachen nur 2 sinnvolle Lösungen: das Anpassen der Textur auf das Mesh oder das Anpassen des Meshes auf die Textur. Wenn du eine saubere, komplett flimmerfreie optik willst, musst du all deine Aufkleber, die du polyseitig hinzufügen willst, in das Hauptmesh einarbeiten, diese faces dann duplizieren und in ein eigenes Objekt packen. Alternativ kannst du auch die Textur vergrößern und dann passend mappen. Die Harz4 Lösung funktioniert allerdings auch - das verschieben der Textfelder weg vom Korpus des schildes - allerdings muss dies weit genug verschoben werden, damit es auch von weiten nicht flimmert und das führt dazu, dass man aus der nähe den Spalt erkennen kann.



    EDIT:

    Zitat

    a) Man kann über den [texttexture] die Texttexture beliebig skalieren.


    Das würde ich tunlichst unterlassen. Umso größer die Texttexture, desto performancelastiger wird diese. es reicht absolut zu, die texttexture so groß zu wählen, wie der Font hoch ist. Ein LED- Punkt meiner Fonts ist beispielsweise 8 pixel groß, bei einer zeilenhöhe von 8 pixeln reicht es also, die Texttexture auf 64 pixel zu begrenzen. je nachdem, wie viele zeichen das Textfeld anzeigen soll, wählt man dann die nächst größere ² Zahl. Kann meine Anzeige beispielsweise 128 punkte in der Länge anzeigen, ergibt sich daraus 128x8 (da ja jeder punkt im font 8 pixel nutzt) , was 1024 pixel entspricht - der optimale texttextureeintrag wäre also 64 und 1024. habe ich eine größere Zeilenlänge, erweitere ich den Font auf 64x2048.


    Probierts doch einfach mal aus und gebt einer Texttexture eine Fontgröße von 2048x2048. bei jedem Refresh der Textttextur hängt OMSI gefühlt eine sekunde.

    3 Mal editiert, zuletzt von Chrizzly92 ()

  • Um flimmern zu vermeiden, und da muss ich Tatra widersprechen, reicht es zu, die Polygone deckungsgleich zu exportieren.


    Du widersprichst mir doch nicht.

    Zitat von Marcel aus dem Omsi Wiki

    Um das Fahrzeug mit individuellen Nummern und Kennzeichen zu versehen, sind nun zwei weitere Arbeitsschritte nötig: Die Erstellung zweier zusätzlicher Objekte, auf denen in OMSI dann die Beschriftung angebracht wird.


    Da die Beschriftung exakt in der Ebene des Wagenkastens liegen muss (um später vom Dreck teilweise verdeckt werden zu können), sind im Blender-Objekt des Wagenkastens diejenigen Flächen zu selektieren, auf denen später die Beschriftung angebracht werden soll, mit [Shift] + [D] zu duplizieren und mit [P] als separates Objekt abzuspalten:


    Ich arbeite nicht mit Blender, sondern mit zModeler. Und obwohl der Koordinatenursprung des Wagenkasten's mit dem Objektursprung der Kennzeichenfelder übereinstimmt (sonst wären die Kennzeichenfelder inOmsi verschoben), Muß man das ganze etwas vorsetzen, da es sonst flimmert.


    Zitat von Marcel

    Um Fehler bei der Darstellung (z. B. Flimmern) in OMSI zu vermeiden, ist es zwingend erforderlich, dass Wagenkasten und Beschriftungsobjekt in Blender denselben Objektursprung (rosa Punkt) haben!


    Ich habe solche Sache nicht in Omsi 1 gemacht, sondern bisher immer nur in Omsi 2. Sowie ich ein Objekt dupliziere, mappe und dann exportiere, fängt es an zu flimmern. Das könnte auch daran liegen, dass ich im zModeler nicht weiß wie man mit mehreren Materialkanälen arbeitet.
    Der Unterschied, Chrizzly, ist das du mit mehreren Materialkanälen arbeiten kannst. Das würde beim Bus bedeuten, dass die Kennzeichenfelder mit dem Kennzeichenblech ein Objekt bilden. Also 3 Objekte in Blender ergeben eine o3d-Datei in Omsi. Ich weiß aber nicht, wie ich das in zModeler hinbekomme. Darum sind es bei mir einzelne o3d-Objekte.


    Kein Widerspruch:
    Ich schrieb ja das es zwei Möglichkeiten gibt. Entweder er setzt mehrere o3d-Objekte ein, die in der model.cfg einzeln aufgerufen werden, oder er macht es so wie Du, Perotinus und viele andere, indem man mehrere Materialebenen einsetzt. Befinden sich zwei Mesh-Objekte deckungsgleich in Omsi, dann flimmert es. Zusammengesetzt zu einem Mesh-Objekt flimmert es nichtmehr.


    Muss ich die Textfelder unbedingt in eigene o3d-Dateien auslagern?


    Nein, wenn du in Blender mit den Materialebenen arbeiten kannst, ist es unsinnig. Es ist eine der Möglichkeiten, aber sicher nicht die beste. Da Chrizzly hier aber ein sehr genaues Tutorial ausgearbeitet hat, solltest du diese Variante von Chrizzly bevorzugen. Bekommst du es nicht hin, dann kannst du nochmal nachfragen oder auf meine Variante umschwenken.


    Was passiert denn, wenn du beide Kennzeichentextfelder bei dir in ein Mesh packst? Das sollte ja kein Flimmern verursachen, wenn die nicht überlappen.


    Richtig, solange die sich bei mir nicht überlappen, flimmert nichts, da dort 1 mm Abstand ist. Allerdings kann ich die Textfelder nicht in einem Mesh zusammenpacken, weil ich nicht mit Materialebenen arbeiten kann. Das ich zwei Texturfelder am hinteren Kennzeichen habe, liegt an Deinem Script. Du hattest es mir ja damals erstellt und damit funktioniert es auch problemlos.


    (Ob hier ein Material reicht, weiß ich nicht. )


    Man kann ein Objekt mit einer Textur mappen oder mit mehreren. Aber jede Texturebene benötigt, meines Wissens nach, jeweils die Texturzuweisung. Egal ob es nun ein und dieselbe Textur oder mehrere Texturen.



    Die anderen Fragen wurde ja von Chrizzly vollständig beantwortet.

  • Zitat von Tatra


    Das flimmert tritt auch auf, wenn beide Mesh's den selben Objektursprung haben und deckungsgleich sind.


    :P


    Das Flimmern tritt auch im Zmodeller nicht auf. entscheidend ist, dass du eben nicht ein kleines face "auf" ein großes legst; sondern die beiden Meshes müssen 100% identisch sein.



    Das würde Beispielsweise nicht flimmerfrei funktionieren, auch wenn die y achse und der objektursprung der selbe sind. die vertices der Faces müssen 1:1 übereinstimmen; dann flimmert auch nix.
    die scheiben in meinen Fahrzeugen bestehen aus 8 einzelobjekten und da flimmert auch nix - obwohl diese genau übereinanderliegen. verändere ich aber nur eine ebene, flimmert eben auch diese.




    Zitat von Tatra

    Man kann ein Objekt mit einer Textur mappen oder mit mehreren. Aber jede Texturebene benötigt, meines Wissens nach, jeweils die Texturzuweisung. Egal ob es nun ein und dieselbe Textur oder mehrere Texturen.


    Es ging mir nicht um mehrere Texturen, sondern ich weiß nicht, ob es reicht, einem! Objekt mehrere Materialen zuzuweisen und diese dann via die model.cfg zu steuern oder ob es notwendig ist, diese als einzelnes objekt zu haben. Also quasi 3 Textfelder in ein Objekt mit 3 Materialen. Auf nummer sicher geht man aber, wenn man die kanäle trennt und in eine o3d exportiert.

  • Das Flimmern tritt auch im Zmodeller nicht auf. entscheidend ist, dass du eben nicht ein kleines face "auf" ein großes legst; sondern die beiden Meshes müssen 100% identisch sein.


    Achso, die Vertices müßen auch da bleiben wo diese sind. Das werde ich demnächst mal an den Kennzeichen austesten.

  • das ist ja auch der Grund, warum ich im o.g. Beispiel das "H" der Haltestelle mit polygonen ausmodelliert habe - so kann ich den Kreis quasi duplizieren und die meshes liegen genau übereinander-> kein Flimmern.

  • So, ich war hier länger nicht eingeloggt, aber habe eure Beiträge natürlich gelesen und währenddessen ausprobiert.


    Fazit: Die Methode von Chrizzly ist tatsächlich die beste. Zwar musste ich etwas mehr Arbeit reinstecken, um die Flächen zu unterteilen und neu zu mappen, aber es hat sich gelohnt - kein Flimmern mehr:


    Was allerdings Probleme verursachen kann sind mehrere übereinander liegende Textfelder (in meinem Fall für verschiedene Schriftgrößen). Nicht wegen des Flimmerns, sondern wegen des Schattenwurfs. Die Fläche der Texttextur erscheint dann nämlich schattiert. Der Effekt ist auch bei Coopers Berliner Haltestellenmodulen zu beobachten, ich hatte mich darüber bereits gewundert und denke, dass dies auch in seinem Fall ursächlich ist.
    Mein Lösungsweg:
    Maximal eine der Flächen für die Text-Texturen darf im Trägermesh sein (welches den Schatten wirft), die anderen müssen in eine separate o3d-Datei ausgelagert werden. Bei dieser sollte natürlich kein Schattenwurf (also kein "[shadow]" in der Model-CFG) eingestellt werden!


    Die Abstandsmethode ist besonders problematisch, wenn es sich um eine große Fläche bzw. Schrift handelt, die auch von weitem sichtbar ist (in meinem Fall der Haltestellenname). Der Abstand zwischen Grundfläche und Textfläche muss nämlich dann umso größer gewählt werden, denn 1 mm reicht nicht mehr aus, weil es aus größerer Entfernung wieder flimmert.


    Danke an alle Beteiligten für Diskussion und Lösungsvorschläge!

  • sobald ich ein weiteres Fahrzeug starte, werde ich das ganze wie ein Tutorial auffahren - eventuell kann man so die Modellbau"richtlinien" etwas besser vermitteln.

    ;)

    Gerade Scheiben und Textfelder scheinen für viele problematisch zu sein. Cooper hat ja letztens schon nen recht gutes Tutorial zum Baking veröffentlicht - eventuell kann man sowas als Sticky mal anheften?
    Unabhängig davon freut es mich, dass ich helfen konnte.

    ;)
  • Wäre sicherlich eine gute Sache, ich glaube das Thema wird immer wieder mal aufkommen.


    Ich vergaß übrigens zu erwähnen, dass ich zuerst die Flächen unterteilt und die Vertex-Koordinaten der Aufkleber- und Textfeldflächen kopiert hatte. Obwohl sie in Blender exakt übereinstimmten, hat es in OMSI immer noch geflimmert. Geholfen hat wirklich nur das erneute Duplizieren der Flächen aus dem Trägermesh. Was hingegen gut funktionierte war das Verschieben um ein Delta (also G, Z, Wert, Enter) im Edit Mode, um die Textfelder an die unterschiedlichen Schildrahmenhöhen anzupassen.