-
Gesamte Inhalte
423 -
Benutzer seit
-
Letzter Besuch
Beiträge erstellt von Eggu
-
-
-
wie (Syntax) kann ich (in Lua) von einem Objekt auf die umgebende Gruppe zugreifen ?
Und umgekehrt: Zugriff von einem Gruppen-Objekt auf ein Gruppen-Mitglied? Gruppen_Objekt["Name-von-Objekt-in-Gruppe"] scheint nicht zu funktionieren.
Gruß Eggu
-
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-AB94F9DA87A6Gruß Eggu
-
Eventuell hilft das:
Signal gerade stellen und mit einem weiteren normalen Kontakt verbinden, diesen auf das Gleis setzen.Gruß Eggu
-
vor 29 Minuten schrieb Eggu:
Still open: modify the method to work with the big ship.
attached the solution for a bigger ship (and adjusted contacts and delays).
It also works without restoring the original position (using the dummy_object),
but it seems the ship and related contacts have to fit all to the same single track, as Goetz supposed.regards, Eggu
-
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
-
I am still wondering why the "Phrontistes-method" does not work in this case.
In other creations it works, it is also the method Goetz explained to me some time ago.regards, Eggu
-
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
-
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
-
after the delay block of 18 sec the ship should go back to the main track (via SX1), I suppose,
-
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
-
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
-
... 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
-
kurze Antwort:
Die verschiedenen Animationsnamen müssen jeweils in einer Objektvariablen abgelegt werden,
und der Zugriff erfolgt dann indirekt über diese Variablen, die dann aber einheitliche Namen haben.
Die Richtung kann auch abgefragt werden und kann entsprechend als Unterscheidung dienen.
Gruß Eggu -
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
-
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.
-
Super,
jetzt müsste sich noch die Umgebung im Strom der Zeit ändern
-
vor 1 Stunde schrieb manfredkropp:
Hat jemand eine bessere Idee?
Leider nein.
-
vor einer Stunde schrieb BahnLand:
Gang über die Treppenstufen hast Du ja äußerst trickreich gelöst.
Ja, diese Treppen-Lösung hatte ich schon letzten November in seiner Anlage "Ballonfahrt" bewundert.
Gruß
Eggu -
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")
endelseif 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")
endelseif deferredCall == "Verzögerung" then
signal.trackContact.autoAcceleration = true
defer(2, "Verzögerung (2)")
elseif deferredCall == "Verzögerung (2)" then
signal.trackContact.autoAcceleration = false
end -
Müsste doch mit "herkömmlichen" Fahrstraßen zu lösen sein.
Wie genau sieht die Anlage aus ? Ist sie hier als Entwurf verfügbar? -
Ich mische mich mal ein, weil ich mir das auch angeschaut hatte:
running and 0 or 1 hat die gleiche Wirkung wie: running ? 0 : 1
-
vor 1 Minute schrieb Eggu:
indem man die Keyframes horizontal verschiebt
Komplette Keyframes (auch mehrere) kann man zB direkt in der Timeline selektieren und verschieben
(wie üblich mit G wie grab) -
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. -
Rolltreppe mit Fahrgästen (Entwurf)
in Anlagen
Geschrieben
Rolltreppe aus dem Katalog,
Fahrgäste können (oben) aufspringen und unten wieder abspringen.
CC582E38-7328-4252-B439-0B1D9793EBA7
Zum Ausprobieren und ev. verbessern/vereinfachen.
Gruß Eggu