Jump to content

EASY

Mitglieder
  • Gesamte Inhalte

    3041
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von EASY

  1. Hallo @Neo, Bei meinem aktuellen Projekt muß ich die ganze Animation neu einteilen und ergänzen. Ich habe einen kleinen Versuch gestartet und bei einem einfachen Objekt nur eine Animation in der LOD0 definiert. LOD1 und LOD2 sind ohne Animation. Das Modell wird "trotzdem" auch aus einem weiten Blickwinkel animiert, was mich zu der Frage führt, ob ich nun prinzipiell die Animationen in LOD1 und LOD2 löschen kann, so daß ich nur LOD0 überarbeiten muß (es ist auch eine Bones-Animation [skinning] dabei außerden sind die Animationen in einer .anim unterteilt)? Gruß EASY
  2. EASY

    EASY's kleiner Modellbau

    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
  3. EASY

    Renault Magnum

    Hallo, 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
  4. 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.mbp Persö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
  5. EASY

    EASY's kleiner Modellbau

    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. 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
  6. EASY

    EASY's kleiner Modellbau

    Hallo, ... 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... 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
  7. EASY

    EASY's kleiner Modellbau

    Hallo, ... 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
  8. Hallo, ... 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
  9. 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
  10. EASY

    EASY's kleiner Modellbau

    Hallo, In meinem Fundus für Versuche, habe ich dieses Modell entdeckt... Demodatei: Demo Partikel 01.mbp ich habe es dann aber nicht weiter verfolgt, da es doch sehr schnell sehr viele Objekte (und damit Polygone) gibt... Gruß EASY
  11. EASY

    EASY's kleiner Modellbau

    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
  12. Hallo, 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.mbp Gruß EASY
  13. Hallo, 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
  14. Hallo @Chris06, 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.mbp Gruß EASY
  15. 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
  16. EASY

    EASY's kleiner Modellbau

    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
  17. EASY

    EASY's kleiner Modellbau

    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... Wagonkipper 01.mbp Hinweis: Der Startknopf ist nichts für nervöse Finger (nur einmal betätigen [Endlosschleife])... Anmerkungen und Anregungen wie immer gerne... Gruß EASY
  18. EASY

    EASY's kleiner Modellbau

    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
  19. Hallo, ... 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
  20. 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
  21. Hallo, 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
  22. EASY

    EASY's kleiner Modellbau

    Hallo, danke! ... (mal sehen, ob meine Textur den Roman noch zuläßt...) Gruß EASY
  23. Hallo @Neo, ... 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
  24. Hallo, ... 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
  25. Hallo, 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
×
×
  • Neu erstellen...