Jump to content

gmd

Mitglieder
  • Gesamte Inhalte

    418
  • Benutzer seit

  • Letzter Besuch

4 User folgen diesem Benutzer

Letzte Besucher des Profils

4103 Profilaufrufe
  1. Definitiv langsamer, und auch das laden dauert laenger, was nicht so entscheidend ist. Meine monster anlage die ich gelegentlich zum testen meiner software benutze laeuft nur noch mit 6 fps V8 mit 12 fps. Zugegeben sie ist gross, 60,000+ objekte, 30+ zuege. Das ist zu langsam. Ich kann nicht wirklich beurteilen welche moeglichkeiten Neo hat, da ich zuwenig ueber die grafik engine weiss, aber ich vermute dass er noch nicht am ende ist die neuen gpus zu nutzen. Ich habe keine problem eine 4090 in den rechner zu setzen, wenn ich weiss dass sie auch voll genutzt wird, was ich derzeit bezweifele. Ich hoffe auf verbesserungen in den naechsten versionen. Bis ich meine software einsatzbereit habe ist das sicher der fall , aber das nuetzt dir ja nicht so viel. Optimierungen oder aenderungen an grundsaetzlichen funktionen sind immer ein problem mit solch umfangreichen programmen, das will gut ueberlegt sein und auch nicht immer moeglich. Ich bin sicher Neo hat schon darueber nachgedacht und ist sich der tatsache bewusst. Gruss gmd
  2. Tolles projekt, verfolge das mit interesse gruss gmd
  3. Hallo, wird wieder etwas langsamer werden. Ab morgen einpacken und dann wieder unterwegs auf dem naechsten trip fuer 4 monate . Nut ein paar stunden pro woche am computer. Hoffentlich ein paar fortschritte wenn ich ich zurueck bin . Habe nur umstrukturiert, etwas klarere linien geschaffen im program und an einem punkt ueber 600 fehler produziert .. hat ne weile gadauert das wieder aufzuraeumen, hat sich ber gelohnt wenn ich nach vorne schaue. Jeder der programmiert kennt ja solche punkte, an denen sich ein konzept totlaeuft und aenderung braucht. Wenn eine tabelle 50 attribute hat, dann muss man das halt teilen. gruss Gmd
  4. Neo, habe noch nicht den versuch gemacht die funktionen der alten schnittstelle umzustellen, fuer steuerung benutze ich die neue schnittstelle. Ich habe bisher nur folgenden wissensstand: Ich erkenne bisher nur meist steuerfunktionen und nach deinen eigenen worten ist das ja auch das ziel der schnittstelle. Die alte schnittstelle verwende ich zum einlesen aller objekte oder selektierter objekte, coordinaten, rotationen, plazieren von objekten, lesen guid, umbenennen objekte, duplizieren von objekten, alles funktionen die mit dem anlagenbau zu tun haben und nicht primaer mit der steuerung. Verbergen objekte, ersetzen objekte usw. also alles konstruktionsfunktionen. ich weiss dass ich mit layout.xxx viele der funktionen ersetzen kann, also coordinaten, transformation (rotation), aber ich habe noch nicht rausgefunden wie ich 100,101,130,131,134,135,136,143,144 auf einfache art ersetzen kann. Einiges geht bestimmt ich habe es nur noch nicht gefunden. Wenn du mir da helfen kannst waere das gut, dann kann ich sagen ob was fehlt. Derzeit waere das falsch, da mein wissen noch nicht gesichert ist um zu sagen ob etwas fehlt. Die ereignisse sind ja kein thema, die sind ohnehin viel detaillierter mit der neuen schnittstelle. Ich lasse zwei offene windows mit beiden ports laufen, da kann man die beiden schnittstellen gut vergleichen und die parsersoftware anpassen. Mit Json sind die kommandos nicht mehr so einfach abzusetzen, die muss man dann vorbereiten und bei bedarf pasten zum testen. Gruss Gmd
  5. Hallo, wen es interessiert die derzeitige liste der block eigenschaften, die ich verwalten kann und auf den der AI fuer die steuerung aufbaut. Habe wert darauf gelegt, dass viele parameter fuer den betrieb als defaults definiert werden koennen, das reduziert erst mal den definitionsaufwand drastisch, erlaubt aber den stueckweise ausbau und verfeinerung des betriebs fuer unterschiedliche zugtypen und strecken. Realistische geschwindigkeitsunterschiede zwischen zugtypen koennen damit abgebildet werden und auch spontan zu entscheidende ausweichmanoever werden moeglich bzw. notwendig, damit hat der betrieb auch eine art zufaelligkeit trotz fahrplaene. Ist moeglicherweise noch nicht vollstaendig , werde das aber bei der schrittweisen implementierung des control AIs merken. Gruss Gmd Blockeigenschaften in Datenbank Identification Attributes User defined and partially traced ulong Id Unique Id of the record ulong? SectionId The section the block is located in ulong? StationId The station the block is located at ulong? DepotId Block may belong to a Depot not a station string BlockKennung Comprises segment name and block number int BlockNummer Just the block number, unique on the set short? Konfiguration The main purpose of the block, see Enum short? BlockRichtung Start direction of block string BlockStartGleis Name of the first track or switch of the block string BlockEndGleis Name of the last track or switch of the block string Beschreibung Dscription of the block short? IstEndblock If the block ends with no other connection Block Charactersistics Determined with block tracing float? Blocklaenge Total length of the block float? Bremsweg Length from brake contact to stop contact float? AusfahrtLaenge Length from stop contact to end track float? Bremsbereich Distance stop contact to signal – safety zone float? MaxZugLaenge Maximum length of train safely in block float? HalteLaenge Length between last switch and stop contact Block Track Elements Determined with block tracing short? AbzweigungVoraus Turnoff ahead of braking contact short? EinfahrtVoraus Incoming Lane ahead of braking contact short? KreuzungVoraus Crossing ahead of braking contact ulong? EingangsweicheId Switch at start of block – foreign key float? EingangsweichePosition Distance from first track to switch short? EingangsweicheVorhanden Flag if entry switch is present string EingangsweicheName Name of entry switch ulong? EinfahrtweicheId Merge in switch – foreign key float? EinfahrtWeichePosition Distance from first track to switch short? EinfahrtweicheVorhanden Merge in switch exists string EinfahrtWeicheName Name of merge in switch ulong? AbzweigweicheId Turn off switch – foreign key float? AbzweigweichePosition Distance from first track to switch short? AbzweigweicheVorhanden Flag if turn off switch exists string AbzweigweicheName Turn off switch name ulong? AusgangsweicheId Exit switch – foreign key float? AusgangsweichePosition Distance from first track to switch short? AusgangsweicheVorhanden Flag if exit switch exists string AusgangsweicheName Exit switch name Block Connections Determined with route tracing ulong? VorgaengerId1 Block connected to start track or switch lane1 ulong? VorgaengerId2 Block connected to entry switch lane2 ulong? VorgaengerId3 Block connected to entry switch lane3 ulong? NachfolgerId1 Block connected to end track or switch lane1 ulong? NachfolgerId2 Block connected to end switch lane 2 ulong? NachfolgerId3 Block connected to end switch lane 3 ulong? AbzweigId1 Block connected to turnoff lane 1 ulong? AbzweigId2 Block connected to turnoff lane 2 ulong? AbzweigId3 Block connected to turnoff lane 3 ulong? EinfahrtId1 Block connected to merge in lane 1 ulong? EinfahrtId2 Block connected to merge in lane 2 ulong? EinfahrtId3 Block connected to merge in lane 3 Block Operation Conditions User defined characteristics short? DoppeltraktionErlaubt Two coupled locomotives may enter short? AntriebErlaubtDampf Steam engines are allowed on the track short? AntriebErlaubtElektrisch Track is ready for electrical locomotives short? AntriebErlaubtDiesel Track can be used by diesel locomotives short? LokWechselErlaubt Lokomotive change permitted short? RichtungswechselErlaubt Switch of train direction permitted short? GegenverkehrErlaubt Two way traffic permitted short? AbzweigMitHalt Turnoff second train while train stops short? KreuzfahrtMoeglich Train can cross block short? KreuzfahrtWaehrendHalt Train can cross block while other train stops short? BlocksperrungMoeglich Block can be locked short? AusweichErlaubt Use of a siding permitted short? AusweichVorhanden Siding exists short? UseBlockDefaults Flag if block defaults should be activated short? UseVehicleDefaults Flag if vehicle defaults should be activated Block Default Types User defined types and values for operation sbyte? IsBlockDefault Default valid for a block sbyte? IsBlocktypeDefault Default valid for a block type sbyte? IsSetDefault Default globally valid for the set sbyte? IsVehicleDefault Default for a vehicle sbyte? IsTrainDefault Default for a train string VehicleType Vehicle type for vehicle default string TrainOpNumber Train operation number for train default Block Default Values float? VerzoegerungEk Deceleration at entry contact float? VerzogerungBk Deceleration brake contact float? BeschleunigungHk Acceleration stop contact float? BeschleunigungAk Acceleration exit contact short? GeschwindigkeitEg Speed at entry contact track short? GeschwindigkeitBg Speed at brake contact track short? GeschwindigkeitHg Speed at stop contact track short? GeschwindigkeitAg Speed at exit contact track short? MingeschwindigkeitBk Minimum speed at brake contact track short? MingeschwindigkeitEk Minimum speed at entry contact track short? GeschwindigkeitHp Speed at stop contact when leaving short? WartezeitHg Waiting time at stop track short? WartezeitHk Waiting time at stop contact short? HatHaltepunkt Has short stop point float? HaltepunktVerzoegerung Deceleration at brake contact float? HaltepunktBeschleunigung Acceleration at stop contact short? HaltepunktHatvorsignal Short stop has pre signal short? HaltepunktHatrangiersignal Short stop has shunting signal short? WartezeitHp Waiting time short stop signal short? WartezeitHkg Waiting time at short stop wait track Block Train Type Permissions short? ZugtypGueter Cargo train allowed short? ZugtypLokal Local train short? ZugtypRegional Regional train short? ZugtypFern Long distance train short? ZugtypSpezial Special train short? ZugtypServive Service train
  6. Hallo an alle, Habe jetzt die datenstruktur zum fuettern der ersten stufe des AI fertiggestellt. Es gibt eine Json version alsauch eine version in der datenbank auf der der AI arbeitet. Hier nur ein kleiner Ausschnitt weiter unten als beispiel. Da groessere Json strukturen nicht sehr freundlich zu lesen sind hat mein programm auch eine einfache visualisierung fuer einen block mit seinen moeglichen komponenten. Das sieht dann so aus: Hier sind alle elemente zunaechst eindeutig benannt. Dafuer gibt es andere funktionen. Ein endgueltiger name wird vorgeschlagen und kann uebernommen werden. Der prefix des namens ist das segment und der postfix ist die blocknummer. Die weichen sind alle erkannt in welcher richtung sie liegen und wie sie befahren werden, als einfahrt oder abzweig usw. Fuer einen block koennen im eigenschaftsfenster einige parameter gesetzt werden, die dann im betrieb relevant werden. Beispiele von blockkonfigurationen, die verschiedene nutzung ermoeglichen. Weichen zu beginn, am ende, oder auch in der mitte sind optional und haben unterschiedliche verwendungsregeln, je nach blocktyp. Einfahr-,Brems-,Halte- und Ausfahrgleise sind markiert. Die absicht ist, den AI in der ersten stufe all blockvarianten erkennen zu lassen ohne alle kontakte und signale gesetzt zu haben. Sind vorschlaege vorhanden habe ich funktionen kontakte und signale automatisch zu plazieren und die erkennung fortzusetzen oder zu wiederholen, bis die gesamte anlage erkannt und definiert ist. Dabei wird die tracer lock vom AI gesteuert und die weichen geschaltet. Der AI ist nun in der lage verknuepfungen zwischen den bloecken herzustellen und zu erkennen wo bloecke mit weichen verbunden sind. Daraus ergeben sich notwendige schutzeinrichtungen (signale) es sei denn ein abschnitt is zu kurz (minimum zuglaenge erforderlich plus sicherheitsbereiche), dann bleibt er ungeschuetzt und wird als solches im betrieb beruecksichtigt. Unten ein kleines beispiel der Json struktur zur blockdefinition. Damit lassen sich alle elementaren fahrwege beschreiben. Die definition von routen ist der naechste schritt. { "BlockComponents": [ { "type": "track", "timestamp": "2024-11-26T11:31:54Z", "vehicle": { "name": "Tracer", "type": "Loc", "speed": "na", "rotation": "121.9843" }, "track": { "name": "6001@64-JK_S01", "segment": "JK_S01", "guid": "{47D517F6-AC25-4E62-BEA3-E7DA7149A435}", "rotation": "31.98428", "use": "8", "length": "20.4", "type": "11", "state": "DU" } }, { "type": "switch", "timestamp": "2024-11-26T11:31:55Z", "vehicle": { "name": "Tracer", "type": "Loc", "speed": "na", "rotation": "121.9842" }, "track": { "name": "6070-1@53-JK_S01", "segment": "JK_S01", "guid": "{5732350C-F049-4BEB-8F22-7D83282EAD0C}", "rotation": "-31.98427", "use": "EIW", "length": "16.81355", "type": "4", "switchState": "1", "direction": "ER", "state": "EIW" } }, { "type": "signal", "timestamp": "2024-11-26T11:31:56Z", "vehicle": { "name": "Tracer", "type": "Loc", "speed": "na", "rotation": "121.9844" }, "signal": { "name": "Formvorsignal 2@5-JK_S01", "segment": "JK_S01", "guid": "{7E4AAF26-0023-408F-8F42-C8D781AFD241}", "rotation": "-148.0157", "use": "1", "position": "1", "type": "1", "state": "VS" } }, { "type":"contact", "timestamp":"2024-11-26T11:32:11Z", "vehicle":{ "name":"Tracer", "type":"Loc", "speed":"na", "rotation":"-48.26498" }, "contact":{ "name":"Gleiskontakt@56-JK_S01", "segment":"JK_S01", "guid":"{E2A3CA8B-50A7-4247-9C02-4DC0306E1ED6}", "rotation":"-138.6383", "use":"2", "value":"0", "type":"0", "state":"BK" } } ] } gruss Gmd
  7. gmd

    Autotuning

    Sorry, Ich hatte meinen kommentar auf Easys antwort bezogen und die autos und nicht die trucks .. bleib beim Modell mit den trucks rechteckig ist besser hier denke ich. Habe halt auf einen alten post geantwortet.. werde in zukunft deutlicher sein. Keep up the good work gruss Gmd
  8. gmd

    Autotuning

    sehe ich auch so, ist aber ein schoener versuch, mehr beleuchtete Objekte sind immer wilkommen Gmd
  9. Neo, bei meinen Bemuehungen meinen eigenen Objektkatalog zu organisieren und die Seitenbilder zu erzeugen um Zuege auch graphisch zusammenzustellen ist mir aufgefallen, dass sehr viele Objekte viele Variationen haben, mehr als nur 3. Das ist ok, ich kann das jetzt behandeln, allerdings ist es fuer die Benutzung des MBS-Katalogs schade dass soviele schoene Objekte so verborgen sind. Es werden ja auch nur maximal 3 Beispielvariationen angezeigt, daher ja auch die Bildbegrenzung, und man muss das Objekt plazieren um and die weiteren Variation ranzukommen und kann die auch nur einzeln anschauen, zumindest ist es moeglich mit Tastaturcursor die Variationen schnell abzurufen. Mein Vorschlag ist, in der freien Ecke der Katalogbilder ein symbol zu plazieren mit der Anzahl der Variationen dieses Objektes. Und dazu die Moeglichkeit das symbol anzuklicken und alle Variationen zu sehen, oder falls du die Bilder nicht erzeugen willst, eine Plazierungsfunktion zu schaffen, die wie bei Duplizieren Mehrfach, nach klick auf die Grundplatte die Variationen nebeneinader plaziert. Man kann dann ja die ungewuenschten Variationen entfernen. Ich denke dies wuerde den Bemuehungen der Modellbauer, die diese Modelle und Varianten zur Verfuegung stellen, mehr gerecht werden. Ich weiss den Vorteil einer kompletten Uebersicht der Variationen zu schaetzen, seit ich alle Variationsbilder erzeugen kann und verwende. Ist ja nicht uebermaessig wichtig, wuerde meiner Meinung nach aber den Katalog bereichern. Gruss Gmd
      • 4
      • Gefällt mir
  10. Hallo, just for fun, wie wir hier sagen, habe ich dem ChatGPT mal eine Frage zum MBS gestellt, und zwar die Frage nach den "simulierten subroutinen". Hier ist was ich zuerueckbekommen habe: Frage: kann das 3d modellbahnstudio in LUA subroutines aufrufen Antwort: Im 3D-Modellbahn Studio können Lua-Skripte verwendet werden, um die Steuerung von Modellbahnen zu automatisieren. Ob und wie Subroutinen aufgerufen werden können, hängt von der spezifischen Lua-Implementierung innerhalb des Studios ab. In der Regel unterstützt Lua in diesem Kontext folgende Mechanismen: 1. Funktionen definieren und aufrufen Du kannst in Lua Funktionen definieren, die wie Subroutinen arbeiten, und diese aus anderen Funktionen oder Ereignissen heraus aufrufen. Beispiel: lua Copy code -- Definition einer Subroutine function meineSubroutine(parameter) print("Parameter: " .. parameter) end -- Aufruf der Subroutine meineSubroutine("Testwert") 2. Verwendung von Ereignissen Im 3D-Modellbahn Studio werden Lua-Skripte oft an Ereignisse gebunden, z. B. an Zugbewegungen, Weichenstellungen oder Signale. Diese Ereignisse können Funktionen auslösen, die wiederum andere Subroutinen aufrufen. Beispiel: lua Copy code -- Ereignisbindung function onTrainArrival(train) print("Zug angekommen: " .. train) meineSubroutine(train) end -- Subroutine function meineSubroutine(trainName) print("Bearbeite Ankunft für Zug: " .. trainName) end 3. Rückgabewerte aus Subroutinen Subroutinen können Werte zurückgeben, die in anderen Funktionen verwendet werden: lua Copy code function berechneGeschwindigkeit(entfernung, zeit) return entfernung / zeit end local geschwindigkeit = berechneGeschwindigkeit(100, 2) print("Geschwindigkeit: " .. geschwindigkeit) 4. Lua-Module Wenn das Studio Lua-Module unterstützt, kannst du Funktionen in separaten Dateien organisieren und in deinem Hauptskript importieren. lua Copy code -- Modul: mymodule.lua local mymodule = {} function mymodule.zeigeNachricht() print("Nachricht aus dem Modul!") end return mymodule lua Copy code -- Hauptskript local mymodule = require("mymodule") mymodule.zeigeNachricht() Unterstützung im 3D-Modellbahn Studio Falls du Subroutinen in deinen Lua-Skripten nutzen möchtest, überprüfe: Dokumentation des Studios: Die Lua-API des 3D-Modellbahn Studios könnte Einschränkungen oder zusätzliche Funktionen bieten. Ereignissystem: Funktionen, die mit Ereignissen des Studios verknüpft sind, könnten Einschränkungen bei der Parameterübergabe oder Rückgabe haben. Falls du ein konkretes Beispiel hast, das du umsetzen möchtest, kann ich dir helfen, das Skript entsprechend anzupassen! Ist interessant Ich verwende ChatGPT intensiv fuer meine programmierung und auch fuer das pruefen von texten und optimieren von code. Gruss Gmd
      • 3
      • Gefällt mir
  11. Hier eine demo F3B894BE-083C-4BA5-AF2D-47D96E71973F ein generisches script mit vielen function calls, alle script komponenten sind allgemein und werden nur ueber die anfaenglich intialisierten tabellen gesteuert. das sollte die frage eigentlich beantworten denke ich, oder habe ich da etwas uebersehen ? gruss Gmd
  12. Ich melde mich, falls ich ein problem habe. In jedem fall ist es besser immer erst einmal selbst ueber einen sachverhalt nachzudenken und nicht einfach eine loesung kopieren. Ich suche ja nach abstraktionen, anwendbar auf verschiedene scenarios aber erzeugt mit den gleichen werkzeugen. Am beispiel ist das vielleicht einfacher zu erklaeren: Nimm mal meine baustelle als gegenstand und stelle dir vor dass die verschiedenen kontakte gesetzt sind. Alle kontakte sind selektiert, das programm liest die kontakte mit koordinaten ein. Jetzt hast du ein netzdiagram mit den kontakten als knoten auf dem bildschirm und jetzt kannst du verbindungen ziehen, mit parametern, die die bewegungen und animationen definieren. An den knoten koennen aktivitaten angehaengt werden, die dann angesteuert werden. Da die neue schnittstelle erlaubt alle ereignisse auszuloesen und auch scripte zu laden, laesst sich das automatisieren. Dann muss man keinen code mehr schreiben oder bedingungen auswaehlen etc. Die EV mit ihrer graphischen oberflaeche ist die grundebene, die diagramm definition is eine logische ebene darueber und erzeugt die anweisungen fuer die logische ebene darunter. Und wenn man das noch weiter treibt dann kann man oberhalb der diagram definition einen AI legen der auf text und/oder spracheingabe reagiert. Was bleibt ist das verlegen der notwendigen spuren, aber auch da kann man automatismen einbauen wenn die kontakte gesetzt sind. Sicher nicht vollautomatisch, ein manuelles anpassen der spuren wird in vielen faellen notwendig sein. Allerdings wird es faelle geben wo ein vordefiniertes spurgeflecht mehrfach verwendet werden kann und automatisch plaziert wird. Das sind meine Scenarien. Ein anwendungsfall ist zum beispiel the fuessgaengerverkehr auf einem bahnsteig oder in einer fussgaengerzone. Es koennen dabei immer die gleichen spurkonfiguration verwendet werden, mit verschiedenen figuren und unterschiedlichen bewegungen. Zum beispiel kann damit auch eine "rushhour" simuliert werden oder wenig betrieb am abend. Das ist ja mit dem MBS moeglich aber duplizierung und anwendung auf einen anderen fall mit anderen figuren ist nicht ganz so einfach, da muss man schon recht abstraktes LUA schreiben mit einigen definitionstabellen. Ich hoffe das ist einigermassen klar. Wenn die grundlagen gelegt sind, sind die anwendungen endlos. Ist halt eine andere art zu "basteln". gruss Gmd
  13. Hallo und gruesse aus Australien, 35 grad heute, aber nur heute, morgen wieder kuehler. Also heute ein tag fuer den computer mit klimaanlage an. Habe meine behandlung von variationen und deren bilder vervollstaendigt. Kann jetzt auch alle variationen eines objektes verwalten und abbilden. Damit kann ich dann auch alle zugvarianten bilden und auf dem MBS plazieren. Das Beispiel unten ist der Siemens Vectron mit seinen 16 varianten. Nicht dass das wirklich wichtig ist, aber gelegentlich mache ich einfach ein paar einfachere erweiterungen bevor ich mich dann wieder an etwas muehsamere aspekte heranwage. Habe jezt auch das kapitel betriebsansichten weitergefuehrt. Darunter verstehe ich visualisierungen bestimmter logischen aspekte bei denen eine gruppierung von ereignissnachrichten und kommandos, sowie variableninhalte, hilfreich sind eine steuerung zu ueberwachen oder auch scripte zu testen. Ok, das klingt abstrakt, hier ein beispiel eines widgets blockmonitor, das fuer jeden block auf der anlage dynamisch eingerichtet werden kann und dann die wichtigsten informationen anzeigt. Gleiches gibt es dann auch fuer andere betriebs aspekte, zb. ampeln and grosser kreuzung, gueter verladung oder generell animationen. Hier das filmchen dazu. Blockmonitor Widget Noch einen schoenen Sonntag. Gruss Gmd
  14. Perfekt ! Danke fuer den tip und tolles beispiel, genau solche scenarien suche ich. Es gibt ja eine menge module, allerdings sind die bespiele die ich suche oft darin vergraben, deshalb der post und die frage. Danke, freue mich ueber die antwort. Gruss Gmd
×
×
  • Neu erstellen...