Jump to content
Zum Start hinzufügen

Weitere Informationen

3D-Modellbahn Studio

Eine Vollbild-App auf Ihrem Startbildschirm mit Push-Benachrichtigungen und mehr.

So installieren Sie diese App auf iOS und iPadOS
  1. Tippen Sie auf das Teilen-Symbol in Safari
  2. Scrollen Sie durch das Menü und tippen Sie auf Zum Startbildschirm hinzufügen.
  3. Tippen Sie oben rechts auf Hinzufügen.
So installieren Sie diese App auf Android
  1. Tippen Sie auf das 3-Punkte-Menü (⋮) in der oberen rechten Ecke des Browsers.
  2. Tippen Sie auf Zum Startbildschirm hinzufügen oder App installieren.
  3. Bestätigen Sie durch Tippen auf Installieren.

Empfohlene Beiträge

Geschrieben

Im letzten Stream hat @alexander42 an der Schleuse gearbeitet und die Hubsteuerung der Wasseroberfläche und der Fahrspur in der Schleuse mit einem virtuellen Fahrzeug SX1 auf einem vertikalen Gleis realisiert. Den unteren und oberen Endpunkt hat er mehr oder weniger erfolgreich von Hand hingefummelt. Ich dachte, das sollte rein numerisch über den Gleiseditor einfacher gehen: Gleislänge = Hubhöhe + 2*Halteabstand des SX1 am Gleisende.

Bei einem kleinen Testaufbau habe ich dann aber festgestellt, dass der SX1 gar keinen definierten Halteabstand vor dem Gleisende hat. Der Punkt kann um bis zu 2mm variieren. Auch ein Versuch mit exakt 10mm vor dem Gleisende positionierten Bremskontakten brachte kein besseres Ergebnis. Das Fahrzeug hält jedes Mal an einer minimal anderen Stelle. Für die Schleuse bedeutet das nicht nur, dass dadurch eine mehr oder weniger gut sichtbare Stoßstelle zwischen den Wasserflächen entsteht, sondern auch, dass die Schiffe beim Ein- und Ausfahren über eine bis zu 1mm hohe Stufe im virtuellen Gleis müssen.

Gibt es einen Trick, ein punkt- und wiederholgenaues Stoppen zu erzwingen?

Hubtest.mbp

Geschrieben

Ich verwende hier keine SX1 sondern eine kleine Lok. Nämlich die, welche Alex im Stream eigentlich verwenden wollte. Und die hält immer exakt am Gleisende. Wie gesagt, die Bremsverzögerung ausschalten, dann steht die Lok mit einem Ruck und ist bereit zum zurück fahren.

Geschrieben

Hallo @BR_01_Fan ,

Hallo @Atrus ,

vielen Dank für eure Hinweise und die Mühe mit dem Testaufbau. Das sind sehr nützliche Infos. (y)

Auf der Anlage habe ich mich für eine andere Variante entschieden. Ich möchte den Ruck beim plötzlichen Stehenbleiben vermeiden und habe daher die Bremsverzögerung des "Pumpenwagens" wieder aktiviert. Durch die Entschleunigung des gesamten Vorgangs liegt die Varianz am Ende des Fahrwegs bei einigen Hundertstelmillimetern. Das ist für die Höhenausrichtung der Fahrspur akzeptabel.

Um trotzdem eine absolut ebene Wasseroberfläche zu erhalten, bin ich dem Vorschlag von @Goetz gefolgt und habe oben und unten feste Wasseroberflächen platziert. Diese werden am Beginn und Ende des Schleusungsvorgangs aus- und eingeblendet. Die "variable" Wasseroberfläche ist nur während des Schleusens sichtbar.

Außerdem habe ich noch ein paar Warnleuchten installiert, die Schiffseinfahrt als Auslöser eingebaut und die aktuelle Version hochgeladen.

Ein Feature-Wunsch an @Neo : EV-Aktion "Objekt bewegen". Parameter: Startposition (x,y,z), Zielposition (x,y,z), Geschwindigkeit, Beschleunigung. D

LG Alex

Geschrieben

Hallo @alexander42 ist natürlich auch eine Option. Mein Schleusenhub fährt nur mit 0,25 km/h , da gibt es am Ende keinen Ruck mehr.

Die Tore öffnen und schließen bei mir auch sehr langsam und brauchen daher 20 sec.

Textfeld  11x ohne Hintergrund 16.jpg

Das mit Objekt bewegen gibt es schon und ich benütze das auch in der Schleuse. Es ist aber ein lua Befehl.

Textfeld  11x ohne Hintergrund 17.jpg

Da wird das Boot exakt an einen Punkt gebeamt, x,y und z. Bei mir ist das ein Gleiskontakt. Es gibt hier zwei davon für unterschiedliche Schiffslängen.

Die Kontaktpunkte an den Schiffen sind auch an unterschiedlichen Stellen. Weiter vorne oder eher in der Mitte.

Textfeld  11x ohne Hintergrund 18.jpg

Die Geschwindigkeit oder Beschleunigung wird erst kurz nach dem Transfer eingestellt.

LG Atrus

Geschrieben

Guten Morgen zusammen,

vor einigen Jahren stand ich auch vor diesem Thema. Wir hatten damals eine konstruktive Diskussion hierzu, mit einigen Lösungsansätzen. Die Thematik konnte ich hierdurch erfolgreich lösen. Leider weiß ich nicht mehr welcher Punkt letztendlich zur Lösung führte.

Viele Grüße,

Siejay

Geschrieben
vor 1 Stunde schrieb Atrus:

Es ist aber ein lua Befehl.

@Atrus Das kannte ich noch nicht. Vielen Dank!

Wie Du geschrieben hast, wird das referenzierte Objekt damit auf die angegebene Position "gebeamt". Ich dachte hier allerdings an eine Bewegung von einem definierten Start- zum Zielpunkt. Ist das auch möglich?

LG Alex

Geschrieben

Hallo,

vor einer Stunde schrieb alexander42:

Wie Du geschrieben hast, wird das referenzierte Objekt damit auf die angegebene Position "gebeamt". Ich dachte hier allerdings an eine Bewegung von einem definierten Start- zum Zielpunkt. Ist das auch möglich?

... theoreitsch über einen timer möglich, der die Bewegung in kleinen Schritten bewegt, ist allerdings eine Fummelei alles synchron zu halten.
Mit dem Trick von @Atrus kann man allerdings, wenn die "Bewegungslok" die Endposition erreicht hat, die Endposition des Wassers (genau) korrigieren. Da die Abweichung nicht sehr hoch ist, fällt das kaum auf.

Als Referenz kann man auch den z-Wert der angrenzenden Wasserfläche nehmen, dann passt es zu 100%...

Gruß
EASY

Bearbeitet von EASY

Geschrieben

Hallo zusammen und danke für die Hilfe @EASY Und genau so mache ich das auch.

LG Atrus

Geschrieben

Hallo

vor 15 Minuten schrieb EASY:

Als Referenz kann man auch den z-Wert der angrenzenden Wasserfläche nehmen, dann passt es zu 100%...

... als kleine Ergänzung noch in lua

local posw=$("Wasser").transformation.position
local posref=$("Wasserreferenz").transformation.position
posw.z=posref.z
$("Wasser").transformation.position=posw

Gruß
EASY

Geschrieben

Hallo @alexander42 und alle anderen,

ich glaube, ich habe nach den ganzen Hinweisen hier eine funktionierende Lösung gefunden.

Wasserpegel.mbp

Ergänzung: Tiefster Wasserstand = 0, höchster Wasserstand = 60

HG
Brummi

Bearbeitet von Roter Brummer

Geschrieben

Hallo,

vor 22 Minuten schrieb Roter Brummer:

ich glaube, ich habe nach den ganzen Hinweisen hier eine funktionierende Lösung gefunden.

... es gibt noch eine Lösung ohne Hilfsobjekte, die nur die 3 Ebenen für die Wasserdarstellung verwendet...

In lua sieht das z.B. für oben so aus

local Wasser=$("Wasser") -- bewegtes Wasser
local posw=Wasser.transformation.position -- Position speichern
local posz=$("Wasser oben").transformation.position.z -- Referenzposition in z
posw.z=posz -- Referenzposition in z übernehmen
Wasser.transformation.position=posw -- bewegtes Wasser auf Position setzen

Wasserpegel 01.mbp

P.S. um es universell zu machen, könnte man die Wasserobjekte noch in Objekt-Variablen der beiden Gleiskontakte hinterlegen.

Gruß
EASY

Bearbeitet von EASY

Geschrieben

Hallo,

vor 5 Stunden schrieb alexander42:

Wie Du geschrieben hast, wird das referenzierte Objekt damit auf die angegebene Position "gebeamt". Ich dachte hier allerdings an eine Bewegung von einem definierten Start- zum Zielpunkt. Ist das auch möglich?

... da ich verspielt bin, noch eine Möglichkeit für eine Animationsdarstellung in lua (ohne timer ; sondern mit deferredCall() / defer())

local steps = 250 -- Anzahl Zwischenschritte
local dt = 0.03 -- Animationszeit
local Wasser = $("Wasser") -- Bewegungsobjekt
if not deferredCall then
  if not controller.variables.aktiv then -- Bewegung ? (Sicherung für nervöse Finger am Schalter !)
    if controller.state == 0 then -- Senken
      local z0= Wasser.transformation.position.z -- Ist Position in z
      local z1= $("Wasser unten").transformation.position.z -- Soll Position in z
      local dz = z1-z0 -- Höhendifferenz
      local step = dz/steps -- Schrittweite in z
      -- Variablen zwischenspeichern
      Wasser.variables.dz = dz
      Wasser.variables.steps = steps
      Wasser.variables.step = step
      if math.abs(dz) > 0.001 then -- Ist nicht schon auf Position?
        controller.variables.aktiv = true -- Bewegung !
        defer(dt, "bewegen")
      end
    else -- Heben
      local z0= Wasser.transformation.position.z
      local z1= $("Wasser oben").transformation.position.z
      local dz = z1-z0
      local step = dz/steps
      Wasser.variables.dz = dz
      Wasser.variables.steps = steps
      Wasser.variables.step = step
      if math.abs(dz) > 0.001 then
        controller.variables.aktiv = true
        defer(dt, "bewegen")
      end
    end
  end

elseif deferredCall=="bewegen" then
  local posw=Wasser.transformation.position -- Position
  posw.z = posw.z + Wasser.variables.step -- z-Position
  Wasser.transformation.position=posw -- Position neu setzen
  Wasser.variables.steps = Wasser.variables.steps -1 -- Schritte -1
  if Wasser.variables.steps >0 then -- Position nicht erreicht?
    defer(dt, "bewegen")
  else -- Position erreicht
    controller.variables.aktiv = false -- keine Bewegung
    -- Variablen löschen
    Wasser.variables.dz = nil
    Wasser.variables.steps = nil
    Wasser.variables.step = nil
  end
end

P.S. Für solche Lösungen muß man schon genau verstehen was passiert, sonst erzeugt man schnell Endlosschleifen... und es erzeugt viele Aufrufe...

Wasserpegel 02.mbp

P.P.S (V 9.5 , geht vom Prinzip her auch in Vorgängerversionen)

Gruß
EASY

Bearbeitet von EASY

Geschrieben

Hallo @alexander42 und alle anderen. @Neo hat den Beitrag ja schon an den richtigen Platz gebracht, danke!

Ich hatte am Vormittag wenig Zeit und darum war meine Ausführung wohl ein wenig unpräzise. So kompliziert ist das bei mir alles gar nicht. Nur will ich keinen Roman schreiben. Darum habe ich die Anlage einfach einmal als Entwurf hochgeladen.

E853443F-4497-4DDD-82B6-823EC2481ACE

Zur Erklärung nur soviel

Das Schleusenwasser ist wie bei dir mit dem "LIFT" verknüpft.

Die "Fahrspur" in meinem Fall ein Gleis bleibt immer am selben Ort, wird also nicht gehoben oder abgesenkt. ;)

Nur das Schiff verknüpfe ich beim Einfahren zum absenken oder heben auch mit dem Lift. Und wird kurz vor dem ausfahren wieder gelöst.

Weil das, wie @EASY weiter oben schon richtig bemerkt hat, eine ziemliche Fummelei wäre, das zeitlich perfekt zu synchronisieren, habe ich mich für den Transfer entschieden.

Erst wenn die Verknüpfung gelöst wurde und die Tore offen sind, wird das Schiff noch einmal minimal in der Höhe korrigiert und auf den "FLUX" transferiert.

(Hier muss ich auch noch etwas genauer werden)

Also liegt es jetzt perfekt auf einem Gleiskontakt und erst dann kann es auch "sicher" losfahren...

Die Einträge in der EV findest du unter River Side NEU Alles andere kannst du getrost ignorieren, weil das sieben Jahr alt ist. Muss ich erst neu aufbauen! P

Alexander 14.jpg

Einfach Anlage starten und die Fahrstraße Mongo River Block 05 Lift auf aktivieren und schon geht's los...o

Bei mir ist das wirklich etwas "entschleunigt" Nur das heben oder senken dauert schon ca. zwei Minuten.

Sind eben Schiffe, die haben Zeit. Schneller Vorlauf hilft aber. )

Die Schiffe werden über Fahrstraßen gesteuert. Es gibt 11 Blöcke. Bis auf Block 1-3 sind alle fertig.

Also Schleusen LIFT 1 heben ist schon in Betrieb, LIFT 2 senken passe ich gerade noch an. Ebenso Block 1-3

Den Rest wirst du sicher schnell herausfinden. Habe die Kähne auch schon versucht zu beleuchten und zu beschriften...

LG Atrus

PS: Noch ein Tipp zum Transfer von Objekten. Wenn das Ziel dieselbe Ausrichtung hat wie dein Objekt passt das so:

Textfeld  11x ohne Hintergrund 17.jpg

Wenn nicht, dann musst bitte noch die Rotation hinzufügen...D

Alexander 15.jpg

PPS: bei den kleinen dreieckigen Lücken vom Schleusen Wasser habe ich mich noch nicht wirklich entschieden. /

Deine Variante scheint mir aber die einfachste zu sein, super Idee. (y) Vielleicht das Schleusen Wasser am Ende, in der Höhe auch noch "transferieren"

Dann wäre es sogar für mich als alter Erbsenzähler, beinahe perfekt!

GLG Atrus

Bearbeitet von Atrus
Schreibfehler

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Push-Benachrichtigungen konfigurieren

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.