Signalbau ohne Coronas

  • Hallo Zusammen,


    ich habe eine Verkehrsampel in Arbeit, die bisher recht gut mit Coronas arbeitet.
    Diese möchte ich nun auf Mesh-Signalbild umstellen.
    Hierzu habe ich eine Plane in Koordinate 0/0/0 hochkant aufgestellt
    und mit einer entsprechenden Textur versehen. Das Ganze habe ich dann als "gruen.IM"
    abgespeichert und das Script von "SetFXCorona" auf "SetMeshVisible" umgestellt.


    Bin ich bis hierher überhaupt richtig?
    Von dem entsprechenden Mesh ist nämlich um´s verrecken nichts zu sehen... :frowning_face:



    Wer kann mir weiterhelfen oder hat ein Beispiel für mich ?

  • Hallo,


    dazu wäre günstig, config.txt und Skript anzusehen.

  • Tatsächlich? Hmm, soviel zum Thema Logik... :winking_face:


    Danke, ich versuche es mal.




    Edit:


    Hat nichts gebracht...


    Bevor ich jetzt das Script poste einfach nochmal die Frage,
    ob es ausreichend ist von "SetFXCoronaTexture" auf "SetMeshVisible" umzustellen,
    oder ob da generell noch andere Routinen für nötig sind, um den Mesh anzeigen zu lassen ?

    Einmal editiert, zuletzt von Mueller ()

    • Offizieller Beitrag

    Bevor Du die Planes mit einem Script ansteuern möchtest, solltest Du das Mesh einmal ohne Script als Trainz Asset ausprobieren, um zu sehen, ob die Planes überhaupt richtig an die Helper attached werden.
    Wenn sie dort nicht korrekt angezeigt werden, kann es an der MeshTable Deiner Config.txt liegen.


    Erst wenn das richtig läuft, würde ich mich an das Script machen.


    SetMeshVisible ("MeshNameausderMeshTableinderConfig ",true,0.1); wäre richtig - aber wie Partyman schon sagte: ohne Script und Config kann man nur schlecht helfen.


    cheers
    Christian

  • Danke für den Tip Christian,


    da scheint der Hund begraben zu liegen. Ich checke die config nochmal gründlich durch.



    Noch eine Grundsatzfrage:


    MUSS die Mesh, die ich einblenden will, eine eigene KUID besitzen?






    [at]Auch hier die Bitte, die Editierfunktion zu nutzen. Einträge zusammengefügt. ;)[/at]

    Einmal editiert, zuletzt von Mueller ()

  • Zitat

    Bumblebee schrieb:
    Noch eine Grundsatzfrage:


    MUSS die Mesh, die ich einblenden will, eine eigene KUID besitzen?


    Klare Antwort: Nein :winking_face:

  • Zitat

    Partyman79 schrieb:


    Klare Antwort: Nein :winking_face:


    Beides ist möglich.


    Als mesh (ohne KUID) müssen die Lichter bei jedem einzelnen Signal enthalten sein
    Im config als mesh in der mesh-table.


    Als mesh-asset (mit KUID) brauchen die Lichter nur einmal in Trainz installiert sein und werden vom Script der Signale jeweils eingebunden.
    Im config unter effects


    Beachte die unterschiedliche Ansteuerung im Script:


    mesh:
    SetMeshVisible (string meshName, bool visible, float fadeDuration)


    effect:
    SetFXAttachment (string effectName, Asset asset)
    wobei asset mit namen und KUID in der kuid-table des config aufgeführt werden muß, z. B.

    Code
    kuid-table {
    	rotlicht						<kuid:XXXX:XXXX>
    }


    Wenn statt "asset" "null" eingesetzt wird, wird der effect ausgeblendet (unsichtbar).
    Nicht vergessen, das Mesh-Asset im Script zu deklarieren, z. B. "Asset rotlicht;"

    Einmal editiert, zuletzt von josefpav ()

  • Wird das Mesh als Attachment angehängt, besteht der Nachteil, dass kein Ein-/Ausblenden möglich ist.


    Ich persönlich sehe daher das Mesh direkt im Asset als vorteilhafter an, weil normale Glübirnen der Realität auch einen gewissen Einblendeffekt haben, den man z.B. mit der Einblendzeit von 0,1 Sekunden vernünftig nachbilden kann.


    Soll hingegen eine Anlage mit Leds nachgebildet werden, sehe ich beide Lösungen geeignet an.

  • Vielen Dank für die umfangreichen Antworten. :good:


    Die Configeinträge sehen bei mir so aus:


    mesh-table {
    default {
    mesh "Einfache_Stehampel.im"
    auto-create 1
    effects {

    gruen1 {
    meshname "gruen1.im"
    att "a.gruen1"
    att-parent "default"
    auto-create 1
    }
    gelb1 {
    meshname "gelb1.im"
    att "a.signal05"
    tatt-parent "default"
    auto-create 1
    }
    rot1 {
    meshname "rot1.im"
    att "a.signal06"
    att-parent "default"
    auto-create 1
    }

    }
    }
    }


    Und im Script wird so angesteuert:


    if (phase == 1) {
    for (n = 1; n <= lightcount; n++) {
    SetMeshVisible("rot1", false, 0.0);
    SetMeshVisible("gelb1", false, 0.0);
    SetMeshVisible("gruen1", false, 0.0);
    if (mainlights == 1 or n == 2) SetMeshVisible("gruen1", true, 0.0);
    }

  • @Christian


    Ist att-parent "default" wirklich redundant? Bin mir da nicht sicher. Möglicherweise wird beim fehlendem Eintrag tatsächlich das default-mesh als attachment-parent angenommen.



    @bumblebee


    grundsätzlich wird deine Kombination config/script nicht funktionieren. Du musst dich schon entscheiden, ob du deine Lichter als "attached mesh" oder als "effect" aufsetzen willst. (nicht zuletzt wegen der Behandlung im Script, wie ich bei meinem vorherigen Post dargelegt habe).



    config für Lichter als attached-meshes. In diesem Falle ist die Methode SetMeshVisible zur Ansteuerung der Lichter die richtige. Sorge bitte dafür, dass die Ampel entsprechend initialisiert wird (Init-Methode).

  • Hallo Josef,


    also das hat mich jetzt aber durcheinander gebracht.


    Wenn ich mit der Funktion "SetMeshVisible" arbeiten möchte, dann lege ich die Meshes dem Modell bei, richtig? Und dann muss die Config so geschrieben sein wie oben, wenn ich es richtig verstehe?


    Wo liegt denn nun mein Fehler ?


  • Indem du deine Meshes noch zusätzlich in den "effects" -Container gesteckt hast.


    Übrigens, Christian hat recht, "mesh" statt "meshname" verwenden. Habe ich vorher nicht gemerkt.

  • Super, Josef! :good: :good: :good:
    Herzlichen Dank, auch an Christian und Partyman,
    JETZT FUNKTIONIERT ES! :clap:


    Nun kann ich an´s Feintuning gehen. :)



    Tante Edit:


    Da ist mir jetzt aufgefallen, daß die "Lichtmeshes" im Dunkeln ja auch abdunkeln...
    Reicht es, die Texturen mit "Selfillumination" zu versehen, oder sind da noch andere Maßnahmen zu tätigen ?


    Edit 2:
    Ich bin über ein hervorragendes Tutorial zur Selfillumination von Klapec gestoßen,
    es hat alle meine Fragen dazu beantwortet und die Lichter leuchten nun auch um Dunkeln. :)

    Einmal editiert, zuletzt von Bumblebee ()