Jump to content

Versuche MBS-V5 von EASY


Empfohlene Beiträge

Hallo,

angeregt durch den "Zufallsgenerator" von Roter Brummer, hat es mich interessiert, wie man einen Tausch von Objekten unterschiedlicher Längen machen kann.

Mein Ausgangspunkt ist ein Zug mit 5 Wagons, deren Reihenfolge ich tauschen wollte...
1763335755_Bild001.thumb.jpg.905fadaf8eb8e0ddf58a0e014ca5fa69.jpg

... bei den bisherigen Lösungen zum "Zufallsgenerator" wurde mit fixen Koordinaten gearbeitet, die getauscht wurden... bei unterschiedlich langen Objekten kann dies zu Überlappungen oder Lücken führen...

... also dachte ich mir, dass ich die Mittelpunktkoordinaten aus einer durchmischen Wagonreihe aus den Längen der einzelnen Wagons (ausgehend von der Position der Lok) herleite
 

pos=$("L11").transformation.position
l=$("L11").length/2
pos.x=pos.x-l
for i=1,#ObjektListe do
  l=ObjektListe[t[i].pos].length/2
  pos.x=pos.x-l
  ObjektListe[t[i].pos].transformation.position=pos
  pos.x=pos.x-l
end

und hatte dann dieses Ergebnis...
734547728_Bild002.thumb.jpg.4062f6431d0f366c6c97a6e03b17d7b4.jpg

...so kamen mir erste Zweifel an der Methode... aber die Mathematik dahinter ist für so einen Irrtum zu einfach...

...der "T(r)ick" besteht darin, dass die Wagons immer noch auf den Gleisen stehen... wird ein kleiner Wagon gegen einen größeren getauscht, so drängelt er sich zwischenrein und da das MBS versucht eine Verbindung zur Reihe herzustellen, so wird der Zugverband vor und hinter dem Wagon verschoben... und bei groß gegen klein Tausch kann so eine Lücke entstehen...(...Lücke zu groß um einzurasten)...

... bevor ich die Wagons also neu setze müssen sie vom Gleis genommen...

-- Wagons neben das Gleis setzen
for i=1,#ObjektListe do
 pos=ObjektListe[i].transformation.position
 pos.y=pos.y+3
 ObjektListe[i].transformation.position=pos
end

und wieder der Reihe nach auf das Gleis gesetzt werden...... da die Lok nicht verschoben wird, und als Referenz dient, muß für das Zurücksetzen die y-Koordinate nicht (zurück) korrigiert werden.
55777078_Bild003.thumb.jpg.83fdd603a85deab9ab593149d7ea06a3.jpg

... dann geht es so, wie ich es mir vorgestellt habe...

Wagen-Tauschen02.mbp

P.S. Funktioniert nur, wenn der Zug in x-Richtung steht...

... aber dafür auch während der Zug fährt...

Gruß
EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist prima EASY! Da kann ich dann tatsächlich am Anfang ein Setup der Züge machen, was es mir ermöglicht, mehrere Szenarien aufzusetzen. Und damit ist auch ein Reset-Knöpfchen für den Anwender möglich. Wahrscheinlich kann ich mir dann sogar Daten-Snapshots machen, sodaß ich beim Testen nicht immer alles von Anfang an durchlaufen lassen muß. Damit wird die 'Filmgestaltung' um einiges einfacher.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 26 Minuten schrieb Roter Brummer:

sehe ich einen Schattenbahnhof kommen, der aus einem einzigen Gleis besteht und immer neue Zugkompositionen auswirft

Ja Brummi. Die unbeteiligten Züge können ja in eine Vitrine außerhalb. Ganz ohne Kran ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Stunden schrieb EASY:


55777078_Bild003.thumb.jpg.83fdd603a85deab9ab593149d7ea06a3.jpg

... dann geht es so, wie ich es mir vorgestellt habe...

Wagen-Tauschen02.mbp

P.S. Funktioniert nur, wenn der Zug in x-Richtung steht...

... aber dafür auch während der Zug fährt...

Gruß
EASY

Hallo Easy,

 

super gemacht... und wenn man aus dem geraden Gleis ein Oval macht, wird bei Betätigung des Schalters manchmal aus der ziehenden Lok eine schiebende Lok.

Und wenn Du es noch hinbekommst, daß es auch in anderen Richtungen funktioniert...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

danke für den Zuspruch.

vor 23 Stunden schrieb Roter Brummer:

sehe ich einen Schattenbahnhof kommen, der aus einem einzigen Gleis besteht und immer neue Zugkompositionen auswirft.

... den Schattenbahnhof hatte ich auch schon etwas im Hinterkopf.
Da nicht sichtbar, bietet sich da natürlich immer die Gelegenheit Dinge zu tun, die man in der Öffentlichkeit nie tun würde...
... (natürlich aus rein technischer sicht;))...

Gruß
EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

... was Neo hier beschreibt, hat mich doch etwas neugierig gemacht... Schritt für Schritt, erste Versuche zu Punkt 1...

Zitat

Ermittle die Fahrtrichtung der Lok als Vektor, in dem du (1, 0, 0) mit der Lok-Rotation (Quaternion) multiplizierst -> Transformation einer relativen Richtung in das Weltkoordinatensystem

... ergibt etwas erweitert die 3 Richtungsvektoren der Drehung aus dem Quaterion von "3D Zeiger". Wenn nun noch die Abstände im Modell vom Drehpunkt bekannt sind (Dimensionen in x,y,z), können die Richtungsvektoren entsprechend skaliert werden und die Koordinaten des Drehpunktes noch dazugerechnet ergibt die Koordinaten für vorne, hinten, links, recht, oben, unten... diese Koordinaten werden von "Markierung..." übernommen (laufender Timer)...
Richtungsvektor-02.thumb.jpg.e6e5d2efc304e712f0cc4dcd2b2d9fd3.jpg

... wenn man bei "Timer läuft ab" aus...

pos1={}
pos1.x=y.x*l+lpos.x
pos1.y=y.y*l+lpos.y
pos1.z=y.z*l+lpos.z

pos2={}
pos2.x=-y.x*l+lpos.x
pos2.y=-y.y*l+lpos.y
pos2.z=-y.z*l+lpos.z

... dies macht...

pos1={}
pos1.x=x.x*l+lpos.x
pos1.y=x.y*l+lpos.y
pos1.z=x.z*l+lpos.z

pos2={}
pos2.x=-x.x*l+lpos.x
pos2.y=-x.y*l+lpos.y
pos2.z=-x.z*l+lpos.z

... folgen die beiden Markierungen den Spitzen von "3D Zeiger in x-Richtung"...

Richtungsvektor-02.mbp

P.S. den "3D Zeiger" gibt es als Entwurf unter 66659D78-7050-469C-89B9-511FA127357B

Gruß
EASY 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich war schon kurz davor ein zusätzliches Objekt zu machen, dass man als 'Eigengizmo' ansehen könnte. Also einen Gizmo, der sich genau an dem Modell ausrichtet und nicht an Weltkoordinaten. Den könnten wir in vielen Fällen sehr gut gebrauchen. Aber wie steuern wir den? Wir haben keine Tastenereignisse.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,
... da der Spieltrieb mit mir durchgegangen ist, wäre es auch was für die "virtuelle Spielwiese"... aber es sind immen noch meine ersten Versuche in MBS-V5.

Einiges an Versuchen zusammengefasst, ist ein (kleiner) Schattenbahnhof dabei rausgekommen.
Schattenbahnhof04.thumb.jpg.c2831aaf19bd3d88ffb79c160884b2ee.jpg

Es stehen für einen Personenzug und einen Güterzug jeweils 10 Wagons und 2 Loks zur Verfügung.
Es werden je Zug 4 bis 10 Wagons und eine Lok zufällig ausgewäht und auf die Strecke gebracht.
P.S. Das Problem mit den in y-Richtung ausgerichteten Wagons hat eine Lösung gefunden. Es können also alle Wagons verwendet werden.

Anmerkung: Wenn es denn mal möglich sein sollte, dass im MBS auch Arrays/Felder in Variablen zugelassen werden, (Lua kann sich keine Variablenänderungen beim Schließen des MBS-Projektes merken), sollte es auch möglich sein, die Auswahl an Wagons und Loks durch einfaches Ziehen aus dem Katalog individuell zu gestalten.

P.S. Die gesamte Steuerung des Schattenbahnhofs beruht auf einer einzigen Ereignisdefinition... (... das 2. Ereignis ist Start-Stop).
... dass es ein etwas interaktiver Prozess war, sieht man etwas am Index ...(04) des Projektnamens...

Schattenbahnhof04.mbp

Gruß
EASY 

Bearbeitet von EASY
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

... danke für den direkten und indirekten Zuspruch (klick)...:):x

...bin dabei es noch ein wenig zu verfeinern, die Loklisten habe ich schon wegbekommen... ist die einfachere Übung, da es pro Zug nur eine gibt (... es kann nur eine geben... [Highlander (w)] und die anderen sind auf dem "Bereitstellgleis" und können so auch direkt aus dem Katalog gesetzt werden... bei den Wagons bin ich noch etwas am tüfteln...

vor 8 Stunden schrieb Roter Brummer:

Kann ich den Fahrzeugpark auch erweitern, wenn ich die Einträge in GWPool, PWPool, LPPool und LGPool entsprechend abändere und erweitere?

... mit der Version kann man GWPool, PWPool erweitern (Wagons)... LPPool und LGPool (Loks) kann man auch, aber es werden nur die erste 2 Einträge ausgewertet:(
(die Gleislängen müssen dann evtl. angepasst werden... die Gleise müssen "am Stück" sein (beim Umkehren wird der Zug mit dem Gleis gedreht (sehr große Drehscheibe9_9)...

Gruß
EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo EASY,
ich habe in meiner Anlage inzwischen auch einige Tables drin, die mit $-Objekteinträgen gefüttert sind. Das ist praktisch das ROM.
Eine Initialisierungsroutine klappert da am Anfang alle Einträge ab und versorgt die Objekte mit OV-Anfangswerten, u.a. auch mit Schlagworten. Die sind damit speicherbares RAM.
Zusätzlich bekommen die Objekte noch einen rückverweisenden Index (den Tabellenindex) mit auf den Weg. Somit kann der Nutzer einfach Tabelleneinträge ändern, aber die Dinge bleiben stabil.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,
 

vor 48 Minuten schrieb Andy:


ich habe in meiner Anlage inzwischen auch einige Tables drin, die mit $-Objekteinträgen gefüttert sind.

... und ganau das ist der Knackpunkt, die berühmten Anfangsbedingungen. Ich kann so schön Listen abfragen (...was steht am Anfang auf einem Gleis,... woraus besteht am Anfang ein Zug) aber ich kann diese Daten nicht wiklich festhalten. Im Projekt sowieso (es soll sich ja etwas ändern) und in Lua sind sie flüchtig... (Beenden des Projektes...)

So habe ich 2 Möglichkeiten:
1) Ich weise den Objekten Eigenschaften zu, die ich dann abfrage um die Listen zu rekostruieren.
2) Ich stelle vor dem Beenden des Projektes den Anfangszustand wieder her.

Du verfolgst 1) ich momentan verstärkt 2) wohl wissend, dass dies nicht die optimale Variante ist. Aber ich bin kein Freund von langen "$-Objekteiträgen", in dem Wissen, dass es auch einfacher gehen würde. (ich schreibe eine Liste (ab), die ich im Programm zwar abfragen kann:), aber das Programm kann sie sich nicht merken:(, deshalb muss ich sie selbst schreiben>:().
Wenn ich momentan im MBS eine Variable erstellen möchte, kommt eine ganze Liste welchen Typ von Variable ich erstellen möchte... fehlt ja nur noch die Auswahl "Feld/Array"...und da Neo schon mal angedeutet hat, dass auch dies angedacht ist, harre ich der Dinge und beschäftige mich "nur" prinzipiell mit dem, was im MBS-V5 so alles machbar ist... und entwickle es dann schrittweise (mit der Weiterentwicklung vom MBS) weiter...
Da Neo nicht alle Wünsche erfüllen kann ("Feld/Array" hoffentlich schon9_9) wird es wohl auch zukünftig (gelegentlich) "von hinten durch die Brust ins Auge" geben... wäre ja sonst auch nicht so spannendB|

Gruß
EASY
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Richtig hart wird's, wenn man im virtuellen Tag/Nacht-Modus einen Film á la Koriander drehen will. Da braucht man nun erstmal einen reproduierbaren Ablauf und eine Grundposition, die als Anlage0 abgespeichert ist. Nun muß man immer erst mal schauen, wo denn nun in der nächsten Stunde die schönen Kamerapositionen sind. Also speichert man sich kurz vorher die Anlage ab und schaut erstmal. Dann lädt man wieder ein und positioniert die Kameras und die Aufrufsequenz der Kameras. Nun tackert man sich mit Stop+Go so durch die Stunde. Das kann man danach ruhig abspeichern, es ist dann nur die Frage: wie kommen Kameras und Sequenzen in die vorherigen Speicherstände, insbesondere Anlage0. Mit den Lua-Tables haben wir da wenigstens eine Chance.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

...dies im Forum hat mich neugierig gemacht...
einen Gleiskontakt an ein Zugende zu setzen ist prinzipiell schon möglich... die Zuglänge mit "layout:getVehicleGroupLength"... da von der Position der Lok ausgegangen werden muß und diese Koordinaten (meist) in der Lokmitte sind, muß noch 1/2 Loklänge abgezogen werden. "vehicle.length/2". Da ein Gleiskontakt für einen anderen Zug nicht "sichtbar" ist, wenn er von einem Zug überdeckt wird (wie es aussieht auch nicht im Grenzbereich)... noch ein kleiner Zuschlag...
 

l=layout:getVehicleGroupLength($("Industri-Lok"))-$("Industri-Lok").length/2+0.15

Aus der Drehung der Lok kann man (dank Quaternion:x) einen Richtungsvektor ableiten und mit der ermittelten Länge skalieren... so funktioniert es in jeder Lage (solange sie Strecke gerade ist)...
Gleiskontakt-setzen-01.thumb.jpg.50925766819c8c09b4b4456eaacd0502.jpg

Gleiskontakt-setzen-01.mbp

Gruß
EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo EASY,

das ist ja SUPER.

Damit kann man, wenn Mann denn das LUA-Script verstanden hat, davon bin ich aber noch meilenweit entfernt, an jeden beliebig langen Zug eine Lok ankoppeln lassen. (y).

Einer der Script-Modul-Bauer wird dazu sicher noch das Passende bereitstellen, oder?

Schöne Grüße
SputniKK

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy

Am 10.08 hattest Du eine Verzögerung ( Schalter ) gezeigt .

Ich wollte wissen ob es auch für sowas geeignet ist .

Screenshot_14.thumb.jpg.4aa931ba8d2537d3be8edae235dc817d.jpg

Screenshot_15.thumb.jpg.797e35b8e75594e7b6235241922746e1.jpg

Screenshot_16.thumb.jpg.5253c0fe20f2dc9609c1de5e7aa45743.jpg

Bekannt ist ja , das man ein Taster verknüpfen kann , auch deinen Schalter kann es - und nützlich ist es auch , wenn man in dem Fahrzeug ist ( Wartezeit ) .

Tolle Idee von Dir ! Gefällt mir 100%ig .

Viele Grüße

H:xnS

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

... zwischendurch ein Versuch einer Schiebebühne auf die schnelle...
SB_01.thumb.jpg.ca18387b36490cc84448419868dba03a.jpg

... die "Schiebebühne" ist ein Gleis als Weiche und wird je nach Weichenstellung verschoben.
... der Gleiskontakt behält seine Position in Schieberichtung, so steht er immer auf dem "Duchgangsgleis"...

SB_01.mbp

Gruß
EASY

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo EASY,

vor 3 Stunden schrieb EASY:

zwischendurch ein Versuch einer Schiebebühne auf die schnelle

verfolgst du damit ein bestimmtes Ziel oder ist das nur Just-for-Fun? Schiebebühnen lassen sich ja sehr bequem durch animierte 3D-Modelle erstellen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...