Posts by Benny (BH2)

    ssemoa , fehlt Dir vielleicht Bennys Codeschnipsel?

    Ich vermute eher, dass mein Codeschnipsel (bzw. dessen Nachfolger BetterContacts) im Einsatz ist, aber falsch verwendet wird.

    Meine einzige Erklärung für die geschilderten Symptome ist, dass mein Codeschnipsel/BetterContacts im Einsatz und im Kontaktpunkt meinZugname() eingetragen ist. Und das funktioniert nicht, siehe unten.


    Es gibt mehrere Varianten, was im Kontaktpunkt stehen kann:

    1. meinZugname (wie von Mover (HG3) erwähnt). Damit müsste es funktionieren, sowohl mit als auch ohne Codeschnipsel/BetterContacts.
    2. meinZugname() Das funktioniert in keinem Fall. Ohne Codeschnipsel/BetterContacts akzeptiert EEP diesen Eintrag gar nicht, mit Codeschnipsel/BetterContacts funktioniert zwar der Funktionsaufruf, aber es wird kein Zugname übergeben (sondern nichts, also nil).
    3. meinZugname(Zugname) (wie von hurricane65 erwähnt). Das müsste funktionieren, wenn mein Codeschnipsel/BetterContacts eingebunden ist. Andernfalls akzeptiert EEP diesen Eintrag nicht.

    Also: Es gibt drei Möglichkeiten. Die beiden "Extreme" funktionieren. Das "Mittelding" kann aber nicht funktionieren.


    Viele Grüße

    Benny

    Nachdem jetzt schon fast zwei Seiten mit allem möglichen gefüllt wurden, möchte ich nochmal auf das ursprüngliche Problem von Baden280 zurückkommen.

    Ich kenne das Problem natürlich nicht, habe aber trotz der ziemlich knappen Problembeschreibung eine Vermutung.

    Insbesondere dieser Satz ist verräterisch:

    Ausserdem schaltet das Signal die ganze Zeit verschiedene Signalbilder durch.

    Das klingt so, als würde die Fahrstraße dauernd neu (in verschiedenen Stellungen) geschaltet.

    Leider wurde bisher fast nur über die Funktion fw_random diskutiert, aber nicht darüber, wo bzw. wodurch die Funktion FS_909 aufgerufen wird.

    Ich vermute, die Funktion wird bei jedem Durchlauf der EEPMain, also fünfmal pro Sekunde aufgerufen.

    Solange keine Anmeldung vorliegt, passiert nichts.

    Sobald eine Anmeldung vorliegt, wird eine Fahrstraße geschaltet. Für Personenzüge wird die erste Fahrstraße gestellt, für Güterzüge zufällig entweder die zweite oder die dritte.

    Eine Fünftelsekunde später wird die Funktion erneut aufgerufen. Sofern die Anmeldung nicht zurückgesetzt wurde, wird wieder eine Fahrstraße geschaltet.

    Wenn sich ein Personenzug angemeldet hat, wird die erste Fahrstraße nochmal eingestellt - egal, dadurch ändert sich nichts.

    Wenn sich aber ein Güterzug angemeldet hat, wird wieder eine Fahrstraße ausgewürfelt. Und dieses Würfelergebnis kann sich vom vorherigen Würfelergebnis unterscheiden. Dann wird die Fahrstraße umgestellt. Und eine weitere Fünftelsekunde später vielleicht schon wieder. Und immer so weiter. Mit anderen Worten:

    Ausserdem schaltet das Signal die ganze Zeit verschiedene Signalbilder durch.


    Was kann man dagegen machen? Mir fallen zwei Möglichkeiten ein:

    • Die Anmeldung sofort zurücksetzen, nachdem die Fahrstraße geschaltet wurde. Dann wird sie nicht nochmal (potenziell anders) geschaltet. Das löschen der Anmeldung sollte in der Callback-Funktion EEPOnSignal_909 passieren.
    • Vor dem Fahrstraßenschalten prüfen, ob nicht schon eine andere Fahrstraße geschaltet ist. Oder mit anderen Worten: Die Fahrstraße nur dann schalten, wenn sie bisher in Stellung 1 (="Auflösen") ist. Diese Lösung hat Parry36 oben schon angesprochen.

    Und wie mir erst jetzt beim Schreiben auffällt, hat Parry36 die zweite Möglichkeit nicht nur angesprochen, sondern sogar schon "heimlich" in das Skript eingebaut. Das war mir beim ersten Lesen gar nicht aufgefallen, weil ich angenommen hatte, dass das nur eine schöner formatierte Version des ursprünglichen Skripts ist.


    Auch wenn ich nicht der erste mit dieser Lösung war, hilft das nochmal-darauf-hinweisen und die Erklärung der Hintergründe vielleicht trotzdem weiter.


    Viele Grüße

    Benny

    Ich vermute, diese "Verschlimmbesserung" ist ein Nebeneffekt der Einführung der Doppelpfeile bei den Gizmos. Anfangs gingen die Pfeile nur in jeweils eine Richtung (nach rechts, hinten und oben, aber nicht nach links, vorne und unten).

    Als Verbesserung wurden die "Pfeilmodelle" dann verdoppelt, wobei die andere (zusätzliche) Richtung dunkler gefärbt wurde.


    Vermutlich stand man dann vor dem Problem, dass bei den Rollis nun zwei Doppelpfeile (ein roter und ein gelber) ineinanderlagen. Um Geflackere zu verhindern, hat man den gelben (Doppel-)Pfeil eben entfernt. Das Ergebnis siehst du ja.


    Diese Info hilft dir natürlich nicht bei der Richtungserkennung, aber zumindest dürfte es deine Frage nach dem "Warum" beantworten. Falls es überhaupt stimmt, was ich geschrieben habe. Ich habe keine Einblicke in die Entwicklung von EEP, reime mir aber manche Dinge zusammen.


    Viele Grüße

    Benny

    In Tübingen gibt es ziemlich genau die gleiche Situation (nur das dein Gleis 11 dort Gleis 13 heißt).

    Dort hat Gleis 2 zwei Ausfahrsignale. Eins wie bei dir vor der Weiche, und eins für lange Züge weiter hinten. Bei der Ausfahrt wird immer nur eins der beiden Signale auf Fahrt gestellt, das andere zeigt dann Kennlicht.


    Viele Grüße

    Benny

    Hallo, das liegt eindeutig an dem Codeschnipsel von Benny (BH2).
    Wer den Schnipsel benutzt, der muss die Variable Zugname abfragen.

    Das stimmt so nicht ganz.

    Der KP-Eintrag parkPlatz übergibt immer den Zugnamen an die Funktion, egal ob mit meinem Codeschnipsel/BetterContacts oder ohne.

    Der KP-Eintrag parkPlatz(Zugname) übergibt den Zugnamen an die Funktion, das funktioniert aber nur mit meinem Codeschnipsel/BetterContacts.

    Der KP-Eintrag parkPlatz() übergibt keinen Zugnamen (bzw. nil) an die Funktion, weder mit noch ohne Codeschnipsel/BetterContacts.

    Ohne Codeschnipsel/BetterContacts lassen sich die letzten beiden Einträge allerdings gar nicht in den Kontaktpunkt eintragen, weil EEP diese Funktion nicht finden kann.


    Viele Grüße

    Benny


    Edit(h) schiebt noch eine kleine Korrektur nach:

    der Zugname wird schon immer implizit übergeben

    Der Zugname wird schon fast immer implizit übergeben. Laut meiner Homepage kam diese Funktion mit dem Plugin 2 zu EEP 11 hinzu.

    Hallo Jolta,

    ja, die genannte Gleismauer ist von mir. Fussel hat dir schon den Link zu meiner Homepage genannt, und Enrique hat schon berechtigterweise darauf hingewiesen, dass die Gleismauer ohne Konverter nicht für EEP16 zu gebrauchen ist. Leider ist der Modellkonverter nicht mehr erhältlich, und wenn du neu bei EEP bist, hast du ihn wohl auch nicht noch von früher.


    Jetzt gibt es für dich noch zwei Möglichkeiten, die Gleismauern für EEP16 zu bekommen:

    1. Du wartest, bis ich mich dazu aufraffe, die Gleismauern für die höheren EEP-Versionen neu zu konstruieren. Das kann allerdings noch sehr lange dauern (bisher ist es nicht geschehen...), daher kann ich das nicht wirklich empfehlen.
    2. Du kaufst dir eine Anlage im Shop, in dem die Gleismauern in konvertierter Form enthalten sind. Aus dem Kopf fallen mir die Anlagen "Frankfurt" von Roman Iwer (RI1) und "Stadtbahn Nord-Ost" von Andreas Großkopf (AG2) ein. In Frankfurt dürften vorwiegend die Betonmauern, in der Stadtbahn eher die Ziegelsteinmauern verbaut (und somit enthalten) sein. Schaue vor einem Anlagenkauf aber nochmal genau hin, ob da auch wirklich das drin ist, was du suchst.

    Viele Grüße

    Benny

    Genau, lass die Vorschaubild-Erstellung nochmal laufen. Eigentlich sollte diese spezielle Vorschau-Generierungs-Anlage nichts als einen gelben Hintergrund zeigen (keine Ahnung, was ich mir damals bei dieser Farbe gedacht habe :af_1:).

    Entweder ist in deinem Fall noch die Geländeoberfläche in schwarz zu sehen (warum auch immer!?), oder irgendein großer schwarzer Spline, der zuvor eingesetzt wurde und bei dem das Löschen dann aus irgendeinem Grund nicht geklappt hat (wahrscheinlicher).

    Zumindest letzteres Problem solltest du durch Neugenerierung aller betroffenen Bilder beheben können.


    Viele Grüße

    Benny


    PS: Ein Blick in die Anleitungen ist auch nicht verboten, die eine oder andere Frage ist dort schon beantwortet :ae_1:

    Eine eingebaute Spline-Vorschau gibt es erst ab EEP7.

    Aber für die niedrigen Versionen gibt es von EF1 ein Tool namens "Gleisstile-Vorschau für EEP", das dir ein entsprechendes Vorschaufenster anzeigt (bzw. anzeigen sollte).

    Das Tool von EF1 kann nur vorhandene Bilder anzeigen. Um entsprechende Bilder zu erzeugen, habe ich vor langer Zeit ein weiteres Tool geschrieben, die "Splinevorschau". Dieses Tool ist noch auf der Seite von Waldemar erhältlich. Vielleicht hattest du dieses Programm schon gefunden?

    Ohne das Tool von EF1 ist mein Tool zugegebenermaßen etwas nutzlos...


    Viele Grüße

    Benny

    Drittens funktionieren die Blinkereinstellungen in den Fahrzeugkontakten bei installiertem Update 3 nicht mehr richtig.

    Ein [x] schaltet die Blinker jetzt ebenso aus wie ein [ ].

    Bislang hat das [x] bedeutet, dass die Blinker unangetastet ihren Zustand beibehalten.

    Das [X] bewirkt, dass die Blinker in den "Automatikmodus" versetzt werden (solange keine Weiche in der Nähe ist, sind sie also aus).

    Das ist zwar nicht intuitiv (sonst bedeutet ein [X] immer "keine Veränderung"), war aber immer schon so.

    Ich meine, ich hätte dir genau diesen Umstand mal in Skype als Rätselaufgabe gestellt.


    Viele Grüße

    Benny

    Richtig, du brauchst einen Schaltkreis mit einem Schaltauto, und jeder Zug, der diesen Blockabschnitt befahren will, muss sich in diesem Schaltkreis "anmelden" (durch einen Kontaktpunkt, der eine Weiche im Schaltkreis stellt). Wenn das Schaltauto dann einen solchen Anmeldungszweig befährt, wird das Signal für den Zug auf Grün geschaltet, gleichzeitig aber auch das Schaltauto im Schaltkreis angehalten (per Signal oder "Dauerschleife", die nicht an den Anmeldungsweichen vorbeikommt). Erst wenn der Gleisabschnitt wieder frei ist, wird das Schaltauto wieder freigegeben, und kann die nächste Anmeldung "abarbeiten".


    Eventuell findest du hier auch noch Inspirationen für Schaltungen: http://www.js-home.org/eep/listAnlage.php (die Seite ist sogar noch älter als EEP6).


    Viele Grüße

    Benny

    Die "Erdenker" dieser neuen Möglichkeit in EEP müssen doch ein vergleichbares Wissen haben?

    Vermutlich ja. Aber Wissen haben und Wissen in verständlicher Form teilen können sind zwei verschiedene Dinge (wobei auch ich mir nicht sicher bin, ob ich den letzten Punkt immer erfüllen kann).


    Wenn ich es bei Benny richtig verstanden habe, sollte auch der Bereich HDR Spheres bei https://www.textures.com/ für solche Zwecke geeignetes Material liefern können.

    Ja, diese "HDR Spheres" eignen sich genauso. Vorteil von textures.com: Dort gibt es die "Tonemapped JPG" auch in 16K Auflösung. Nachteil: Kostenlos herunterzuladen sind wohl nur die Varianten mit 1K Auflösung - das ist für ein Rundum-Panorama definitiv zu wenig. Die Lizenz ist auch nicht ganz so freundlich wie von HDRI Haven, sollte einer Verwendung aber trotzdem nicht entgegenstehen.


    Bitte entschuldige, dass ich mit den Gedanken an das Urheberrecht übers Ziel hinausgeschossen bin.

    Der Vorwurf des keine-Gedanken-machens war wirklich etwas unnötig, aber das Ansprechen des Themas Lizenzen bzw. Urheberrecht durchaus sinnvoll. Also alles gut :aa_1:

    Danke auch für die Rückmeldung, dass es bei dir mit "komischen" Bildformaten jetzt doch geklappt hat.


    Viele Grüße

    Benny

    ich glaube diese Berechnung geht nicht denn die Grösse der Anlage muss mit berücksichtigt werden.

    Die Anlagengröße spielt in der Berechnung keine Rolle, weil der Skydome immer gleich groß dargestellt wird, unabhängig von der Anlagengröße. Das ist auch der Grund, warum die Bäume je nach Blickwinkel viel zu groß wirken.


    Hat das Bild eine Auflösung z.B. von 8100 x 4000 erscheint das schwarze Testbild (habe ich selber ausprobiert).

    Ich habe es gerade auch ausprobiert, ein Bild mit 8100x4000px wird bei mir dargestellt. Wenn es bei dir nicht geklappt hat, lag das Bild wohl nicht im Resourcenordner, oder es gab ein anderes Problem. Aber an der Auflösung liegt es nicht.


    Aber wie steht es da mit Lizenzrecht? Darf ich dann Anlagenbilder mit deren Material als Hintergrundbild zeigen? Darüber macht ihr euch wohl weniger Gedanken.

    Doch, darüber mache ich mir natürlich auch Gedanken. Die Antwort: Du darfst.

    Alle Bilder auf HDRI Haven stehen unter der CC0-Lizenz. Das bedeutet im Wesentlichen, dass du damit machen darfst, was du willst.

    Hier kannst du es noch genauer nachlesen (auf Englisch).


    Viele Grüße

    Benny

    Ich weiß nicht, ob das hier auf Seite 4 überhaupt noch jemand liest, aber ich habe mich jetzt auch mal ein bisschen mit den Skydomes beschäftigt. Ein bisschen Theorie und Praxis dazu gibt es unten. Beim Erforschen ist es sicherlich hilfreich, wenn man sich mit Computergrafik und Co. ein bisschen auskennt. Aber auch ohne spezielle Kenntnisse lassen sich die Skydomes verwenden.

    Welche Auflösung müssen die Bilder haben?

    Einerseits ist es egal. Anders als weiter oben behauptet funktioniert jede Auflösung. Das gelb-schwarze Testbild erscheint genau dann (unabhängig von der Auflösung), wenn das gewählte Bild außerhalb des Resourcenordners liegt. Ich würde empfehlen, alle Skydome-Bilder unter Resourcen/Parallels/Environment abzulegen, dafür gibt es diesen Ordner schließlich. Funktionieren tut aber auch jeder andere Ort innerhalb des Resourcenordners.

    Andererseits ist es nicht egal, denn es soll ja auch brauchbar aussehen. Damit das Bild nicht verzerrt wird, sollte es ein Seitenverhältnis von 2:1 haben (also doppelt so breit wie hoch sein). Damit das Bild auch scharf (im Sinne von "nicht verpixelt", um Dunst oder Diesigkeit geht es hier nicht) dargestellt wird, muss die Auflösung ziemlich hoch sein. Wie hoch genau, lässt sich ausrechnen:

    Die EEP-Kamera hat standardmäßig einen Blickwinkel von 45°. Der Skydome muss rundum Bilddaten bereitstellen, also für 360°; das ist das achtfache von 45°. Ein FullHD-Monitor ist 1920 Pixel breit. Wenn jeder Bildschirmpixel mit einem Skydomepixel gefüllt werden soll, muss das Bild also

    1920×8=15360px breit sein. Das sind fast die weiter oben genannten 16K. Kleinere Auflösungen sorgen für verpixelte Hintergründe. Wie schlimm das ist, darf jeder für sich selbst entscheiden.


    Wo bekomme ich solche Bilder her?

    SpeedyGonzales hat gezeigt, wie man solche Bilder selber zusammenbasteln kann. Solange man nur ungefähr in Richtung Horizont schaut, reicht das vollkommen aus. Schaut man jedoch etwas höher in den Himmel, wird man irgendwann das Ende des gebastelten Bildes sehen.

    Um das zu verhinden, braucht man ein komplettes Rundum-Panorama, das auch die Bereiche oben und unten abdeckt. Um so ein Rundum-Panorama (je 180° nach links und rechts und je 90° nach oben und unten) zu erstellen, gibt es verschiedene Möglichkeiten, die aber alle mit erheblichem Aufwand verbunden sind.

    Einfacher geht es, wenn man sich fertiger Bilder bedient. Praktischerweise gibt es im Internet eine Seite, die genau solche Bilder bietet, und das sogar kostenlos: HDRI Haven. Hauptzweck der dort angebotenen sogenannten HDRIs ist die realistische Beleuchtung von 3D-Renderings; dafür gibt es spezielle Dateiformate, mit denen EEP aber nichts anfangen kann. Die Rundum-Panoramas werden aber auch als JPG angeboten, und damit kann EEP sehr wohl etwas anfangen. Nachdem ihr ein für euch passendes Panorama (am besten möglichst plattes Land ohne Bäume, die wirken in EEP ansonsten unnatürlich groß) ausgewählt habt, scrollt etwas runter und wählt unter Downloads die Option "8K Tonemapped JPG". Die Panoramas gibts auch in 16K (was von der Auflösung her besser wäre, siehe oben), aber die müsste man dann erst noch vom HDR- ins JPG-Format umwandeln. Ob das die Mühe wert ist, muss jeder für sich selbst entscheiden.

    Das heruntergeladene Bild muss dann noch in den oben genannten Ordner geschoben werden, dann kann es in EEP verwendet werden.


    Langer Rede kurzer Sinn

    • HDRI Haven aufrufen
    • Passendes Rundum-Panorama aussuchen
    • "8K Tonemapped JPG" herunterladen
    • Heruntergeladenes Bild in den EEP-Ordner nach Resourcen/Parallels/Environment verschieben (oder direkt dorthin herunterladen)
    • In EEP über Datei die Anlageninformationen öffnen, als Skydome "Benutzerdefinierte EEP-Umgebung" auswählen, auf "Lade Tauschtextur" klicken und das eben heruntergeladene Bild auswählen
    • Bestätigen und über einen "eigenen" Skydome freuen :aa_1:


    Viele Grüße

    Benny

    Heute ist das Plugin 3 für EEP16 erschienen, nun übergibt EEP bei einem Kontaktpunktaufruf auch die ID des Gleises, auf dem der Kontaktpunkt liegt, an die aufgerufene Lua-Funktion.

    Mir fällt dafür zwar kein Anwendungsfall ein, der nicht durch BetterContacts besser abgedeckt würde, aber meine mangelnde Fantasie soll euch nicht abhalten:


    Ab sofort gibt es auf meiner Homepage (und auf GitHub) die Version 1.1.0 von BetterContacts!


    Mit der neuen Option varnameTrackID kann nun ein Variablenname festgelegt werden, unter dem die Gleis-ID innerhalb des Kontaktpunkt-Eintrags zur Verfügung stehen soll . Standardmäßig ist kein Variablenname vergeben (ein vorgegebener Name könnte eine globale Variable gleichen Namens verdecken, das wäre ein Breaking Change); um die Gleis-ID nutzen zu können, müsst ihr also erstmal selbst einen Variablennamen vergeben.


    Und wo ich schonmal dabei war, habe ich auch noch gleich die schon länger versprochene Option printVersionInfo implementiert.


    Ein Minimalbeispiel, das beide Neuerungen zeigt:

    LUA Source Code
    1. clearlog()
    2. require("BetterContacts_BH2"){printVersionInfo=true,varnameTrackID="TrackID"}
    3. function EEPMain()
    4. return 1
    5. end

    Eintrag im Kontaktpunkt: print("Zug ", Zugname, " auf Gleis ", TrackID)


    Ausgabe im Ereignisfenster (mit Plugin 3 zu EEP16):


    Wer das Plugin 3 nicht hat, kann BetterContacts v1.1.0 übrigens trotzdem nutzen. In diesem Fall bleibt die Variable mit der Gleis-ID halt einfach nil.

    Im Ereignisfenster sieht das dann so aus (EEP16 ohne Plugin 3):



    Ich hoffe, ihr könnt damit etwas anfangen :ae_1:

    Rückmeldungen sind wie immer gerne gesehen, allerdings finde ich vermutlich erst morgen Abend wieder Zeit, ins Forum zu schauen.


    Viele Grüße

    Benny

    Dein gezeigter Code scheitert vermutlich am Punkt vor den eckigen Klammern bei HBFAnzeigID.[i]. Lua kennt zwei verschiedene Schreibweisen für die gleiche Sache: HBFAnzeigID.Gleis1 ist das gleiche wie HBFAnzeigID["Gleis1"]. Die zweite Variante eignet sich auch, um statt einem festen Wert ("Gleis1") eine Variable (i) einzusetzen. Du darfst die beiden Varianten nur nicht vermischen.

    So sollte es also funktionieren:

    LUA Source Code
    1. for i, v in pairs(HBFAnzeigID) do
    2. for j, w in pairs(HBFAnzeigID[i]) do
    3. print(i, " ", j)
    4. end
    5. end


    Statt HBFAnzeigID[i] kannst du auch einfach v verwenden, wie in den vorherigen Antworten geschrieben.


    Viele Grüße

    Benny