-
Gesamte Inhalte
3040 -
Benutzer seit
-
Letzter Besuch
Beiträge erstellt von EASY
-
-
Hallo,
vor 34 Minuten schrieb SualokinK:Dabei habe ich jedoch die "WheelSets" nur als leere Objekte an den richtigen Stellen in das Modell "Auflieger" aufgenommen und es funktioniert trotzdem.
Zur Info: WheelSets wertet nur die Koordinaten des Nullpunkes (des Objektes) mit diesem Namen aus. Ob das Objekt nun etwas darstellt oder (wie in diesem Fall) nichts, ist vollkommen egal. Also nicht wundern, sondern einfach verwenden...
Gruß
EASY -
Hallo @liftboy,
Was mir aufgefallen ist...
Das Ziel der Lok wird nicht gelöscht...
... beim Aufsetzen der Lok stimmt zwar die Anzeige (bis auf die erste Zeile!)...
... aber nur solange, bis das Ziel vor dem Aufsetzen nicht (manuell) gelöscht wurde.
Wenn ich das Ziel zuvor lösche, stimmt die Anzeige nicht mehr (außer in der ersten Zeile, in der letzten Zeile)
... wenn ich "Target Run" betätige... stimmt es wieder...
Bei einer Lok mit "falscher" Fahrtrichtung stimmt beim Aufsetzen prinzipiell die Anzeige...
... sie stimmt allerdings nicht mehr mehr nach Taste "Target Run"...
Es wird zwar die Fahrtrichtung richtig gesetzt aber es findet keine (korrigierende) Abfrage des Ziels statt, weshalb die Anzeige nicht angepasst wird.Ich habe Dein Skript etwas abgeändert...
... nun wird auch dieser Zustand angezeigt...
... und dieser auch...
Die erste Zeile wurde korrigiert bei einem Fahrzeug mit Antrieb...
... und die Anzeige reagiert jetzt auch darauf, wenn die Fahrtrichtung der Lok manuell geändert wird...
"GetVehicle" und "show" sieht nun so aus...
getVehicle = function(self) -- get vehicle auf dem "gleis" -- return object oder nil vehicles = layout:getVehiclesOn(self.gleis) for _,v in ipairs(vehicles) do if v:hasEngine() then self.vehicle = v return v,#vehicles end end self.vehicle = nil return nil,#vehicles end , -- --------------------------------------------------------------- show = function(self) -- zeigt die variablen auf "textfeld1" -- schreibt alles in eine table -- schreibt die table dann in das textfeld local texte = {} local t = "" local v,n = self:getVehicle() if v ~= nil then t = "vehicle with engine" table.insert(texte,string.format("%s", v.name )) table.insert(texte,string.format("drivingDirection %d", v.drivingDirection )) table.insert(texte,string.format("targetSpeed %2.2f", v.targetSpeed)) table.insert(texte,string.format("targetSpeedAbs %2.2f", v.targetSpeedAbs )) table.insert(texte,string.format("engine.active %s", tostring(v.engine.active))) v.target=self.ziel if v.target ~= nil then table.insert(texte,string.format("target %s", v.target.name)) v.target=nil else table.insert(texte,"target not in drivingDirection") end -- dump auf die console -- PrintTable(texte, 1) -- erzeugt einen string mit "\n" for i,v in ipairs(texte) do t = t.."\n"..v; end; else if n~=0 then t = "vehicle without engine" else t = "no vehicle" end end -- write den string in das textfeld self.textfeld.text = t end ,
und bei "start_target" wird das Ziel nach der Auswertung gleich wieder gelöscht...
start_target = function (self, v, ziel, speed) -- --------------------------------------------------------------- --[[ diese function ist das ergebnis aller versuche : " Aufgabe: - untersuche eine lok mit beliebiger richtung und speed - gebe ihr ein ziel - starte die lok mit richtig eingestellter richtung und speed" Methode: (Vorschlag von EASY) setze ein ziel-object als ziel in das vehicle.target werte dann die "target" property des vehicle aus wenn kein ziel gefunden (target==nil) drehe die drivingDirection um multipliziere die wunsch-speed(positiv) mit der drivingDirection vor dem setzen der speed muß die engine.active gesetzt werden ! --]] v.target= ziel -- Fahrziel setzen -- konnte Fahrziel gesetzt werden? (Aktuelle Fahrtrichtung in Richtung Gleiskontakt?) if v.target == nil then -- not in drivingDirection ! --> drivingDirection korrigieren v.drivingDirection = - v.drivingDirection else v.target = nil end v.engine.active = true -- speed an die drivingDirection anpassen v.targetSpeed = speed * v.drivingDirection -- ende routine return end -- end do_start()
... zum ausprobieren...
Minitest_speed-direction-pendeln-fahrstraßen-5a.mbpPersönliche Anmerkung: Für einen Programmierer ist Dein Verfahren zwar einfacher (weil am Stück und keine doppelten Funktionen) zu lesen, daß allerdings bei den einzelnen Aktionen (Taster xy wird betätigt) nur eine Funktion aufgerufen wird, macht es etwas schwieriger nachzuvollziehen, was genau bei dieser Aktion passiert... da muß man dann im übergeortneten Skript nachschlagen...
Gruß
EASY -
Hallo @BahnLand,
ein interessantes Konzept, das Du da ausgearbeitet hast
Da noch früh am morgen, lasse ich es erst einmal auf mich wirken, bis mein Gehirn hochgefahren ist.vor 9 Stunden schrieb BahnLand:Bitte beachte, dass du im Modell nur eine Textur als "_Custom"-Textur definieren kannst. Wenn Du für die Ladung eine separate Textur verwendest und diese als "_Custom" definierst, kann man für den Wagen selbst keine Tauschtextur mehr verwenden (und umgekehrt). Nur wenn Du den Anstrich des Wagens und die Farbgebung der Ladung in einer Textur vereinigst, welche dann als "_Custom"definiert wird, kann die Tauschtextur sowohl auf den Wagen als auch auf dessen Ladung angewendet werden.
Momentan ist die Textur für die Ladung relativ klein (512x512). Die Skalierung erfolgt über Kachelung in der Texturzuordnung. Ich sehe darin etwas den Vorteil, daß der Anwender nur eine (kachelbare) Textur für die Ladung benötigt und nicht die ganze Textur umbauen muß. Vor allem sind die meisten Texturen quadratisch, die Ladung aber rechteckig. Durch die "richtige" Kachelung in der Texturzuordnung müßte dann der Anwender nicht zuerst eine Textur in "richtigen" Verhältnis erzeugen (geht auch nur mit einer kachelbaren Textur, damit es keine Verzerrungen gibt) und diese dann in die Haupttextur mit einbauen (in der Haupttextur gibt es keine freie Stelle, die eine Kachelung zuläßt).
Ich halte es deshalb für einfacher wenn ich versuche Texturvorschläge für den Wagon umzusetzen um das Modell um Varianten zu erweitern.P.S. Sind noch Farbvarianten zu diesem Wagon bekannt?
Meinungen zu meinen Überlegungen gerne hier hinterlegen...
Gruß
EASY -
Hallo,
vor 40 Minuten schrieb streit_ross:Du hast zwar die Bedienungsanleitung noch nicht auf die Waggontür geschrieben,
... die Textur war einfach schon zu voll um den Text noch lesbar unterzubringen, und mal eben etwas vergrößern ist wegen 2^x nicht möglich...
vor 1 Stunde schrieb Chris06:Wird es für das Ladegut eine Tauschtextur geben?
Hatte ich mir so überlegt nur für die Ladung eine 2. Textur mit anlegen, dann ist es für den Anwender am einfachsten.
Ich weiß nur noch nicht, was ich mit der anderen Möglichkeit des Entleerens (Frontleeren) machen soll. Die Animation für das Mittenentleeren fixiert das Modell auf diese Funktion. Das einzige was mir dazu einfällt wäre aus einem Modell zwei zu machen mit jeweils der entsprechenden Animation...
... oder hat noch jemand eine bessere Idee dazu?Gruß
EASY -
Hallo,
Am 24.2.2024 um 01:43 schrieb BahnLand:Wenn der Wagen bis oben gefüllt ist, wird beim Entladen vermutlich zuerst der Wölbschieber geöffnet, damit das Ladegut schon mal "abfließen" kann. Das Kippen dürfte dann erst etwas später erfolgen, wenn sichergestellt ist, dass nichts mehr seitlich über den mittleren Wagenrand herausfließen kann. Die sich daraus ergebende Abfolge der Animationen stelle ich mir sehr interessant vor.
... Du kennst mich lange genug um zu wissen, daß mir so eine Herausforderung keine Ruhe läßt...
... so als erster Entwurf zum ausprobieren D26D76F4-ED9E-4122-861D-E92D82A09063
Anmerkungen und Anregungen, wie immer gerne.
Gruß
EASY -
Hallo,
vor 3 Stunden schrieb bigrala:Ich komme fast zu der Überzeugung, dass bei mir Hopfen und Malz verloren ist und eure Mühen umsonst sind.
... wenn Du Dich hinsetzt und einmal gemütlich mit einem Getränk (in dem die beiden Stoffe vorkommen) in der Hand darüber nachdenkst, kommt vielleicht doch noch die Erkenntnis, wann es sinnvoll sein könnte ein Schlagwort oder eine Variable zu setzen (prost!).
(Hinweis: manchmal ist etwas auch einfach nur abhängig vom Anwendungsfall und es gibt nicht die eine Antwort)Gruß
EASY -
Hallo @liftboy,
wenn die maximale Distanz der Erkennung von "isHeadingToward" nicht ausreicht, kann man den Gleiskontakt auch als Ziel setzen (geht auch wenn Lok steht).
$("Lok").target=$("Gleiskontakt") --Gleiskontakt als Fahrziel setzen if $("Lok").target~=nil then -- konnte Fahrziel gesetzt werden? (Aktuelle Fahrtrichtung in Richtung Gleiskontakt?) print("aktuelle Fahrtrichtung ist in Richtung Gleiskontakt") else print("aktuelle Fahrtrichtung ist entgegen in Richtung Gleiskontakt") end $("Lok").target=nil -- Fahrziel wieder löschen
Gruß
EASY -
Hallo,
vor 58 Minuten schrieb maxwei:Was bei mir auch schon lange herumgeistert wäre in Blender die Partikel-Animation.
Leider habe ich mich damit noch nicht beschäftigt, aber wäre das vielleicht eine Möglichkeit für dich?In meinem Fundus für Versuche, habe ich dieses Modell entdeckt...
Demodatei:
Demo Partikel 01.mbpich habe es dann aber nicht weiter verfolgt, da es doch sehr schnell sehr viele Objekte (und damit Polygone) gibt...
Gruß
EASY -
Hallo,
der Wagon (60F4611C-F919-4653-AFAF-F4B4E70B7045), der Wagonkipper (7792FF31-4398-4B15-8912-BFDA782D8DED) und die Entladestelle (25AEB613-1756-4DF5-A1DF-E488C4750D50) sind final hochgeladen. @Neo, bitte freigeben
Anmerkung: Da es für den Wagon mehrere Möglichkeiten für das Entladen gibt (Frontentladung links / rechts und Mittenentladung) habe ich für das (animierte) Entladen vom Ladegut noch nicht die entscheidende Idee (oder würde "voll", "leer" ausreichen?)
Wer eine gute Idee dazu hat... gerne melden.Gruß
EASY -
Hallo,
Am 6.11.2021 um 19:22 schrieb Goetz:Am allerbesten geht das mittels Tabellen, in denen diese Begriffe der Bezeichner einer Zelle sind. Damit erspart man sich die ganze if-Orgie komplett.
vor 4 Stunden schrieb bigrala:Bezüglich Tabelle, das hatte Götz angesprochen, dass das am allerbesten wäre.
Ich habe ein kleines Beispiel gebaut...
Wenn der entsprechende Zugtyp dem in der Lokvariablen "Zugtyp" entspricht, sollen die entsprechenden Signale umgeschaltet werden...
Die Lok vom Typ "Fernverkehr" hat folgende Variableneinträge...
Wichtig! Der Text in der Variablen "Zugtyp" entspricht dem Namen der Tabelle für die Signale...
... die Tabelle für die Signale hat folgende Einträge...
So sieht es für den "Nahverkehr" aus...
Die Darstellung für den Güterverkehr ist dem Schema entsprechend (wird deshalb nicht auch noch dargestellt)...
Der Eintrag in der EV sieht dann so aus...
Es gibt nur eine Abfrage ob die Variable "Zugtyp" existiert (als Absicherung für den Fall, daß ein Zug nicht typisiert wurde).
Der Vorteil dieser Methode liegt darin, daß weitere Zugtypen einfach nach dem Schema für die Variablen in der Lok erstellt werden können ohne die EV ändern zu müssen.
Zum ausprobieren...
2024-03-05-Zugtypen unterscheiden 01.mbpGruß
EASY -
Hallo,
vor 19 Minuten schrieb Chris06:Aber meine Frage war ob es möglich ist die Lichter mit der Fahrtrichtung zu schalten. ohne Gleiskotakt oder andere Auslöser.
Nur zur Info: Ohne Auslöser geht in der EV gar nichts.
Theoretisch gibt die Möglichkeit in einem Modell eine Animation zu definieren, die abhängig von der Fahrtrichtung ist, die kann allerdings nur der Modellersteller in das Modell mit einbauen.aus der wiki:
Spezialanimationen
- _AnimWheel - Animationszeit hängt von der Radrotation ab -> z.B. für Gestängeanimationen oder als Ersatz für _Wheel.
- _AnimRun - Animation wird einmalig abgespielt, sobald das Fahrzeug sich in Bewegung setzt.
- _AnimRunLoop - Wie _AnimRun, wird allerdings in einer Endlosschleife abgespielt.
- _AnimRunPositive - Animation wird einmalig abgespielt, sobald das Fahrzeug vorwärts fährt (z.B. für Zuglichter).
- _AnimRunNegative - Animation wird einmalig abgespielt, sobald das Fahrzeug rückwärts fährt (z.B. für Zuglichter).
- _AnimSpeed - Animation in Abhängigkeit der Zielgeschwindigkeit. Die Mitte der Animation entspricht der Geschwindigkeit 0.
Gruß
EASY -
Hallo @Chris06,
vor 17 Minuten schrieb Chris06:Danke für eure Anteilname zu diesen Thema. Ich glaube es ist sinnvoller hier einen Strich zu ziehen und damit dieses Thema zu beenden. Da scheinbar niemand eine Antwort auf meine Frage hat. Vielleicht gibt es ja auch keine Antwort weil es so nicht funktioniert. In diesen Sinne.
verstehe ich jetzt nicht ganz, warum Du aufgeben möchtest. Um ein Benutzerdefiniertes Ereignis aufzurufen, brauchst Du ein Ereignis in dem Du als Aktion das benutzerdefinierte Ereignis aufrufen kannst wie z.B. "Gleiskontakt wird betreten"...
.. hier rufst Du dein benutzerdefiniertes Ereignis mit folgenden Parametern auf...
... und so sieht mein überarbeitetes benutzerdefiniertes Ereignis aus...
Anmerkung: "ZNoRearLight"=falsch brauchst Du eigentlich nicht, da Du einem Fahrzeug mit Licht keine Lichtscheiben zu geben brauchst...
zum Ansehen und ausprobieren...
Lichtwechsel test 02.mbpGruß
EASY -
Hallo @Chris06,
kannst Du eine kleine Demoanlage hier einstellen. Die Fehlersuche wäre einfacher wenn man die Anlage selbst vor sich hat, als die EV nur als Bild zu sehen...
Gruß
EASY -
Hallo,
ich habe noch eine kleine Entladestelle für das "Mittekipp-Selbstenladen" gebastelt und meine Demoanlage erweitert, so daß beide Verfahren laufen...
2024-03-03-Wagons entladen.mbp
Anmerkung: Da keine Absicherung... (beide) Starttaster nur einmal betätigen...
Gruß
EASY -
Hallo,
Das Modell ist zwar noch nicht fertig, aber bevor ich weiterbaue, wollte ich wissen, wie eine mögliche Steuerung aussehen könnte und ob ich noch Anpassungen machen muß.
Deshalb habe ich eine kleine Demoanlage gebaut...
Hinweis: Der Startknopf ist nichts für nervöse Finger (nur einmal betätigen [Endlosschleife])...
Anmerkungen und Anregungen wie immer gerne...
Gruß
EASY -
Hallo,
Neugierig wie ich bin, habe ich mit dem Wagonkipper angefangen.
Diese Variante hat es mir angetan...
... sie ist zum Durchfahren.
Soweit bin ich bisher gekommen...
Ich hatte zuerst etwas Bedenken, ob sich der Ablauf im MBS darstellen läßt. Ich bin gerade dabei die EV für eine kleine Demo zusammen zu basteln...
Gruß
EASY -
Hallo,
vor 1 Stunde schrieb Wüstenfuchs:oder wir gaben irgendwie aneinander vorbeigeredet
... sehe ich auch so nachdem ich die Testanlage gesehen habe.
... die jeder Gleisharfe entsprechenden Ausfahrtsignale sind ja in den Gleiskontakten netterweise schon hinterlegt...
so würde dann "Gleiskontakt mit dem Schlagwort Gleisharfe SBf" wird betreten aussehen...
local signale=contact.variables["Signale"]-- alle Ausfartsignale der Gleisharfe local n=0 --Hilfszähler for i,s in ipairs(signale)do -- Widerholung für alle Signale if #layout:getVehiclesOn(s)~=0 then -- Signal besetzt? (mindestens ein Fahrzeug steht auf Gleiskontakt vom Signal) n=n+1 -- Zähler hochzählen end end if n==#signale then -- alle Signale besetzt? (Hilfszähler=Anzahl der Signale) FS=contact.variables["Fahrstraßen"] local x=math.random(1,#FS) FS[x].autoActivate=true FS[x].active=true end
Hat zumindest im Versuch einmalig funktioniert... die EV verfängt sich allerdings in einer Endlosschleife bei "Lok Einfahrt"... das habe ich allerdings nicht untersucht woran das liegt...
Gruß
EASY -
Hallo @liftboy
if $("Depot").count>0 then local tblFahrzeuge = $("Depot").entries print(tblFahrzeuge[0].name) -- (1) print(tblFahrzeuge[0].variables.einfahrt) -- (2) end
(1) geht nicht, weil Dein Zugriff nicht stimmt.
local tblFahrzeuge = $("Depot").entries liefert keine Liste zurück! sondern .entries ist ein Direktzugriff auf den Eintrag.if $("Depot").count>0 then print($("Depot").entries[0].name) -- (1) end
... dann wird der Name auch ausgegeben.
Gruß
EASY -
Hallo,
vor 3 Stunden schrieb Wüstenfuchs:Stimmt, hatte ich vergessen der Auslöser ist Fahrzeug betritt Gleiskontakt mit Schlagwort "Gleisharfe SBf".
wenn der Gleiskontakt der des Ausfahrtsignals ist, dann brauchst Du nur noch das Schlagwort (und evtl. die Signalstellung) in dem Skript anpassen und als Aktion "Skript ausführen" wählen, dann wird, wenn die Gleisharfe voll ist, der nächste Zug gestartet.
Gruß
EASY -
Hallo,
vor 2 Stunden schrieb streit_ross:Ich habe mal einen Verkäufer dieses Modells auf Kleinanzeigen angeschrieben mit der Bitte, mir ein vergrößertes Foto von der Türbeschriftung zu schicken. Hier sein Foto
danke! ...
(mal sehen, ob meine Textur den Roman noch zuläßt...)Gruß
EASY -
Hallo @Neo,
vor 2 Stunden schrieb Neo:ich kann gern eine Art Feststellbremse implementieren, um Wagons auch ohne "externe Hilfsmittel" vorm Wegrollen zu schützen.
... und wenn Du Dich gerade mit Wagons beschäftigst... vielleicht auch noch der automatischen Verzögerung etwas mehr Nachdruck verleihen (einstellbar?), so daß ein rollender Wagon der etwas schneller unterwegs ist nicht z.B. an einem Prellbock (oder Gleisende) wieder abprallt, sondern auch wirklich zum Stehen kommt...
Gruß
EASY -
Hallo,
vor 21 Minuten schrieb Wüstenfuchs:ist in Deinen Beispiel der Auslöser?
... das ist nicht der Auslöser sondern eine Aktion.
In Deiner Anfrage hast Du nicht definiert, welches Ereignis die Aktionen auslösen soll...
Gruß
EASY -
Hallo,
vor einer Stunde schrieb Wüstenfuchs:... oder Lua mit nur einen Befehl und möglichst nur einer Bedingung geht?
In lua könnte es so aussehen...
local signale=layout:getEntitiesByKeyword("Ausfahten HBF1")-- alle Signale mit dem Schlagwort local n=0 --Hilfszähler for i,s in ipairs(signale)do -- Widerholung für alle Signale if #layout:getVehiclesOn(s)~=0 then -- Signal besetzt? (mindestens ein Fahrzeug steht auf Gleiskontakt vom Signal) n=n+1 -- Zähler hochzählen end end if n==#signale then -- alle Signale besetzt? (Hilfszähler=Anzahl der Signale) signale[math.random(1,n)].state=1 -- zufälliges Signal auf 1 setzen end
Gruß
EASY -
Hallo,
ich danke Euch für die Klicks!
Am 23.2.2024 um 22:40 schrieb Roter Brummer:Ich weiß ja nicht, wie du die "Flecken" realisiert hast. Kann man da noch etwas anfassen und überblenden? Oder mehrere Ebenen mit hoher Opazität übereinander legen?
Ich erstelle meine Texturen in CorelDraw. Die "Flecken" sind ein Füllmuster vom CorelDraw... ich werde mal noch etwas mit den Parametern spielen...
Am 24.2.2024 um 01:43 schrieb BahnLand:Wenn der Wagen bis oben gefüllt ist, wird beim Entladen vermutlich zuerst der Wölbschieber geöffnet, damit das Ladegut schon mal "abfließen" kann. Das Kippen dürfte dann erst etwas später erfolgen, wenn sichergestellt ist, dass nichts mehr seitlich über den mittleren Wagenrand herausfließen kann.
... wäre so vom Ablauf her logisch (allerdings weiß man bei der DB nie so richtig, ob es auch so gesehen wird)...
Ich glaube es ist das Modell von Liliput... hier gibt es eine "Bedienungsanweisung" (oder so ähnlich) auf der Tür... ich habe nur noch kein scharfes Foto gefunden auf dem man es lesen kann...
Am 24.2.2024 um 01:43 schrieb BahnLand:Die sich daraus ergebende Abfolge der Animationen stelle ich mir sehr interessant vor.
... ich mir auch... zumal sich die Herausforderung ergibt, daß das Beladen nicht die Umkehrung von Entladen ist. Der Anfang von Entladen sollte idealerweise das Ende von Beladen sein aber mit unterschiedlichen Animationen, die zum Ziel führen...
...und ob da der Problemstellung nicht genug wären, kann der Wagon ja schließlich auch noch durch Kippen über die vordere oder hintere Klappe entladen werden...
(Das Foto aus "MIBA Spezial 76 vom April 2008" zeigt zwar einen anderen Wagon aber es ist auch für diesen Wagon so vorgesehen)
(Anmerkung: Dir Kippvorrichtung ergibt ein interessantes nächstens Projekt...)Gruß
EASY
EASY's kleiner Modellbau
in Modelle
Geschrieben · Bearbeitet von EASY
Hallo,
Das Beladen ist hinzugekommen. Für das Selbstentladen (Mitte-Kippen) habe die Demoanlage angepasst...
Dem Vorschlag von @BahnLand folgend sieht der Ablauf nun so aus...
Beladen:
Animation "01 Laden", vorwärts von Anfang
Animation "00 Entladen" muß auf Anfang stehen.
Entladen:
Animation "00 Entladen" Rückwärts von Ende.
Animation "01 Laden", muß auf Anfang stehen.
Das Testmodell ist als Entwurf hochgeladen D26D76F4-ED9E-4122-861D-E92D82A09063
... und zum Ansehen
2024-03-10-Selbstentladen 01a.mbp
Es wäre schön, wenn jemand (oder mehrere) sich bereit erklären würde zumindest den prinzipiellen Ablauf (Laden / Entladen) selbst in einem eigenen MBS-Projekt umzusetzen und eine Rückmeldung geben würde ob es so handhabbar ist.
(Hinweis für Verzögerungen: Das Beladen dauert ca. 6 Sekunden, das Entladen ca. 12 Sekunden)
Gruß
EASY