Jump to content

Andy

Mitglieder
  • Gesamte Inhalte

    5506
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Andy

  1. Ich denke mal, dass Du die kleine Funktionsbibliothek nicht kopiert hast! Es geht schon, siehe: rotation.mbp Beachte Ereignisse -> Skript! Da liegt die Bibliothek. Wir sind von V4 her eigentlich nur Grad-Winkel gewohnt. Neo hätte hier besser sowohl Bogenmaß, als auch die Quaternionen 'verstecken' können und anwenderfreundlichere Funktionen zur Verfügung stellen können. Es ist mir klar, dass für einige Dinge Quaternionen vorteilhafter sind, aber dieses Gebilde haben nun die wenigsten in der Schule gehabt. Also, zumindest mal rotateX, rotateY, rotateZ mit einem einfachen Grad-Winkel hätte es getan.
  2. Andy

    Eric's Two Trains layout

    A very nice Lua-only layout. People can learn a lot from it! greetings Andy
  3. $("Beschriftung").transformation.rotation = {0, 0, 0, 120.0} kein " vor $ und Vorsicht: in Lua kein Dezimalkomma, sondern Dezimalpunkt. Es dürfen nur vier Werte sein. Diese Werte sind aber ein Quaternion, mit 120.0 als Winkel geht's so nicht. Willst Du einfach nur Z um 120° drehen? kleine Formelsammlung (kopier sie Dir nach "Ereignisse" -> Skript) function RadToDeg(n) -- Bogenmaß (Radian) -> Grad return n*180/3.1415927 end function DegToRad(n) -- Grad -> Bogenmaß (Radian) return n*3.1415927/180 end function ToEulerAngles(q) local angles = { x=0, y=0, z=0 } -- roll, pitch, yaw -- roll (x-axis rotation) local sinr_cosp = 2 * (q.w * q.x + q.y * q.z) local cosr_cosp = 1 - 2 * (q.x * q.x + q.y * q.y) angles.x = math.atan(sinr_cosp, cosr_cosp) -- roll -- pitch (y-axis rotation) local sinp = 2 * (q.w * q.y - q.z * q.x) if math.abs(sinp) >= 1 then angles.y = 1 -- copysign(M_PI / 2, sinp); // use 90 degrees if out of range else angles.y = math.asin(sinp) -- pitch end -- yaw (z-axis rotation) local siny_cosp = 2 * (q.w * q.z + q.x * q.y) local cosy_cosp = 1 - 2 * (q.y * q.y + q.z * q.z) angles.z = math.atan(siny_cosp, cosy_cosp) -- yaw -- Radian to Degree angles.x = RadToDeg(angles.x) angles.y = RadToDeg(angles.y) angles.z = RadToDeg(angles.z) return angles end function ToQuaternion(yaw, pitch, roll) -- yaw (Z), pitch (Y), roll (X), input in Degree yaw = DegToRad(yaw) pitch = DegToRad(pitch) roll = DegToRad(roll) local cy = math.cos(yaw * 0.5) local sy = math.sin(yaw * 0.5) local cp = math.cos(pitch * 0.5) local sp = math.sin(pitch * 0.5) local cr = math.cos(roll * 0.5) local sr = math.sin(roll * 0.5) local q = {} q.w = cy * cp * cr + sy * sp * sr q.x = cy * cp * sr - sy * sp * cr q.y = sy * cp * sr + cy * sp * cr q.z = sy * cp * cr - cy * sp * sr return q end function NormQ(q) local l = math.sqrt(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w) if l ~= 0 then q.x = q.x / l q.y = q.y / l q.z = q.z / l end return q end und dann $("Beschriftung").transformation.rotation = NormQ(ToQuaternion(120.0, 0.0, 0.0)) oder schau mal, wie rotateZ funktioniert. Gruß Andy
  4. Ich habe ja genau das realisiert. Aber es ist nicht einfach es zu pflegen, Du mußt ja immer wieder alles Neue in die Grundstellungsversion einbringen. Und dann die 24 virtuellen Stunden testen... dauert selbst bei vierfacher Geschwindigkeit und dann kommt 10 Minuten vor Tageswechsel der nil-Fehler... Trotzdem, wenn jetzt die Gleiskontakte nicht dazu gekommen wären, hätte ich's sogar schon anbieten können. Es sind da nur noch Tabellen zu füttern, initialisieren tut sich das System dann selbst. Es füttert die Objekte sogar mit OV und Schlagworten. Aber es ist halt so, dass es mit einer globalen Fahrtrichtung arbeitet, die jetzt ja nicht mehr nötig wäre, wegen den Gleiskontakten. Ich weiß auch nicht, ob das System alle Deine speziellen Fahrmanöver ausführen könnte und es erfordert auch ein komplettes GBS. Ferner hat es auch nur eine ganz ganz einfache Signalbehandlung. Vorsignale und EInfahrtsignale gibt's da nicht. Es wäre trotzdem auf viele Anlagen anwendbar, aber ich zweifle noch, es anzubieten. Ich müßte mir da vor allen Dingen noch mal Dein aktuelles Layout ansehen. An einer einfachen Acht scheitert das System beispielsweise... Gruß Andy
  5. Es gibt in unserer Stadt keinen einen Busfahrer mehr, bei dem man nicht durch den Gang rollt. Und so wackelig kann ich noch gar nicht sein. Da haben die schon tolle Automatik an Bord, aber vielleicht ist deren Sitz zu bequem. Jüngeres Personal wirst Du bei einem älteren LKW-Modell gar nicht brauchen können. Du brauchst einen, der noch weiß, was Zwischengas ist, aber noch so fit ist, dass er beim Fahren nicht gleich einschläft. Aber da kommen bestimmt noch mehr. Speditionen geht es heutzutage auch nicht gut.
  6. Ja, es heißt in der Tat print($("meineLok").currentSpeed) Lokname genau so wie sie heißt, mit Umlauten etc. Nur bei der "Bügelfalte" mußt Du aufpassen, da hier auch Anführungszeichen verwendet werden. In dem Fall Backslash \ vor die 'internen' Hochkommas setzen. Aber bei Tippen des Dollarzeichens will er sowieso das Objekt auswählen und ergänzt dann selbst. Ist die Lok mit im Auslöser drin, verwendest Du einfach vehicle.currentSpeed p.s.: im ersten Beispiel ist die Geschwindigkeit manuell auf 90 eingestellt. Es gibt eine (sehr) minimale Abweichung, bedingt durch die Auflösung des Reglers. im zweiten Beispiel setzt das rote Gleis die Geschwindigkeit auf 90. Dann wird's akkurat. Vielleicht ist Dir was ähnliches passiert. Ich meine ... 36 Std. ... wie hast Du das getestet? Gruß Andy printbeispiel.mbp printbeispiel2.mbp
  7. Du kannst da ja mal eine 'Skript ausführen'-Anweisung einfügen und dort ein print($("meineLok").currentSpeed) einfügen (kann sein, dass es .variables["currentSpeed"] heißen muß, weiß ich jetzt auf die Schnelle nicht) und im EP nachschauen - print-Ausgaben erscheinen da in grün. Es könnte sein, dass ein gerundeter Wert in der Anzeige der Lok steht. Der print-Befehl gibt Dir den tatsächlichen. Ob's was ausmacht, kann ich nicht sagen. Kommt drauf an, wie kritisch es ist.
  8. Siehst Du, da haben wir wieder ein Beispiel, weshalb sowohl Export, als auch zweite Instanz recht sinnvoll sind. Zumindest ersteres ist ja geplant, nutzt Dir aber jetzt nichts. Es gibt halt so Tage. Ich habe es zweimal geschafft, versehentlich meine Anlage zu überschreiben während die Automatik schon eingeschaltet war, was ich für meine Grundstellung ja gar nicht gebrauchen kann. Einmal bin ich zähneknirschend zu einer älteren Version zurück, das andere Mal habe ich die ersten abgefahrenen Züge wieder zurückmanövriert und die Block- und Lokstati mühevoll korrigiert.
  9. Andy

    Dream City

    Das ist aber wirklich merkwürdig. Ein Gleis, das seine Position nachträglich verändert? Äußert mysteriös. Sind da Verknüpfungen im Spiel? Wenn Du 'rund' verknüpfst, dann können Dinge abhauen.
  10. Beim Hin- und Herschieben von Aktionen kommt es leicht mal vor, dass man über die 'Alternativlinie' einer Bedingung verschiebt. Dadurch kommt solch ein Ereignis voll aus dem Tritt. Vielleicht ist es sowas.
  11. Das mit den Tris hat ianroid ja schon erklärt. Das mit den Eckpunkten wird dann auch klar. Sehr interessant! Ich wußte wirklich nicht, dass man auch heute noch zweckmäßigerweise bis zur Triangulierung runter geht!
  12. Bin wirklich mal gespannt, was da bei rauskommt, denn Karussell sollte er bestimmt nicht fahren.
  13. Hallo Lothar, ich habe mit Staplern die Erfahrung gemacht, dass es mit der Abstellfläche kritisch werden kann. Skaliere die Fläche mal ein klein wenig höher (1,1 oder so). Ich hoffe nicht, dass da ein neues Problem mit dem Wechsel des Links/Rechts-Koordinatensystems entstanden ist. Gruß Andy
  14. Mein kleines Tasterchen ist wirklich nichts anderes als ein kleiner (etwas platter) Würfel. Die Daten habe ich sogar manuell in die .x-Datei eingegeben. Da sind tatsächlich nur 8 Eckpunkte und 6 Polygone (und auch nur 6 UV-Normalen) drin. MBS macht da 24 Ecken und 12 Polygone draus. D.h., die Innenflächen scheinen irgendwie dazu generiert zu werden, auch wenn sie im Endeffekt nicht gebraucht werden und auch nicht sichtbar sind. Vielleicht gibt es da beim Import sogar noch Optimierungsmöglichkeiten. Max, versuch doch mal das Gleiche mit dem neuen git-Format. Vielleicht ist das vorteilhafter. Gruß Andy
  15. Ja, es ist toll, dass Axel die Männekens jetzt ruckzuck im Griff hat. Jedenfalls die Adams schon mal. Ob er Evas aus den Rippen schneiden kann? Der Ärmste - was da jetzt Wünsche kommen beste Grüße Andy
  16. Dann ist der Nächste, um den wir uns richtig sorgen müssen, quackster. Der fehlt auch schon volle zwei Monate.
  17. Ich spüre schon, wie Neo zittert, dass wir jetzt auch noch die Variation in der EV haben wollen, damit wir 1 subtrahieren können, wenn die Waschstraße verlassen wird
  18. Für die Programmierung relevante Fehler können zwar zum Teil bis ins letzte Detail erkannt werden, wenn aber Fehlermeldungen an die rufende Routine zurückgegeben werden, gibt es da auch natürliche Limits. Ansonsten gibt es da den Effekt der sogenannten Fehlerlawine. Schließlich gibt es mannigfaltige Fehlermöglichkeiten, aber nicht so viele, darauf entsprechend zu reagieren. Und die müssen dann auch noch mehr oder weniger aufwändig programmiert werden. Angesichts dieses Dilemmas bin ich schon sehr froh, wie es derzeit funktioniert. Wenn ich dann (im Bereich Lua) dazu eine vierstellige Zeilennummer habe, weiß ich auch nicht mehr genau, wo der Fehler ist, sondern nur, dass er irgendwo in einer Unterroutine ist. Da kann/muß ich mit leben. Dann ist schlicht und einfach Denkarbeit notwendig, um den Fehler am Ende zu lokalisieren und beseitigen. Dieses 'Debuggen' ist Erfahrungssache. Das kann man so leicht auch keinem beibringen.
  19. Die hier ist richtig gebraucht aber mal ehrlich, das muß nicht so schlimm sein Und dreckige Loks fotografiert entweder keiner, oder es gibt sie nicht, weil da die Chefs schon aufpassen. Übrigens kannst Du gerne noch ein paar Blumen machen. Die von Franz sind zwar allesamt schön, aber sehr polygonlastig. Wenn es da schönere Lösungen gäbe, wäre das toll. Da es auch um die Anzahl der Objekte geht, könnte man vielleicht auch ein Arrangement in eine Reihe setzen, oder im Rechteck, als ein Modell mit ein paar Variationen. Gleise haben meistens Kleingärten an den Seiten, denn wohnen will da keiner. Und die brauchen viele Blumen, Sträucher, Hecken und Bäume. Es ist schon fast schade, dass Du in die Liga der Lokbauer aufgestiegen bist und das auch gleich so toll. Obwohl da sicherlich noch viele Modelle fehlen, Naturmodelle braucht es auch dringend und die Dinge, die Du in dieser Kategorie gemacht hast, sind optimal! Gruß Andy
  20. Export ist einfach notwendig. Versuche mal Lua-Funktionsaufrufe skriptübergreifend wiederzufinden. Das geht nicht. p.s.: für den Parallel-Start mehrerer Instanzen gibt es auch ein paar gute Gründe. Wenn ich z.B. in meiner zeitgesteuerten Anlage Kameras für eine bestimmte Stunde aufstellen möchte, will ich natürlich nicht jedesmal von vorne durchlaufen lassen. Also gibt es eine Anlage, die bei dieser Stunde startet. Aber die neuen Kameras mit ihren Einstellungen brauche ich dann auch dringend in der Grundstellungsversion, da dann praktischerweise auch geöffnet sein sollte. Okay, ich helfe mir hier auch mit Workarounds. Praktischer wären aber in der Tat mehrere Instanzen.
  21. da kommen mir doch gerade zwei Werbefilme in den Sinn. Einer mit zwei Rockern, die einen Kleintransporter mieten wollen, aber keinen Weißen und der mit Klopp - 'ja, aber in sauber'. Henrik - subtil ist das richtige Wort. Die sieht immer noch aus, als käme sie direkt aus der Waschstraße. Die kannst Du ruhig noch mal durch den Kakao ziehen
  22. Naja, bekanntlich führen viele Wege nach Rom und solange Du den Überblick behältst und zufrieden damit bist, gibt es keinen Grund etwas zu ändern. Hast schon recht, bring' die Anlage nicht in Gefahr. Notfalls gäbe es ein paar sehr starke Lua-Funktionen, mit denen eine große Umverdrahtung automatisiert möglich wäre. Bin gespannt auf die Anlage. Übrigens: Wenn Du bei einem Objekt die OV öffnest, sind im linken Fenster auch alle anderen Objekte und dort kannst Du Schritt für Schritt weiter gehen. Gruß Andy
  23. Tja Timba, hättste die Variablen mal als Objektvariablen gemacht, dann ging das schon heute Ich wollte damit eigentlich nur sagen, dass mir das gefühlt wie ein Designproblem aussieht, bei dem besser Abhilfe geschaffen werden sollte, bevor es 750 sind. Weniger werden's unterm Strich wohl nicht, aber sie sind dann anders verteilt. Ich schätze, Deinen derzeitigen Stand hatte ich anfangs auch mal... Bevor Du zu viele Änderungen manuell machst: Mach Dir ein Skript, dass durch einen speziellen Button ausgelöst wird. Hier haust Du mit einem schnellen externen Editor wie Notepad++ die Namensliste rein und machst Lua-Zuweisungsbefehle draus. Zurückkopiert, Knöpfchen gedrückt, fertig. Beugt Sehnenscheidenentzündungen vor... $("Ereignisse").variables["Z1"] = 1 $("Ereignisse").variables["Z2"] = 2 $("Ereignisse").variables["Z3"] = 3 $("Ereignisse").variables["Z4"] = 5 ... $("Ereignisse").variables["Z750"] = 7 Gruß Andy
  24. Freut mich, dass die kurze Erklärung gereicht hat. Aber ich hatte das Gefühl, dass sie Dir reicht.
  25. wenn ich auf Ralf's letztem Bild die Eingangstüren links und den Wagen rechts sehe, liegen die sehr gut in der Größe.
×
×
  • Neu erstellen...