Jump to content

Goetz

Mitglieder
  • Gesamte Inhalte

    5753
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Goetz

  1. Das höre ich sehr gerne, denn genau das ist mein Ziel. Deshalb lasse ich auch für den Anfang so viele, eigentlich wichtige Informationen weg. Es erleichtert meines Erachtens den Zugang. Und wer schon Erfahrung hat, der wird in den Beispielen vieles selbst erkennen. Zum Beispiel, dass man in Lua Variablen verwenden kann, ohne sie je deklariert zu haben. Und dass es egal ist, welcher Datentyp darin gespeichert wird. Das weiß ich zu schätzen, Andy. Danke :-)
  2. @h.w.stein-info Du musst nichts installieren. In V5 wird alles enthalten sein. Und bis dahin kannst du auf der Lua Demo Seite direkt alles ausprobieren. Einfach anklicken und dort ins Fenster deine kleinen Lua Programme eintippen. Dann unter dem Fenster auf den Knopf "run" klicken und das Ergebnis anschauen.
  3. Ich freue mich, dass mein Tutorial gut ankommt. Aber für manche wird das zu schwafelig sein. Wer Englisch gut versteht und nur mal schnell wissen will, wie Lua funktioniert, der ist mit diesem einstündigen Video von Derek Banas gut bedient. Ich mag seine Videos sehr. Sie sind gut strukturiert und gut zu verstehen:
  4. Schleifen - Teil 1 Die Tochter hat gerade Multiplikationsreihen in der Schule. Ich soll ihr beim Lernen helfen. Aber das ist für mich schon sooo lange her. Außerdem konnte ich mir die Siebener-Reihe nie wirklich merken. Und so schwere Sachen wie die Elfer-Reihe hatten wir früher gar nicht in der Schule. Zum Glück habe ich einen Computer, der mir alles ausrechnen kann. Damit müsste ich doch eine Art Spickzettel hinkriegen? Multiplikation kann ich ja schon: print(1 * 1) Aber das reicht nicht. Der Lehrer will das immer in ganzen Sätzen hören und nicht nur das Ergebnis. Also muss print() einen Text ausgeben. 1 mal 1 ist 1 2 mal 1 ist 2 und so weiter. Deshalb muss ich zuerst lernen, wie ich print() dazu bringe, ein Wort als Wort zu erkennen. Im letzten Kapitel hatte print() ja zum Beispiel Quadrat(12) als Funktionsaufruf erkannt. Was macht man nun, wenn print() zum Beispiel das Ergebnis von Quadrat(12) ist 144 schreiben soll? Man setzt das, was als Text ausgegeben werden soll, in Anführungszeichen print( "das Ergebnis von Quadrat(12) ist", Quadrat(12) ) Beachtet bitte, dass zwischen dem Text und dem Funktionsaufruf ein Komma steht. Dieses Komma trennt zwei Argumente voneinander. Diesmal bekommt print() mehrere Bausteine und setzt sie selbständig zu einer Textzeile zusammen. Dabei wird anstelle des Kommas ein Tabulatorsprung gesetzt. Deshalb steht die 144 bei der Ausgabe etwas weiter weg. Versucht es mit einer einfachen Multiplikation: print(1, "mal", 1, "ist", 1*1) Hurra, das funktioniert! Mit mehreren Kommas und einem Gemisch aus Zahlen und Texten. Das eröffnet ganz neue Möglichkeiten. Die Abstände sind bei der Ausgabe sehr groß, aber das soll egal sein. Es geht jetzt nicht um Schönheit. Und man darf die Kommas nicht einfach weglassen, weil unterschiedliche Bausteine (Zahlen, Texte und Berechnungen) zu einem Text zusammengesetzt werden sollen. Man muss die Bausteine also voneinander trennen. Das muss jetzt in eine Funktion, die ihr diesmal mit zwei Argumenten aufrufen könnt. Nämlich mit den beiden Zahlen, die multipliziert werden sollen. Also benötigt ihr in der Funktionsdefinition diesmal zwei Platzhalter. Und die werden ebenfalls mit einem Komma voneinander getrennt function Multiplikation(Zahl1, Zahl2) print(Zahl1, "mal", Zahl2, "ist", Zahl1 * Zahl2) end Sehr gut. Jetzt könnt ihr die Funktion mit jedem Zahlenpaar aufrufen Multiplikation(6, 7) Auch hier ist das Komma wieder der Trenner zwischen den beiden Werten. (Dezimalzahlen werden in allen Programmiersprachen mit einem Dezimalpunkt geschrieben!) Jetzt muss ein Weg her, um die Funktion zehnmal hintereinander aufzurufen und dabei als ersten Parameter die Zahlen 1 bis 10 zu übergeben. Damit eine komplette Siebener-Reihe ausgegeben wird. Eine Methode ist die for ... do Schleife. Sie ist ähnlich wie eine Funktion aufgebaut. Aber die Schlüsselwörter sind for, do und - wie bei der Funktion - end for Zahl = 1, 10, 1 do print(Zahl) end gibt nacheinander die Zahlen 1 bis 10 aus. Diese Schleife beginnt damit, dass sie die erste der drei Zahlen an den Platzhalter übergibt, den ich Zahl genannt habe. Damit wird dann - wie bei einer Funktion - alles bis zum end durchgeführt. Aber anders als eine Funktion startet die Schleife im Anschluss gleich noch einmal. Dabei wird die dritte Zahl zu dem, was im Platzhalter steht, hinzu addiert. Dann läuft der ganze Block erneut durch. Und das immer wieder, bis der Platzhalter den zweiten Wert erreicht hat. for Zahl = 1, 10, 1 do heißt also: Mach alles folgende mit allen Zahlen von 1 bis 10 bei einem Zählabstand von 1. for x = 2, 20, 2 do ginge also auch, wenn man nur gerade Zahlen verwenden will. Und ebenso funktioniert for a = 1, 2, 0.1 do wenn man kleinere Abstände braucht. Den gebräuchlichsten Abstand 1 muss man nicht zwingend angeben. Daher kann man den ganzen Code für die Siebener-Reihe so schreiben: function Multiplikation(n1, n2) print(n1, "mal", n2, "ist", n1 * n2) end for i = 1, 10 do Multiplikation(i, 7) end Beachtet bitte, dass die for … do Schleife im Aufbau zwar wie eine Funktionsdefinition aussieht, aber im Gegensatz zur Funktionsdefinition sofort ausgeführt wird! Ich habe in diesem letzten Beispiel gebräuchlichere Namen für die Platzhalter verwendet. Den Buchstaben n für eine ganzzahlige Zahl. Das n steht für "number", zu Deutsch: Nummer. Und den Buchstaben i für den Wert, der in der Schleife raufgezählt wird. Das i steht in dem Fall für "increment", zu Deutsch: raufzählen. Diese Namen werdet ihr oft in fertigen Skripten sehen, deshalb wollte ich euch damit vertraut machen. Aber sie haben keine Funktion, wie ihr an meinen ersten Beispielen sehen konntet. Sie werden einfach nur häufig verwendet. Für den Anfang ist es besser, aussagekräftige Namen zu verwenden. Dann wisst ihr morgen noch, was ihr da heute hingeschrieben habt und warum.
  5. Nein, heutzutage nicht mehr. Aber ursprünglich stammt der Funktionsname wirklich daher, dass man Ergebnisse auf langen Papierstreifen ausgedruckt hatte. Das war lange, bevor Lua erfunden wurde. Der Name hat sich so eingebürgert, dass er noch heute in allen Programmiersprachen für die Ausgabe verwendet wird, obwohl die inzwischen auf dem Bildschirm landet und nicht mehr auf Papier.
  6. Funktionen - Teil 3 Für Testzwecke ist es nützlich, wenn man das Ergebnis einer Funktion ausgeben kann. Aber das will man nur in Ausnahmefällen. Meistens will man mit den berechneten Zahlen etwas anderes tun. Man möchte sie weiterverwenden. Vielleicht benötige ich in meinem Programm an mehreren Stellen das Quadrat einer Zahl? Dann würde ich am liebsten überall dort, wo ich das benötige, einfach Quadrat(x) hinschreiben, wobei anstelle des x immer die Zahl steht, von der ich gerade das Quadrat benötige. Und dann soll Lua bitte dort, wo ich das so schreibe, einfach das Quadrat dieser Zahl einsetzen. Also: Irgendwo in meinem Code soll so etwas wie Geschwindigkeit = Quadrat(12) stehen und Lua soll daraus bitte Geschwindigkeit = 144 machen. Lua kann das.Man kann in der Funktionsdefinition sagen, dass Lua etwas zurückgeben soll und dann wird dieser zurückgegebene Wert dort eingesetzt, wo der Funktionsaufruf steht. Für diesen Zweck gibt es das Schlüsselwort return. function Quadrat(Zahl) Ergebnis = Zahl * Zahl return Ergebnis end Geschwindigkeit = Quadrat(12) print(Geschwindigkeit) Und so geht es auch: function Quadrat(Zahl) return Zahl * Zahl end print( Quadrat(12) ) Im Skripttext wird der Funktionsaufruf natürlich nicht durch das Ergebnis ersetzt. Das wäre nicht hilfreich. Aber bei der Ausführung des Skripts kann das Ergebnis einer Funktion direkt dort weiterverarbeitet werden, wo die Funktion aufgerufen wurde. Und damit erspart man sich eine Menge Platzhalter um Werte von hier nach dort zu bekommen. Das war nun in drei Teilen eine Menge Theorie zu den Funktionen. Der eine oder andere wird das erst einmal verdauen müssen. Lasst euch aber bitte nicht entmutigen, wenn ihr nicht sofort alle Zusammenhänge durchschaut. Das wird im Folgenden alles immer klarer werden, weil ihr es jetzt in vielen Übungen, die ich euch geben werde, immer wieder anwenden könnt.
  7. Funktionen - Teil 2 Die Funktion Quadrat() aus dem ersten Teil hat zwar das Quadrat einer Zahl ausgerechnet. Aber das Ergebnis war nirgendwo zu sehen. Habt ihr es ausprobiert? Wenn man im Lua Demo Fenster folgendes eingibt function Quadrat(Zahl) Ergebnis = Zahl * Zahl end Quadrat(3) dann wird die Funktion in den ersten drei Zeilen definiert und in der letzten Zeile mit der Zahl 3 aufgerufen. Der Aufruf führt dazu, dass die Funktion die Zahl 3 mit sich selbst multipliziert und das Ergebnis an der Stelle des Platzhalters Ergebnis abspeichert. Das funktioniert alles perfekt. Man sieht nur nichts davon, weil nirgendwo steht, dass Lua das Ergebnis anzeigen soll. Aber ihr kennt die Funktion, mit der Lua etwas anzeigt. Sie heißt print() Und den Funktionsaufruf print() kann man in die Funktionsdefinition Quadrat() mit reinschreiben: function Quadrat(Zahl) Ergebnis = Zahl * Zahl print(Ergebnis) end Quadrat(3) Bitte, versucht anhand dieses Beispiels zu verstehen, was eine Funktionsdefinition und was ein Funktionsaufruf ist. Das ist essenziell wichtig für alles andere. In den oberen vier Zeilen wird die Funktion Quadrat() definiert. In einer dieser Zeilen steht der Aufruf der Funktion print(). Dieser Aufruf wird an dieser Stelle aber noch nicht ausgeführt. Erst, wenn die Funktion Quadrat() in der letzten Zeile aufgerufen wird und somit alle Zeilen aus der Definition dieser Funktion abgearbeitet werden, wird auch die print() Zeile ausgeführt. Ich versuche es mal mit dem Einkaufszettel als Vergleich: Auf meinen Einkaufszettel hat meine Liebste mir als Letztes geschrieben: "Schau auf dein Handy!". Diese Zeile lese ich erst, wenn ich schon bei ALDI bin. Kurz vor der Kasse (vor dem end) . Und auf dem Handy finde ich dann eine SMS mit den Dingen, die ihr noch eingefallen sind als ich schon unterwegs war. Der Vergleich hinkt natürlich. Aber er macht vielleicht die Reihenfolge verständlicher, in der die Dinge passieren? Sie hat den Funktionsaufruf "aufs Handy schauen" schon zuhause auf den Zettel geschrieben. Aber ich führe ihn erst aus, wenn ich den ganzen Zettel ALDI abarbeite. Diese Unterteilung von Code in mehrere kleine Funktionen hat eigentlich nur organisatorische Gründe. Man könnte ebenso gut alles, was im Programm passieren soll, in ellenlangem Text untereinander schreiben. Das haben wir zu Zeiten des Commodore C64 mit dem eingebauten Basic gemacht. Ganz platt gesagt ist die Funktion in allen modernen Programmiersprachen eine bessere - wirklich viel bessere - Alternative zum alten goto. Dort, wo das Schlüsselwort function steht, wird alles nachfolgende bis zum zugehörigen end übersprungen. Und dort, wo der Funktionsaufruf (also nur der Name ohne vorangestelltes function) steht, springt das Programm dorthin, wo die Funktion definiert ist. Dann führt es alles bis zum end aus und kehrt zuletzt automatisch dorthin zurück, wo die Funktion aufgerufen wurde. Wenn man dieses Prinzip beherrscht, dann kann man damit seinen Code sehr gut organisieren. Dabei ist es ratsam, die einzelnen Funktionsblöcke möglichst klein zu halten. Ich habe vor einer Weile mal den Satz gehört: "Wenn du fünf Zeilen Code hast, dann lohnt sich vielleicht schon eine Funktion." Behaltet den mal im Hinterkopf.
  8. Funktionen - Teil 1 Mit dem print() aus dem Vorwort habt ihr eine Lua-Funktion benutzt. Das ist ein Block aus Befehlen, der einen eigenen Namen bekommt und den man komplett ausführen kann, indem man den Namen dieses Blocks schreibt. Das Besondere dabei ist, dass man beim Aufruf Daten übergeben kann, die für die Ausführung verwendet werden. Im Beispiel war das die Rechenaufgabe 6 * 7. Die Funktion print() funktioniert auch mit anderen Daten richtig. Mit 17 + 4 zum Beispiel. Und mit 2 - 1 ebenso. Schon probiert? :-) Beim Programmieren entwirft man Verhaltensmuster. Diese Muster bekommen einen Namen, damit man sie später anhand dieses Namens aufrufen kann. Das ist unabhängig von der verwendeten Sprache immer dasselbe Prinzip. Diese Arbeitsweise muss man durchschauen. Die Funktion print() ist in Lua schon fertig definiert. Und sie kann noch viel mehr als nur das Ergebnis einer einfachen Berechnung ausgeben. Aber das soll hier noch nicht Thema sein. Ich möchte euch gleich zu Anfang zeigen, wie ihr Funktionen selber bauen könnt. Damit fange ich diesen Kurs zwar in der Mitte an und nicht vorne. Aber ihr habt schneller die Möglichkeit, selbst zu experimentieren. In der Programmierung werden Funktionen definiert und aufgerufen. Bei der Definition legt man fest, was getan werden soll. Der Aufruf sagt, dass es jetzt getan werden soll. Eine Funktion ist ein bisschen so wie ein Einkaufszettel. Zuhause schreibe ich auf, was gekauft werden soll und schreibe groß oben drüber ALDI. Und im Laden krame ich dann den ALDI Zettel hervor und lege all das, was da drauf steht, in den Einkaufswagen. Um eine Funktion zu definieren, beginnt ihr mit dem Schlüsselwort function. Bitte achtet genau auf die Schreibweise! Hinter dem Schlüsselwort kommt der Name eurer Funktion und zuletzt zwei runde Klammern. Also so: function Beispiel() Die nachfolgenden Zeilen sind dann die Befehle, die beim Aufruf der Funktion ausgeführt werden sollen. Und weil es mehrere Zeilen sein können, benötigen wir zum Schluss etwas, um das Ende dieses Blocks zu kennzeichnen. Dafür benutzt man in Lua das Schlüsselwort end Man könnte also sagen, dass function Beispiel() end den Rahmen für die Funktion bildet. Dazwischen kommt die eigentliche Funktion. Also das, was beim Aufruf der Funktion passieren soll. Die Klammern hinter dem Funktionsnamen sind der Platz für die Daten, welche beim Funktionsaufruf mitgegeben werden. Und weil man diese Daten beim Entwurf der Funktion noch nicht kennt, schreibt man dort bei der Funktionsdefinition Platzhalter hinein. Den Namen dieser Platzhalter kann man genauso selbst bestimmen wie den Funktionsnamen. Nehmen wir für ein Beispiel an, dass Lua nicht das Quadrat einer Zahl bilden könnte. Dann würde man sich selbst eine Funktion dafür schreiben: function Quadrat(Zahl) Ergebnis = Zahl * Zahl end Die Namen haben dabei keine Bedeutung. Man könnte ebensogut schreiben: function Hinz(Kunz) Dingsbums = Kunz * Kunz end und die Funktion würde exakt dasselbe tun. Aber die Schlüsselworte function und end sind erforderlich und müssen genau so geschrieben werden. Dafür gibt es keine Alternativen. Bei den Funktions- und Platzhalternamen gibt es für die Schreibweise ein paar strikte Regeln, die man einhalten muss: Nur Buchstaben, Ziffern und den Unterstrich verwenden, sonst nichts! Also keine Leerzeichen, keine Sonderzeichen und möglichst auch keine speziellen Buchstaben wie Umlaute oder das ß Und der Name darf nicht mit einer Ziffer beginnen. Dieser Name wäre erlaubt: mein_Test_1 Diese Namen wären alle nicht erlaubt: 1.Test Test-Funktion Anteile in % $Vorname Nachname@Beispiel Ansonsten muss man nur darauf achten, dass man den einmal gewählten Namen exakt beibehält. Man muss also beim letzten Beispiel beim Funktionsaufruf Hinz(3) schreiben, um das Quadrat von 3 ausrechnen zu lassen. Die Schreibweise hinz(3) wird zu einer Fehlermeldung führen, weil keine Funktion mit dem Namen hinz (mit klein geschriebenem h am Anfang) definiert wurde.
  9. Vorwort Obwohl man Lua und alle die anderen Alternativen Programmiersprachen nennt, heißt "Programmieren lernen" nicht, dass man eine Sprache lernen muss. Das wird leider oft so gesagt und ich finde es sehr irreführend. Die wenigen Worte, die man für Lua oder andere Programmiersprachen benötigt, stammen alle aus der englisch Umgangssprache. Und es sind zu einem großen Teil sogar die selben Worte in allen Programmiersprachen. Für den Zweck, den Lua im 3D MBS erfüllen wird, kommt man anfangs wahrscheinlich mit einem guten Dutzend Schlüsselwörtern aus. Das ist nicht mehr, als man für einen Urlaub lernt. ("Bitte", "Danke", "Wo geht es zum Bahnhof" und "Letztes Jahr hat der Rotwein besser geschmeckt") Wenn Programmierer von sprachlichen Unterschieden reden, dann meinen sie z.B. folgendes: Um eine Fallunterscheidung zu treffen, schreibe ich in Lua: if Wert > 1 then In der Programmiersprache Python stünde: if Wert > 1: Und in der Sprache Java stünde: if (Wert > 1) { Die Worte unterscheiden sich nicht. Sondern manche Zeichen. Mal steht ein "then" am Ende, mal ein Doppelpunkt und mal steht etwas in Klammern. Man nennt diese Regeln "Syntax". Auf diese Schreibweisen muss man achten, denn Fehler in der Syntax führen unweigerlich dazu, dass ein Programm nicht funktioniert. Ihr werdet also in diesem Tutorial die Syntax von Lua kennenlernen. Diese Syntax kann man sich ohne Anstrengung ganz nebenbei aneignen. Anfangs schaut man sie nach und mit der Zeit bleibt sie von selbst hängen. Man muss diese Schreibweisen also nicht lernen. Schon gar nicht pauken. Überhaupt gibt es nichts zu pauken. Vergesst das schulische Prinzip des Auswendiglernens. Es hilft euch beim Programmieren kein bisschen. Mitdenken und Verstehen sind die richtigen Mittel. Probieren und Fehler machen sind die besten Lehrmeister. Also probiert alles aus. Ohne Ziel. Einfach, um Erfahrungen zu sammeln. Probiert und schaut dabei genau hin, was passiert. Wenn etwas falsch läuft, dann ärgert euch nicht! Schaut genau hin, was falsch läuft. Was passiert da? Wie hängt das, was passiert, mit dem zusammen, was in eurem Skript steht? Aus diesen Beobachtungen lernt ihr am allermeisten. Ich hasse unsere Schuldbildung dafür, dass sie einem das nicht beibringt. In der Schule sind Fehler ein Makel. Man muss sie vermeiden. Und wenn sie passieren, dann versucht man sie zu vertuschen, zu rechtfertigen oder schön zu reden. Das ist dumm, denn damit verschenkt man etwas sehr, sehr wertvolles. Ich werde im Tutorial eine Menge kleiner, unsinniger Beispiele geben. Mit Eisenbahn haben die alle nichts zu tun. Aber sie werden euch die Mechanismen eines Computerprogramms verständlich machen. Und wenn ihr die durchschaut, dann ist es sehr leicht diese Dinge im 3D MBS anzuwenden. Also probiert diese Beispiele aus. Und lasst euch weitere, ähnliche Beispiele einfallen um zu testen, ob wirklich alles so funktioniert wie ihr denkt. Die schnellste und einfachste Art, Lua Code auszuprobieren, findet ihr hier: http://www.lua.org/demo.html Das ist die offizielle Testseite der Entwickler von Lua. Dort könnt ihr Code eingeben und laufen lassen. Wenn ihr ins Fenster 6 * 7 schreibt und dann unter dem Fenster auf den Knopf "run" klickt, dann öffnet sich darunter ein zweites Fenster mit einer Fehlermeldung. Denn man kann in Lua nicht einfach eine Berechnung schreiben. Man muss Lua auch sagen, was es mit dem Ergebnis tun soll. Schreibt ihr oben print(6 * 7) rein, dann steht nach einem Klick auf den "run" Knopf unten das Ergebnis: 42 Probiert es aus ;-)
  10. Mit soviel Zuspruch hatte ich ehrlich nicht gerechnet. Dann beginne ich in den nächsten Tagen einen kleinen Einführungskurs, der Grundlagen der Programmierung mit Lua vermittelt. Ich denke, dass es gut ist das vorab zu tun. Weil man sich dann zum Start der V5 Beta auf die Besonderheiten im Zusammenspiel von Lua und dem 3D MBS konzentrieren kann.
  11. bin ich ganz und gar nicht. Eher ein routinierter Anfänger. Und ich habe vor, wirklich bei den Basics zu beginnen. Nicht nur Lua-spezifisch. Sondern ganz allgemein. Damit jeder zumindest in den Grundzügen verstehen kann, was eigentlich in einem Skript passiert. Wie weit mir das gelingt, muss ich selbst schauen ...
  12. Hallo Andy, aus deinem Munde ist mir das viel wert, weil ich dich zu denen gezählt hatte, denen ich vielleicht etwas wegnehmen würde. Und Reinhard trifft mit seiner Beschreibung ziemlich genau die Zielgruppe, welche ich vor Augen hatte. Ich warte aber noch ein paar Tage ab, damit z.B. auch Neo die Chance hat zu intervenieren, wenn meine Idee sich nicht mit seinen Plänen verträgt. Ich kenne und nutze sowohl den ZeroBrane Editor als auch Notepad++. Ich kann also zu beiden etwas sagen. Viele Grüße Götz
  13. Hallo, liebe 3D-MBS Freunde, meines Wissens wird die kommende Version 5 des Programms die Möglichkeit bieten, per Lua Skript Ereignisse zu steuern. Ich würde gerne meine Erfahrungen mit dieser Skript-Sprache beisteuern und für Interessierte ein Lua-Tutorial schreiben, welches sich an Einsteiger wendet. Ich weiß aber nicht, ob ich damit auf Gegenliebe stoße oder nicht. Greife ich damit jemandem anderes vor, der schon ähnliches geplant hat? Verschrecke ich unbeabsichtigt User, weil der falsche(!) Eindruck entsteht, man müsse das lernen? Verärgere ich vielleicht jemanden damit, dass ich mich "überall vordrängle, wo das Wort Lua fällt"? Mein Plan wäre, in mehreren Postings ein paar Grundlagen zur Verwendung einer Skriptsprache zu schreiben. Ganz unabhängig von der Implementierung im 3D MBS (die ich ja nicht kenne) und auf diejenigen ausgerichtet, für die das Thema Programmieren ganz neu, aber von Interesse ist. Ich glaube, dass ich mich gut in einen Anfänger hineinversetzen kann. Dass ich ein gutes Gespür dafür habe, was man in welcher Reihenfolge erklären muss, damit die Puzzleteile möglichst schnell ein erstes Bild ergeben. Zwei Monate vor dem Start des offenen V5 Beta-Tests könnte meines Erachtens ein guter Zeitpunkt sein, um sich vorab Grundlagen anzueignen, wenn man später vorhat Lua zu nutzen. Viele Grüße Götz P.S.: Ich bin nicht böse oder enttäuscht, wenn ihr "Nein, danke!" sagt.
  14. Goetz

    Oberleitung V4

    Ganz herzlichen Dank, Brummi
  15. Goetz

    Oberleitung V4

    Ich habe mangels Routine zunächst einmal nur mit einer einfachen Kurve (Radius 360) experimentiert. Die Oberleitung lässt sich bei diesem Radius noch sehr realistisch als gerade gespanntes Kabel verlegen. Ich bin aber zu nah an die Außenkanten gegangen, wie ich bei der anschließenden Probefahrt feststellen konnte. Außerdem ist meine einfache Bauweise vermutlich in technischen Details falsch. Da fehlt mir das Fachwissen. Mir ging es nur um den Pfad der OL über dem Gleis und die daraus resultierenden Abstände der Masten. Natürlich ist das im Bereich einer Weiche um einiges komplizierter. Ich wollte nur zunächst überhaupt ein Gefühl dafür bekommen, welche Mast-Abstände über einem C-Gleis entstehen. Deine zuletzt gezeigte, realistische Umsetzung sieht richtig klasse aus!
  16. Goetz

    Oberleitung V4

    Das (bzw. generell die 1:1 Abbildung einer Modellbahn im 3D-MBS) hatte ich bei meinem Hinweis komplett außer Acht gelassen, Brummi. Tut mir leid.
  17. Goetz

    Oberleitung V4

    Darf ich - gaaanz vorsichtig - anmerken, dass Oberleitungskabel, die im Kreisbogen verlaufen, nicht plausibel sind? Ich weiß natürlich, dass es dir nicht um die OL, sondern um die Masten und Zugseile geht …
  18. Wozu auch? Der Inhalt kann sich ja nur aufgrund eines Ereignisses geändert haben.
  19. Genau genommen hast du versehentlich das Gegenteil geschrieben:
  20. Hallo Quackster, verlangst du wirklich, dass Neo selbst "zwischen den Jahren" jederzeit parat steht um Fragen oder Bitten zu beantworten? Kannst du dir gar nicht vorstellen, dass er in diesen Tagen mal andere Dinge im Kopf hat, als das 3D-MBS und die Sorgen seiner Community? Viele Grüße Götz
  21. Das hat leider den Nachteil, dass sie über Kurven einen schwungvoll gebogenen Verlauf hat.
  22. Du bringst da etwas durcheinander, Seehund. Ich sprach nicht von EEP!
  23. Hallo Franz, ... (bei Shootern, Adventures, Rollenspielen etc.) stecken professionelle Modellbauer dahinter, die in Festanstellung arbeiten und sehr genaue Richtlinien befolgen müssen. Die alle unter einem Supervisor arbeiten, der stets das Zusammenspiel aller Elemente im Auge behält. Keiner dieser Grafiker kann da seinen eigenen Dickkopf durchsetzen. Weil nur so gewährleistet ist, dass alle Teile zusammen ein rundes Ganzes ergeben. Die Balance zwischen Optik und Performance ist schwer - keine Frage. Aber genau dieses Können (und die Erkenntnis, dass das Zusammenspiel wichtiger ist als das individuelle Modell) zeichnet die Profis aus, welche für die großen Firmen arbeiten. Du sprichst davon, dass es sich doch nur um ein einzelnes Modell handelt und vergisst dabei, wie schnell es eine Vielzahl solcher einzelnen Modelle geben wird, wenn jeder Modellbauer die vorgegebenen Grenzen nach eigenem Gutdünken ignorieren darf. Denn wenn schon ein kleiner Fahrradständer mehr darf als vorgegeben ist, welche Art Modell darf es dann nicht? Viele Grüße und nichts für ungut Götz
  24. give deepl.com a try. The results are significantly better than those from Google.
  25. Das musst du nicht, Feuerfighter. Es tut mir leid, dass ich das nicht erkannt hatte. Aber du musst dich durch meinen Hinweis auch bitte nicht persönlich angegriffen fühlen. Wirklich erstaunlich. Ich hätte nicht gedacht, dass es das tatsächlich gibt. Vielen Dank fürs Bild Viele Grüße Götz
×
×
  • Neu erstellen...