Jump to content

EASY

Members
  • Content Count

    2,023
  • Joined

  • Last visited

3 Followers

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hallo, ... die Achterbahn von maxwei hat mich dann doch neugierig gemacht, ob man Blender Physiks auch nehmen kann um Animationen zu erstellen. Da sich diese Animationen auch "backen" lassen, geht es auch prinzipiell fürs MBS (nur Keyframe Animation). Mein Versuchsaufbau sieht so aus... ... und so nach Ablauf der Animation... Wer interesse hat, kann sich das Ergebnis ansehen... unter DA230A47-329F-4BC2-BD45-8FE53159A300 ist das Modell als Entwurf hochgeladen... und wer es sich im Blender ansehen möchte... in der .zip ist das Blendermodell und einmal roh( mit Physiks Definitionen) und einmal mit gebackener Animation und eine kleine Textur... Versuche mit Physiks.zip (Hinweis: Dateien sind erstellt mit Blender 8.1 und gehen auch nur mit Blender 8.x) Anmerkung: ... die Parametrierung folgt etwas undurchsichtigen Gesetzen... und ich weiß nicht ob da überhaupt ein Physik-Studium helfen würde...) Gruß EASY
  2. EASY

    Jim Knopfs Bastelecke 2020

    Hallo Axel, ... Deine Art Segel zu setzen hat technisch gesehen interessante Aspekte (...konnte ich mir nicht ganz verkneifen... aber die Idee an sich ist gut) Gruß EASY
  3. EASY

    Maxweis Modellbau-Werkstatt

    Hallo Max, super gemacht... und noch ein extra für die Effekte in der Beleuchtung vom Schriftzug... (...nur 'mitfahren wollen' ist immer noch nicht [nicht einmal vorwärts...]) Gruß EASY
  4. EASY

    FeuerFighter´s Modellbau ab Version 5

    Hallo FeuerFighter , ... der "Regenbogen" ist ein toller Effekt (hast Du sehr schön ungesetzt)... ich verstehe nur nicht so ganz, was was dahintersteckt... ... darum muß ich mal ganz dumm fragen... ist das so (als Logo) oder ein Graffiti? Gruß EASY
  5. EASY

    Schnittstelle und Lua

    Hallo Andy, ... habe ich mir auch schon mal angeschaut. Bisher verstehe ich es allerdings eher als eine Art "Verteiler" als wie Multithreading (man muß eine coroutine anhalten, damit die nächste weiter arbeiten kann)[?]... ...da ich momentan zu diesem Thema in Lua einiges an Möglichkeiten angesehen habe, mir allerdings dazu noch kein Plan eingefallen ist, lasse ich es erst einmal auf mich einwirken (festbeißen bringt nicht wirklich voran)... bis dahin... P.S. Lua kann man auch in der Pfeiffe rauchen... dann kommt man auf einem Lua-Trip... Gruß EASY
  6. EASY

    V5 Modelle von fmkberlin

    Hallo Frank, ... sorry, ich war diese Woche auf einem Lua-Trip und habe Deine skalierbaren Ladungen erst heute entdeckt... hat mir sofort gefallen, da es die Umsetzung einer Möglichkeit ist, die zwar existiert aber nicht so offensichtlich ist (so etwas gefällt mir besonders) und ich wollte auch etwas dazu schreiben, da mir spontan die eine oder andere Idee kam, was möglich wäre (aber hast Du ja schon umgesetzt)... also nicht gleich ein Paar Tage später schon motzen... gib einem Spätzünder wie mir eine Chance sich dazu zu äußern... Gruß EASY
  7. EASY

    Schnittstelle und Lua

    Hallo, ich habe die Kommunikation über die Schnittstelle zwischen V4 und V5 mal rudimentär(!) hergestellt. Der Testaufbau sieht folgendermaßen aus: ... wird der Schalter im MBS-V4 auf "ein" gestellt fährt die Lok im MBS-V5 vorwärts und bei Schalter "aus" rückwärts. ... wird der Schalter im MBS-V5 auf "ein" gestellt fährt die Lok im MBS-V4 vorwärts und bei Schalter "aus" rückwärts. (den Testaufbau hier einzustellen erspare ich mir... beim Nachbau unbedingt auf die Namen achten!) Das Skript dazu ist auf das nötigste beschränkt... -- Kommunikation zwischen MBS-V4 und MBS-V5 local socket = require("socket") -- Biliothek "socket" aufrufen local tcp4e = socket.tcp() -- TCP Client erstellen (MBS-V4 Ereignisse) local tcp4c = socket.tcp() -- TCP Client erstellen (MBS-V4 Kommando) local tcp5e = socket.tcp() -- TCP Client erstellen (MBS-V5 Ereignisse) local tcp5c = socket.tcp() -- TCP Client erstellen (MBS-V5 Kommando) local ok,status,s4,s5 ok,status=tcp4e:connect("127.0.0.1", 31288) -- Client verbinden (MBS-V4 Ereignisse [Port im MBS-V4 auf 31288 gestellt]) if not ok then print("Verbindungsfehler V4: "..status) end ok,status=tcp4c:connect("127.0.0.1", 31287) -- Client verbinden (MBS-V4 Kommando [Port im MBS-V4 auf 31287 gestellt]) if not ok then print("Verbindungsfehler V4: "..status) end ok,status=tcp5e:connect("127.0.0.1", 31286) -- Client verbinden (MBS-V5 Ereignisse [Port 31286=Standardeinstellung]) if not ok then print("Verbindungsfehler V5: "..status) end ok,status=tcp5c:connect("127.0.0.1", 31285) -- Client verbinden (MBS-V5 Kommando [Port 31285=Standardeinstellung]) if not ok then print("Verbindungsfehler V5: "..status) end -- Achtung!!! ab hier Endlosschleife while true do tcp4e:settimeout(0.01,"b") -- Timeout für tcp4e ( bezogen auf tcp4e:receive()) tcp5e:settimeout(0.01,"b") -- Timeout für tcp5e ( bezogen auf tcp5e:receive()) s4,status= tcp4e:receive() -- tcp4e abfragen if s4~=nil then -- wurde etwas gesendet? local EventAnswerV4={} -- Antworttabelle = leer s4:gsub("[^;]+",function(c) table.insert(EventAnswerV4,c) end) -- Antworttabelle erstellen if EventAnswerV4[1]=="210" and EventAnswerV4[2]=="ReglerV5" then -- Event "210" (Steuerobjekt Wert geändert) und Namen abfragen local v5=(EventAnswerV4[3]-0.5)*200 -- Geschwindigkeit für Lok in MBS-V5 local ComV5=table.concat({"371","LokV5","0",v5},";").."\n" -- String zum Senden erzeugen (Lokgeschwindigkeit setzen) print(ComV5) ok,status=tcp5c:send(ComV5) -- Kommando zu MBS-V5 senden if not ok then -- Senden ok? print("Verbindungsfehler V5: "..status) end end end s5,status= tcp5e:receive() -- tcp5e abfragen if s5~=nil then -- wurde etwas gesendet? local EventAnswerV5={} -- Antworttabelle = leer s5:gsub("[^;]+",function(c) table.insert(EventAnswerV5,c) end) -- Antworttabelle erstellen if EventAnswerV5[1]=="210" and EventAnswerV5[2]=="ReglerV4" then -- Event "210" (Steuerobjekt Wert geändert) und Namen abfragen local v4=(EventAnswerV5[3]-0.5)*20 -- Geschwindigkeit für Lok in MBS-V4 local ComV4=table.concat({"371","LokV4","0",v4},";").."\n" -- String zum Senden erzeugen (Lokgeschwindigkeit setzen) print(ComV4) ok,status=tcp4c:send(ComV4) -- Kommando zu MBS-V4 senden if not ok then -- Senden ok? print("Verbindungsfehler V4: "..status) end end end end ... bräuchte es in Lua auch, da auch hier gewartet wird, bis etwas kommt. Ich habe dieses Problem "umgangen" indem ich dem "receive()" ein "timeout" mit auf den Weg gegeben habe. Bei mir sind es momentan 0,01 Sekunde. Ich habe es versuchsweise mal mit 0 Sekunden probiert... Lua kann den Rechner ganz schön belasten wenn es eine Enlosschleife fährt! Ich betrachte mein "Werk" mal als Pionierarbeit um zu zeigen, daß es prinzipiell geht... und frage mal neugierig nach, ob sich schon mal jemand mit Lua und Multithreading beschäftigt hat... Gruß EASY
  8. EASY

    Schnittstelle und Lua

    Hallo, ... hätte als Reaktion auch gut gepasst ... bei so etwas bin ich immer gerne dabei... auch Neo war schon mal überrascht, was man mit seinem Programm (noch) so alles machen kann... ... ich habe ja darum gebeten. Andere Sichtweisen bringen immer etwas... und es ist ja nicht zwingend, daß man sie 1:1 übernimmt.... ... das "print()" ist momentan auch nur ein Platzhalter, damit überhaupt etwas passiert... in diesem Fall ist es eben zur Überprüfung der Richtigkeit besser die Ausgabetabelle als Einzelelemente auszugeben. Die Schnittstelle liefert alles in einem String zurück (wenn ich z.B. alle Objekte auslese, kann dieser ziemlich lang sein) und so kann ich überprüfen, ob der String für die weitere Bearbeitung richtig zerlegt wurde.... Gruß EASY
  9. EASY

    Schnittstelle und Lua

    Hallo @BahnLand, ... es war sehr positiv gemeint... wenn Dir als unser EV-Spezialist eine ansteuertechnische Möglichkeit gefällt, dann muss es (vom Prinzip her) interessant sein... Gruß EASY
  10. EASY

    Schnittstelle und Lua

    Hallo @Goetz, ... danke fürs drüberschauen und die Hinweise. ... da ich etwas aus der VB Ecke komme, definiere ich eigentlich gerne alle Variablen zum Anfang... ... und da habe ich schon in Zeile 6... local ok,status -- Verbindung ok, status liefert evtl Fehlermeldung ... mein Hintergedanke war eigentlich, daß sie innerhalb vom "Modul" lokal bleiben sollen, da sie bei ok,status=tcp:connect(host, port) -- Client verbinden und auch innerhalb der Funktion auftreten... oder habe ich da einen Denkfehler? @Andy... da neugierig...werde ich es mal ausprobieren... wobei sich mir noch nicht ganz erschließt, warum ich von V4 aus etwas in V5 ansteuern soll... (... kann auch daran liegen, daß mir ein "GBS" gerade nicht viel sagt [immer noch kein Anlagenbauer]... aber wenn es BahnLand gefällt... ist schon verdächtig Gruß EASY
  11. EASY

    Schnittstelle und Lua

    Hallo, da mich mein Modell gerade ärgert, habe ich zum Frustabbau etwas Lua-iert... In Anlehnung wie ich es damals in VB gemacht habe, bin ich gerade dabei es etwas modularer aufzubauen. So sieht jetzt mein "MBS-Kommando senden" aus... -- Kommando über Schnittstelle senden local host, port = "127.0.0.1", 31285 -- IP und Port festlegen (31285=Kommandoport) local socket = require("socket") -- Biliothek "socket" aufrufen local tcp = socket.tcp() -- TCP Client erstellen local ok,status -- Verbindung ok, status liefert evtl Fehlermeldung ComAnswer={} -- Antworttabelle (global!) ok,status=tcp:connect(host, port) -- Client verbinden if ok == nil then -- Verbindung hergestellt?... print("Verbindungsfehler: "..status) -- ... wenn nicht Fehlermeldung + Programm beenden os.exit() end function SendCom (parameter) -- Funktion Kommando senden ComAnswer={} -- Antworttabelle leeren ok,status=tcp:send(parameter.."\n") -- Kommando senden if ok==nil then -- Verbindung fehlgeschlagen? ComAnswer[1]=status -- Fehlermeldung zwischenspeichern return false -- "false" zurückgeben end local s -- temp. Variable für Antwort s,status=tcp:receive() -- Antwort abfragen if status ~=nil then -- Verbindung fehlgeschlagen? ComAnswer[1]=status -- Fehlermeldung zwischenspeichern return false -- "false" zurückgeben end s:gsub("[^;]+",function(c) table.insert(ComAnswer,c) end) -- Antwort in Tabelle umwandeln; ";" als Trennungszeichen; "+"= ganzer Ausdruck if ComAnswer[1]=="0" then -- Antwort enthält Fehler (z.B. ungültiges Kommando) table.remove(ComAnswer,1) -- Fehlermeldung zwischenspeichern return false -- "false" zurückgeben end if #ComAnswer>1 then -- Anz. Elemente in Antworttabelle>1?... table.remove(ComAnswer,1) -- .. 1. Element löschen (1. Element = 1 oder 0 für gesendetes Kommando ist gültig?) return true -- "true" zurückgeben else ComAnswer[1]="Kein Rückgabeparameter oder leere Liste" -- Antwort hat keine weiteren Elemente (z.B. Kommando 51 [MBS-Animation ein/aus]) return true -- "true" zurückgeben end end ... und dies wäre dann ein einfaches Beispiel für das Hauptprogramm... require("MBS-Kommando senden") -- Datei "MBS-Kommando senden.lua" einbinden [Ohne Pfad = gleiches Verzeichnis!] if SendCom("100;2") then -- Kommando senden ohne Fehler?... ["100"-> Objektliste; "2" -> Rollmaterial] for i,v in ipairs(ComAnswer) do -- Antworttabelle ausgeben. print(i,v) end else print("Fehler: "..ComAnswer[1]) -- Im Fehlerfall: Meldung ausgeben end ... da ich in Lua in den Anfängen stecke, wenn jemand Verbesserungsvorschläge hat... gerne! Gruß EASY
  12. Hallo, ... hat mich doch mal interessiert, ob es in Lua auch über die Schnittstelle geht... -- Kommando über Schnittstelle senden local host, port = "127.0.0.1", 31285 -- IP und Port festlegen (31285=Kommandoport) local socket = require("socket") -- Biliothek "socket" einbinden local tcp = socket.tcp() -- TCP Client erstellen tcp:connect(host, port); -- Client verbinden tcp:send("1\n") -- Kommando "1" senden = MBS-Versionsnummer tcp:send("20\n") -- Kommando "20" senden = ID der geöffneten Anlage tcp:send("21\n") -- Kommando "20" senden = Info über geöffnete Anlage while true do -- Auf Antwort warten local s, status = tcp:receive() -- Antwort und Status abfragen print(s) -- Antwort drucken if status == "closed" or status== "Socket is not connected" then -- Abbruchbedingung -> Client geschlossen oder nicht verbunden print(status) break end end tcp:close() -- Client schließen -- Ereignisse über Schnittstelle empfangen local host, port = "127.0.0.1", 31286 -- IP und Port festlegen (31286=Ereignisport) local socket = require("socket") -- Biliothek "socket" einbinden local tcp = socket.tcp() -- TCP Client erstellen tcp:connect(host, port); -- Client verbinden while true do -- Auf Antwort warten local s, status = tcp:receive() -- Antwort und Status abfragen print(s) -- Antwort drucken if status == "closed" or status== "Socket is not connected" then -- Abbruchbedingung -> Client geschlossen oder nicht verbunden print(status) break end end tcp:close() -- Client schließen Da das MBS nur über ein eigeschränkes Lua verfügt, geht es da nicht direkt... ich habe es im "ZeroBrane Studio" (gibt es auch als portable Version) ausprobiert... Anmerkung: Neugierig bin ich wegen dieser Antwort von Neo geworden, wobei Neo gleichzeitig schreibt: also sehe ich es mal als (temporäre) Möglichkeit um meinem Spieltrieb (gelegentlich) nachzukommen und mit Lua zu experimentieren... vielleicht hift es ja auch dann etwas in "einer zukünftigen Version"... Gruß EASY
  13. EASY

    SputniKKs Bastelseite

    Hallo SputniKK, ... gefällt! (trotzdem) ... Gruß EASY
  14. Hallo, nun, die Debatte über Sketchup vs Blender wird wohl immer wieder aufkommen. Gibt es in diesem Forum und gab es schon im Forum zu EP Zeiten (EP = Eisenbahn Planer = der Vorläufer vom MBS) Ist schon etwas her, aber für mich war die Entscheidung für Sketchup damals eine Sache wenigen Stunden. Ich habe beide Programme (Sketchup und Blender) damals ausprobiert. In Sketchup hatte ich nach einer halben Stunde mein erstes Probemodell (einfaches Haus mit zwei Fenstern und einer Türe) fertig. In Blender habe ich nach 2 Stunden entnervt aufgegeben. Natürlich war es für mich einfacher mich in Sketchup zurechtzufinden, da ich beruflich mit einem CAD-Programm (SolidWorks) arbeite und Sketchup von der Bedienbarkeit und der Oberfläche näher (wenn auch weitaus primitiver) an das CAD-Programm angelehnt war. In Blender war ja nicht viel mit Bedienoberfläche und ohne Refferenzliste für die Tastenkombinationen war man als Anfänger einfach aufgeschmissen. Es ist meine persönliche Art Programme zu "testen" indem ich einfach mal schaue wie weit ich rein intuitiv mit der Oberfläche zurechtkomme um zumindest die Grundfunktionen ohne großes Nachlesen hinzubekommen. Wenn das gelingt hat das Programm bei mir eine Chance auf dem Rechner zu bleiben. Blender hatte damals keine! Also habe ich mit Sketchup angefangen und war damit einigermaßen erfolgreich im Erstellen von Modellen. Was ich an Funktionen in Sketchup vermisst habe, habe ich mir aus der Unzahl von Plugins für das Programm zusammengesucht und mir so mein eigenes Sketchup zusammengebastelt. Zufrieden war ich damit, bis ich eben auf das Problem der Animation gestoßen bin. Also habe ich Blender wieder ausgegraben und mich zumindest mit der Erstellung von Animationen beschäftigt. Das ging dann auch relativ schnell zu verstehen, da ist Blender wieder sehr einfach in der Bedienbarkeit. Ich muß schon sagen über Jahre bin ich dann einfach zweigleisig gefahren und habe in Sketchup das Modell erstellt und (gegebenenfalls) in Blender animiert. Schnittstelle für mich war damals das .3ds Format. Ich habe es damals nicht als "umständlich" empfunden, mit beiden Programmen an einem Modell zu arbeiten. Jedes hatte für sich seine Vorteile für mich und ich habe die Modelle so hinbekommen wie ich es wollte (Mittel zum Zweck!). Ein Knackpunkt für mich war, als es aufgekommen ist mit Multitexturen zu arbeiten. In Sketchup wurde es (nach meinem Empfinden) etwas schwieriger die Textur zu setzen. Also in Sketchup Modell bauen und in Blender die Textur setzen (was auch schnell zu erlernen war) und ggf. animieren. Für mich immer noch kein Problem mit 2 Programmen zu arbeiten. Es war besonders Franz, der nicht locker gelassen hat, mich zu Blender zu bringen. Es war eine intensive TeamViewer Sitzung und einige Telefonate... dann habe ich Blender verstanden. Seither arbeite ich nur noch mit Blender. Wie Ihr dem Text vielleicht entnehmen könnt, gibt es für mich nicht die "knallharte" Entscheidung für das eine oder andere. Ich habe mich herangetastet und mich mit beidem beschäftigt und jeweils das genutzt, was mir zweckmäßig für das Erreichen meines Zieles (funktionstüchtiges Modell) erschien. Zugegeben, es ist nicht jedermanns Sache so vorzugehen aber als Anregung sollte man sich im Vorfeld vielleicht zuerst überlegen, was man sich so vorstellt an Modellen bauen zu wollen... es gibt ebenso eine Vielzahl an Möglichkeiten für statische Modelle als auch an (etwas komplexer) animierter Modellen... Gruß EASY
  15. EASY

    EASY's kleiner Modellbau V5

    Hallo @BahnLand , hallo @Reinhard ...danke für die Antworten. Ihr habt schon recht, es ist etwas zu "leuchtend"... ich habe mal experimentiert mit der Farbgebung... grün dunkler und Farbgebung "aus der Zeit"... ... persönlich tendiere ich (nun) mehr zum linken "rotbraun"... [es eignet sich wahrscheinlich auch für den noch zu bauenden "Omnibus"-Anhänger] ... na ja, wenn ich mir das violette Modell aus Deinem link so ansehe... (da das Bild kostenpflichtig ist... selbst nachsehen) Gruß EASY
×