-
Gesamte Inhalte
5517 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von Andy
-
Das Gleiche nochmal anders erklärt: Das Schlagwort ordnet letztlich ein Element einer Teilmenge zu. Nehmen wir an, Du schreibst Ereignis "Gleiskontakt wird beim Betreten ausgelöst", willst damit aber weder einen speziell, aber auch nicht alle damit erwischen, sondern eine bestimmte 'Gattung'. Genau dann nimmst Du 'Gleiskontakt mit Schlagwort'. Das Schöne ist, dass Du einem Objekt auch mehrere Schlagworte zuordnen kannst. Bei einer Lok kannst Du also "Personenzug" angeben, aber auch "Schnellzug". Auch Kontakte könntest Du parallel für verschiedene Aufgaben verwenden, z.B. für's Abbremsen, und/oder um für Loks mit 'Personenzug' und 'Schnellzug' das Signal auf grün zu schalten. Dann gibst Du dem Kontakt noch ein Schlagwort 'Schnellzugwächter' mit auf den Weg und programmierst an anderer Stelle noch den Gleiskontakt mit Schlagwort 'Schnellzugwächter'. Wie gesagt, das kann so auf den gleichen Kontakt hinauslaufen.
-
Dieser "olle" Schalter ist ein Trigger, der der EV sagt, dass etwas geschaltet wurde, damit faule Leute kein zweites Mal drücken müssen und dessen Zustand sich optisch nicht bleibend ändert, wenn er mit einem Element verknüpft wird und jemand das Element direkt schaltet. DAS Tasterchen ist das erste seiner Art, das so wirkt und Neo hat da extra eine neue Modellvariable für geschaffen. Ein halbes Jahr harte Diskussion steht dahinter, es hat nämlich nicht nur was mit 'faul' zu tut. Vor allen Dingen ist das Teil nicht dumm! Man kann damit auch abstrakte EV-Konstrukte schaffen, denen man einen Status in der OV erteilt und Funktionen auslöst indem man einfach 'Taster umschalten' sagt - und anhand der Bewegung sieht man auch, dass da was geschaltet hat, was sonst so schnell gehen würde, dass es das Auge gar nicht erfassen könnte. Insofern ist hier eine automatische Verzögerung bereits eingebaut. So "oll" wie es aussieht (es hat extrem wenig Polygone!), es ist immer noch besser als etwas, bei dem das Gelb am Boden rausläuft, gar nix tut und auch noch so heißt wie ein Element aus dem Katalog.
-
Andy patscht Hans eine. Das ist nur ein doofer Übersetzer. Henrik würde weder etwas ironisches, noch etwas abwertendes schreiben!
-
Texturen ins MBS Laden für Bordmittel Modelle
Andy antwortete auf MX1954LLs Thema in Modellbau mit externen Programmen
Ostern - liegt das Hochhaus schon so lange rum? Ich wollte doch mal probieren, ob ich die MBS-Koordinatendaten nicht mit Textprocessing in eine .x-Datei konvertieren kann und so den Rohling schon mal in Blender importieren kann, damit Fachleute das Teil vollenden können (huhu Brummi - obwohl, der baut mit Sketchup - egal, irgendwie kriegen wir das Ding auch da rein). Das muß 'in echt' in den Katalog. Da beißt die Maus keinen Faden ab. Ich gehe da morgen mal ran. Wenn ich's schaffe, bis ich die Texturen brauche, melde ich mich. Gruß Andy -
...fangen die da mitten im Winter an zu bauen. Sowas! (vergiß die Kamera am Rande nicht für den Zeitraffer-Schnappschuß. ) gutes Gelingen Andy
-
Falsche Reihenfolge, erst 'Alles selektieren' und dann 'Selektieren'. Zieh die Stoppuhr auf Detaillieren muß ja nicht heißen, noch viele Objekte ins Spiel zu bringen und da spielen noch viele andere Dinge in die FPS rein. Ich weiß nur, ich habe da ein sehr sehr ähnliches Dilemma, weil ich ähnliche Werte habe. Ich sehe, die Oberleitung kostet Objekte und Polygone ohne Ende - ich schalte diese Ebene unsichtbar - Effekt kaum meßbar. Und n vielen Seitenansichten sind da viel mehr Polygone und Objekte, als in einer auf Entfernung gestellten Ansicht von oben. Da fällt wohl schon viel weg, wg. Entfernung. Eins ist mal sicher - der schöne Schatten ist teuer. Ich wollte Dich da bestimmt nicht schocken - sei nicht so abrupt jetzt, sag lieber, die Anlage ist kurz vor fertig. Sonst kriege ich Schuldgefühle. erschreckte Grüße Andy
-
Ich habe mir Deine Anlage wegen der möglichen Steuerung jetzt mal angeschaut. Ralf, jetzt muß da unbedingt Ende sein mit der Detaillierung, sonst kannst Du da Standphotos von schießen, aber auf Bewegung kannst Du warten. Da gibt es Ansichten mit >17000 Objekten und >11 Mio Polygonen. Wenn Du auf Alles selektieren gehst, sind's nur >8000, aber da zählt er Gruppen als 1. Wenn Du danach auf das einfache Selektieren gehst, kannst Du Kaffee kochen gehen. Sicherlich ist es Deine Anlage und solange Du dran Spaß hast, oder einen viel schnelleren Rechner als andere, will ich Dich nicht stoppen. Aber für den 'normalen' Benutzer wird's sehr eng mittlerweile. Das hätte die Anlage nicht verdient, wenn sie dann einfach nur liegengelassen wird. Eine Umstellung auf ein Blocksystem jedweder Art (also, ein allgemein gehaltenes, was dann parametrisiert die Anlage zum Laufen bringt) bringt da schon eine Menge Arbeit mit sich. Da kannst Du im Prinzip alles was nicht Bahn ist zuerst einmal total auslagern, damit Du vernünftige Ladezeiten kriegst, wenn Du da wirklich eine Grundstellungsversion brauchst und nach jedem 'nil' zurück mußt. Also - Du bist da ganz kurz vor einer Sackgasse! Gruß Andy
-
Was Farbe ausmachen kann. So kommt sie mir irgendwie bekannt vor. Das war bei den anderen Bildern nicht der Fall.
-
Gleiches gilt für Timer.
-
Du machst mit der Zeile den gleichen Fehler immer noch. x,y,z sind NICHT die Winkel! Neo's Beispiel ist doch sonnenklar. Da braucht es sogar die Funktionsbibliothek nicht. Verwende es einmal mit -120 und das andere mal mit -60. Und das mit dem nil-value .. gibt es das Objekt "Beschriftung" überhaupt noch?
-
Tja, gewußt wie Das mit dem Doppelpunkt war mir nicht klar, deswegen habe ich diese Funktionen nicht im Hilfetext gefunden. Wußte aber, dass sie da sind... Aber auch dann hätte ich nicht geahnt, dass ja erstmal ein initialisierendes Einheitsquat zugewiesen werden muß. Nach Deinem Beispiel ist das offensichtlich. Vielleicht diesen Zweizeiler mit in den Hilfetext bringen, @Neo beste Grüße Andy
-
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.
-
A very nice Lua-only layout. People can learn a lot from it! greetings Andy
-
$("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
-
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
-
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.
-
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
-
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.
-
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.
-
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.
-
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.
-
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!
-
Bin wirklich mal gespannt, was da bei rauskommt, denn Karussell sollte er bestimmt nicht fahren.
-
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
-
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