Jump to content

Eggu

Mitglieder
  • Gesamte Inhalte

    423
  • Benutzer seit

  • Letzter Besuch

Beiträge erstellt von Eggu

  1. Danke für die Erläuterung, @Neo.

    Aber ich meinte Folgendes:
    "ungekuppelte Fzg. in Bewegung" (z.B.) hintere Lok schiebt: ja, ein Gleiskontakt wird nur einmal getriggert.
    Aber: Loopen durch Fzg. in diesem (temporären) Verbund (während Bewegung): nur schiebende Lok wird erkannt  (oder Teilstrang mit gekuppelten Fzg.)

    kleiner Test-Aufbau:
    CC75B61D-49E1-441A-95DE-AB94F9DA87A6

    Gruß Eggu

  2. vor 2 Stunden schrieb Goetz:

    I can't say for sure, but it may be related to the fact that one wheelbase of the ship is in front of the bow and at some distance, resting on a separate, curved bit of track:

    Yes, you are right.

    Replacing the big ship with a smaller one (and adjusting the trigger contact) works  :).

    Attached the modified solution  (together with the other corrections I described above).

    Still open: modify the method to work with the big ship.

    regards, Eggu

     

    Berthing Experiment- small-ship.mbp

  3. great idea,

    but in this case, this does not work, too.


    I attached the modified file:
    - corrections as mentioned in my first post
    - separate event, triggered when boat is back on main track
    - "twitching" with method from @Phrontistes
    - in addition: remember original ship position, using dummy object, restoring this position later, just before the "twitching".

     

    Might be someone will find more issues.

    regards,

    Eggu

    Berthing Experiment- Eggu-mod.mbp

  4. to connect a vehicle functional to a track (in addition to the logical/physical) linking,
    you also need one line of Lua Code  (new position of vehicle = current position of vehicle), something like that:  
    $("Containership MBS Ituana").transformation.position =  $("Containership MBS Ituana").transformation.position
    (this somehow imitates the manual twitching)

    I tried this, but unfortunately it does not work, might be there is some other issue.

    Your code (event blocks) do not work at all,

    •  after the delay block of 18 sec the ship should go back to the main track (via SX1), I suppose,
        but then you have to set the speed to a negative value  (-1 instead of +1).
    • at the end I can not see the code for re-linking the ship to the main track
      (this code block is near the top, where it is not needed).
    • as last step you should re-set the speed for the ship.

    As alternative method you can move a proper track part, with the ship still linked and connected.

    For deeper investigation some comment on you code blocks would be  helpful.

    regards, Eggu

  5. Die erste Verzögerung ergibt zwei Zweige

    entweder sofort  "$("H/V Hauptsignal 1").state = 1"  ausführen,

    oder zunächst 7 sek. verzögern und dann auch  "$("H/V Hauptsignal 1").state = 1"  ausführen.

    Was in der EV nach einem linearen Ablauf aussieht,

    ergibt bei Verzögerungen in Lua jeweils eine weitere Verzweigung

    (weil die Funktion verlassen wird, und nach dem Timeout erneut aufgerufen wird).

    Gruß

    Eggu

  6. Wenn eine Lok mehrere ungekuppelte Fahrzeuge  (Wagons, oder andere Loks mit v=0, Kupplungen deaktiviert) schiebt,
    dann wird bezügl. "Auslösen von Gleiskontakten" diese Reihung wie ein gekuppelter Verband behandelt.
    (erstes Fahr-Objekt triggert "Gleiskontakt betreten", das letzte "Gleiskontakt verlassen").

    Wenn ich aber die Fahrobjekte dieses Quasi-Verbandes  z.B. mittels einer Wiederholung ("für alle Fahrzeuge in einem Zug/Verband") iteriere
    (und zB die Namen printe), so erhalte ich nur das aktive Lok-Fahrzeug.

    Das ist für mein Logik-Verständnis inkonsistent.

    Wenn ich so mehrere gekuppelte (Teil-) Verbände zu einem großen Quasi-Verband zusammenschließe, ev. mit aktiven Loks, (die hintere schiebt am stärksten),
    dann gibt es an einem Gleiskontakt auch nur die Events wie bei einem komplett gekuppelten Verband.

    Wenn ich mir dann die Elemente dieses Quasi-Verbandes anschaue, so ist die Situation um einiges komplizierter,
    der Teilverband mit einer Lok v>0 wird angezeigt, welcher dem Kontakt am nächsten ist (so meine bisherige Beobachtung).

    Habe gerade eine Anwendung,
    bei der ich einen Trigger pro Fahrobjekt in einem (dichten) (Quasi-) Verband bräuchte, (1)
    aber ein weiterer Filter in der Wiederholungsfunktion wäre (für andere Zwecke) auch hilfreich ("alle berührenden Fahrzeuge").

    (1) Projekt "Rolltreppe" via "Förderband"-Lösung,
    mehrere SX1-Loks fahren synchron, aber möglichst ohne Berührung, um Quasi-Stufen nachzubilden.

    14215D6D-DF7E-407D-AF31-D855052C50BA

    RolltreppemitFahrgsten.thumb.jpg.8f46f6576d0302a4dd28a5737f39deb3.jpg

     

     

  7. ... mit einer ähnlichen Anweisung

    "Für Elemente in einer Tabelle"

    Die aktuelle Listen-Version übersetzt zu einer for..ipairs Schleife,

    hier werden aber nur numerische Indizes einer Liste berücksichtigt.

    Tabellen-Elemente, die keinen numerischen Key (>= 1) haben, werden einfach ignoriert (Lua-konform).

    Eine Variante mit for..pairs würde alle Elemente berücksichtigen (wenn auch in keiner definierten Reihenfolge).

    Gruß Eggu

  8. Man kann auch einen Kontakt mit einem Leuchtwürfel (mit Signalfunktion) koppeln

    und hat dann auch 14 Schaltzustände, und auch eine Anzeige.
    Den Würfel selbst sollte man einer speziellen Ebene "unsichtbar" zuordnen,
    die man dann manuell unsichtbar schalten müsste.

    Hier wäre von Vorteil, Ebenen definieren zu können, die automatisch im Simulationsbetrieb auf unsichtbar schalten.

    Gruß Eggu

    Kontakt-mit-Signalwürfel-gekoppelt.jpg

  9. aus der Wiki:

    _CP - Beginnt ein Objekt mit diesem Namen, dann wird es als Kontaktpunkt interpretiert. Kontaktpunkte verbinden sich automatisch mit anderen Kontaktpunkten. Die Ausrichtung des Objekts bestimmt dabei die Richtung, in die ein Objekt beim Verbinden gedreht wird. Kontaktpunkte werden nicht gezeichnet, ihre Geometrie spielt daher für das 3D-Modellbahn Studio keine Rolle.

  10. Im Ereignis Bahnhofsausfahrt, die Animationen zweiteilen und weitere Verzögerung hinzufügen:

    if not deferredCall then
      if signal.state == 1 then
        local t = layout:getVehiclesOn(signal)
        for i, Fahrzeug in ipairs(t) do
          local t, t2 = layout:getVehicleGroup(Fahrzeug, 3)
          for i, Wdh in ipairs(t) do
            local Ori = t2[i]
            Wdh.animations["01-Sperre 1 Oeffnen"]:play(-1, -1)
            Wdh.animations["02-Sperre 2 Oeffnen"]:play(-1, -1)
             -- Wdh.animations["03-Tuer 1 Oeffnen"]:play(-1, -1)
             -- Wdh.animations["04-Tuer 2 Oeffnen"]:play(-1, -1)

          end
        end
      defer(2, "Verzögerung_p2")
      end

    elseif deferredCall == "Verzögerung_p2" then
      if signal.state == 1 then
        local t = layout:getVehiclesOn(signal)
        for i, Fahrzeug in ipairs(t) do
          local t, t2 = layout:getVehicleGroup(Fahrzeug, 3)
          for i, Wdh in ipairs(t) do
            local Ori = t2[i]
            -- Wdh.animations["01-Sperre 1 Oeffnen"]:play(-1, -1)
            -- Wdh.animations["02-Sperre 2 Oeffnen"]:play(-1, -1)
              Wdh.animations["03-Tuer 1 Oeffnen"]:play(-1, -1)
              Wdh.animations["04-Tuer 2 Oeffnen"]:play(-1, -1)
          end
        end
      defer(2, "Verzögerung")
      end

    elseif deferredCall == "Verzögerung" then
      signal.trackContact.autoAcceleration = true
      defer(2, "Verzögerung (2)")
    elseif deferredCall == "Verzögerung (2)" then
      signal.trackContact.autoAcceleration = false
    end

     

  11. vor 11 Minuten schrieb Chris06:

    Kann man in Blender die Geschwindigkeit der einzelnen Animationen ändern

    Die Anim.-Geschw. ändert man, indem man die Keyframes horizontal verschiebt (also den Zeitpunkt verändert),
    oder die Änderung der location/scale/Winkel unterschiedlich ausführt. Beides muss zusammen passen, so dass es auch zur
    Wiedergabegeschwindigkeit passt (Frames/second), und so dass es nicht ruckelt, und so, dass man nicht unnötig viele Keyframes erzeugen muss.
    Für gleichmäßige Drehungen reichen ein Keyframe alle 90°, oder 120°.  180° könnte problematisch sein, weil dann die Drehrichtung zweideutig ist.
    Bei Drehungen um mehrere Achsen kann es unerwartete Ergebnisse geben (siehe "Euler-Drehungen" oder auch "Gimbal-Lock").
    Dann könnte man auf Quaternionen-Drehung ausweichen.

×
×
  • Neu erstellen...