Modding Objekte, Verkehrswege und andere Props

  • Viel Hilfe finde ich hier, wenn es um die Erstellung von Fahrzeugen geht. Ist ja auch logisch, es ist ja ein Verkehrsspiel.
    Allerdings habe ich, und auch andere festgestellt, dass es teilweise an bestimmten Häusern mangelt, und auch die Verkehrswege sind zwar zahlreich vorhanden, aber derzeit nicht erweiterbar.
    Bei den Häusern und Bäumen habe ich ja auch bereits erste Erfolge gehabt, dazu habe ich jetzt auch ein kleines Tutorial geschrieben, wie man Objekte in CIM einbindet.


    Allerdings würde mich es auch reizen, die vorhandenen Verkehrswege zu erweitern. So denke ich unter anderem an Hochstraßen oder auch diagonale Wasserüberführungen. Derweiteren konnte ich auch noch nirgends (korrigiert mich, wenn ich mich irre) weitere Texturen (Ackerflächen usw) finden können.


    Objekt für die Straßen zu erstellen sollte für mich prinzipiell machbar sein; außer, die dortigen Objekte werden anders dargestellt. Auch in die Verknüpfungen der zahlreichen Straßenobjekte mit den wenigen *.dds-Dateien ließe sich für benutzerdefinierte Objekte ändern.
    Meine Frage bezieht sich vor allem, wie sich neue Objekte einbinden lassen. Wo finde ich zum Beispiel die Pfad-Scripte? Da noch mal großen Dank an eis_os. Er hat es wirklich herausgefunden. Sie sind tatsächlich in der Object-Datei direkt eingebunden! Mehr dazu hier.


    Schön wäre auch mal, diese GRID_.. Funktionen erklärt zu bekommen. Erst einmal die Grundsätzlichkeit, wie man sie zusammensetzen kann, und wie nicht. Was die einzelnen Komponenten bedeuten, und wofür die gesamte Anweisung gut ist.


    Bestes Beispiel wäre eine Erklärung von letztens.
    this.flags =

    Code
    GRID_ITEM_PAVEMENT             = Ergibt einen Betonsocken um das Objekt


    So könnte ich mir die Erläuterungen weiter vorstellen. Für die Typenbestimmung könnte es so ausschauen:


    this type =

    Code
    GRID_ITEM_GROUND_METRO         = Ebenerdige U/Hochbahn
    GRID_ITEM_SUBWAY_METRO         = Unterirdische U-Bahn
    GRID_ITEM_ELEVATED_METRO       = Hochbahn


    usw.


    Werde mal demnächst weitere Anweisungen hier erläutern.
    Und technisch interessante Infos in den folgenden Posts habe ich grün hinterlegt ;)
    Hier ein paar spezielle Links:

    12 Mal editiert, zuletzt von ArkenbergeJoe () aus folgendem Grund: Aktualisierung des Beitrages

  • Pfade? Du solltest lesen was ich zu den modifizierten gs_tools geschrieben habe und im Quad U-Bahn Thread... CIM Internals hat auch etwas über die Objekt Scripte.

    Du meinst bestimmt diesen Beitrag im Quad U-Bahn Thread . Also gibt es da wohl wirklich nichts anderes!
    Objektscripte bezüglich Häuser und Bäume habe ich bereits durchschaut, nur bei den Straßen drehe ich mich noch im Kreis.
    Auch ist CIM doch etwas anders als SC4* aufgebaut, hier lese ich mich ja gerade erst richtig ein. Daher kann es auch mal vorkommen, dass ich mal die eine oder andere "dumme" Frage stelle. ?(
    Also bitte nicht übel nehmen. Ach, und letzlich können ja dabei andere Neulinge hier mitlesen, und mitlernen.


    EDIT: Offenbar war meine Frage doch nicht so dumm. Jetzt habe ich auch die Anweisung im Objekt under dem Materialverweis gefunden. Wer ahnt eigentlich, Pfade im Modell zu finden. Hätte ich mal eher den Beitrag finden sollen. Die Anweisung sieht ähnlich den der von SC4 aus. 3 Anweisungen für die eine Richtung und 3x in die Gegenrichtung. Aber das hast du ja längst rausgefunden. Aber wie bekäme man nun Pfade bei Eigenkreationen da hinein? Gibts da nicht bereits einen Exporter.
    EDIT2: Nur hier ? Aber die Antwort steht ja auf Seite 4....


    *) Für Technikinteressierte:

    • Bei SC4 gibt es Instancen-ID Verweise, Funktionen wurden mit IIDs beschrieben, die funktionstragende Subdatei hatte die entsprechende IID.
    • Und eine Subdatei ist ein Dateiteil einer *.dat-Datei, bzw *.SC4Lot oder *.SC4Modell-Datei. Innerhalb dieser *.dat-Dateien gibt es keine Dateinamen, sondern 3teilige ID's (Type/Group/Instance)
  • CIM ist nicht so kompliziert.


    Aber die Modifizierten gs_tools hast schon gesehen?
    [Tool] Modifizierte gs_tools bei eis_os - Tools & more - Cities in Motion - Fanpage


    Ich werde mich an nach dem schreiben eines Mod Managers wieder der Fertigstellung eines Importers und Exportes für Pfade in ein eigenes Format widmen.


    Die ersten Tests sahen recht vielversprechend aus. Zumindest im Hex Editor. Ich muss noch ein komplettes Set Tram Teile bauen, keine Ahnung wenn ich das alles machen soll außerdem hab ich noch immer keine Idee wie ich Teile per Blender bauen kann die ich einfach verbiegen kann. :S

  • Ja, deinen gs_exporter habe ich gerade ausprobiert. Ist schon mega, er konvertiert aus der xxx.object-Datei (small_turn) eines Verkehrsweges tatsächlich 2 separate Dateien:

    • eine xxx.obj-Datei. Diese lässt sich in Blender oder einem anderem 3D-Programm bearbeiten, bzw zum Bearbeiten dort hineinexportieren.
    • eine xxx_paths.obj-Datei. Diese lässt sich auch dann in Blender exportieren (oder ein anderes 3D-Programm). Die Pfeile stellen die Fahrt-Pfade und Richtung der später mal verkehrenden Fahrzeuge dar.

    Alles lässt sich wie andere Objekte bearbeiten, und das Zurück probiere ich später mal aus.
    Was mich wundert, ist, dass das innere Gleis nur einen Anfangs und Endpunkt hat. Das sollte eigentlich ein recht kantiges Abbiegen zur Folge haben?


    Wie willst du deine Gleise gebogen haben? Eine große weite Kurve?

  • Importieren geht so nicht. Wie schon beschrieben war es mir noch nicht möglich die Quad Rotation eines Meshes zurück zu rechnen. Das Blender die Punkte in der Reihenfolge beim Export ändert hilft auch nicht gerade dabei. Daher wird es wie gesagt ein Textformat geben. Das ist zwar nicht schön, wird aber zu Überprüfung der Punkte aber zu einen obj exportiert werden können, also ne Art Vorschau. Wer mehr haben möchte kann mir gerne Quellcode Patches schicken 8)


    Zu den Pfaden.


    Da ich nichts anderes in den Dateien gefunden habe, gehe ich davon aus das jeder Pfad zwischen zwei Punkte mit einer Kurve (so in Richtung Bezier Werkzeug) durch CIM Verbunden werden. Deswegen sind nicht nur die 3D Punkte wichtig sondern auch die Richtung in der ein "Punkt" zeigt. Die Pfeile sind nur eine Art der Darstellungsform.


    Zu Blender:


    Ich möchte X Punkte definieren, die in eine Kurve umwalden, und dann soll Blender mir ein Mesh erstellen. (Am besten wären hier natürlich gleich die Pfad Punkte zu nutzen)
    Die Beispiele mit Blender die ich bis jetzt gesehen habe (Modifier) drehen schon mal das Mesh auf den Kopf um es an einer Kurve auszurichten damit es dann richtig herum folgt, das geht so nicht da ich an vorhandene Teile anbauen möchte und die Kurve bzw. deren Punkte schon existieren.

  • Beim Mesh erstellen kannst du ja einen beliebigen Bogen bauen. Dieses würde ich als separaten Mesh lassen. Anschließend würde ich die Tramgleise danach neu ausrichten. Also den neuen gebogenen Mesh würde ich nur als Schablone nehmen, und für weitere Gleismodelle als Arbeits.obj gleich speichern und weiterverwenden. Wenn die Gleise fertig sind, den Bogenmesh rausschmeissen, dann diese als Neue_Gleis.obj exportieren.


    Und wenn es noch kein Re-Importer gibt, ist es auch nicht so schlimm, ich habe ja immer noch ein Kraftwerk zu bauen. Und nebenbei habe ich auch noch einen Garten. Einen richtigen, aber virtuell habe ich diesen auch... ;)

  • Hab es nochmalig versucht, aber irgendwie ist 3D Mesh Erstellung nicht so mein Ding, ich hab nochmalig versuch eine Art Weiche zu bauen um von Zweigleisig auf Eingleisig zu kommen, aber das klappt irgendwie nicht :S Auch wenn ich das normale Tramgleise mit Subdivison aufspalte, eine schöne Kurve bekomme ich damit nicht hin.

  • Soll das etwa so aussehen?



    Allerdings muß ich für die überlappende Strecke die halbtransparente Textur nehmen. Die der abbiegenden Gleise.


    Im übrigen habe ich mir nun die CIMInternals.txt angeschaut, und WOW, dort sind ja wirklich alle Begriffe, die für irgendwelche Anweisungen in CIM gut sind, sauber zusammengefasst. :)

  • wie sieht das eigentlich aus mit den per Skript erzeugten Pfaden(bspw die "Einstiegspfade" in Fahrzeuge):

    Zitat

    this.addPath(<name>, GRID_PATH_<START|END>, <vector>, <quat>, <vector>, <quat>);


    Sind die nötig damit die im Modell definierten Pfade auch benutzt/aktiviert werden ?
    Oder ist es nur eine zweite, gleichwertige Möglichkeit Pfade zu definieren ? i.e. funktioniert also auch wenn im Modell selber keine Pfade enthalten sind ?


    eis_os
    hast du weiter vor an den gs_tools weiterzuarbeiten & sie zu hosten ? Was Importer/Exporter angeht wollt ich zwar nix weiter machen. Aber ein paar Einzelheiten zu den Strukturen könnt ich noch hinzufügen. Wär vielleicht ganz gut wenigsten die gesammelten Informationen zu den Dateiformaten zentral zusammenzuführen(=> gs.h ).


    (allerdings verabschiede ich mich bald eh erstmal für 3Wochen in die franz. Wildnis, also vor oktober passiert da eh nix)


  • Zu den Pfaden per Script habe ich nix getestet. Ich denke die Pfade sind in einer internen Map mit dem jeweiligen Namen gespeichert. Warum das Interface nicht der Internen Daten gleichen, d.h. Position als Vektor und Richtung als Quad, keine Ahnung. (GSScript kennt ja auch Quat als Datentyp)


    --
    Modifizierte gs_tools


    Ehm, ich Arbeite ja an den gs_tools, nur eben wenn ich ein Feature benötige und die Zeit reicht. Ich hab ja auch schon die gs.h und alle Tools erweitert.
    Ich möchte aber unfertige und ungetestete Versionen nicht in die freie Wildbahn geben, ich kann aber gerne auch gs.h öfters hoch laden auch wenn ich noch nicht alles fertig habe.


    Wie schon erwähnt, mir kann jeder gerne .diffs schicken.


    Das sollte vielleicht aber nach [Tool] Modifizierte gs_tools bei eis_os - Tools & more - Cities in Motion - Fanpage verschoben werden...


    -edit-


    Ich hab mal die aktuelle gs.h Datei hochgeladen...

  • Zitat


    Ja, dem stimme ich auch zu, denn ab Post 8 gehts es eigentlich nur noch um die Gestaltung derTramgleise, und nicht mehr um helfende Ratschläge. Da bin ich aber auch nicht ganz unschuldig dran .... :whistling:
    EDIT:
    Ein paar Tipps folgen jetzt aber doch:


    • Doppelgleis.obj in Blender importieren
    • Das 2. Gleis auf ein Viertel oder Drittel skalieren
    • Textur anpassen wie auf dem benachbarten Primärgleis
    • Das Gleisteil nun sooft kopieren und hintereinander setzen, bis die ursprüngliche Länge wieder erreicht ist.
    • Jetzt auf die jeweilige Edge selektieren, und so verschieben, wie es gefällt.
    • Mit allen Edges auf dem Sekundärgleis genauso verfahren, bis die Kurvenform fertig ist.
    • Nun die Edges so drehen, dass sie jeweils im rechten Winkel zur dort an der Stelle befindlichen Fahrtrichtung liegt. Damit wird die Textur entzerrt.
    • Speichern und in Weiche.obj exportieren.

    Das sieht dann so aus:



    Rechts befindet sich das Primärgleis, links das Sekundäre. Es besteht nunmehr aus 3 Teilstücken. Die Verbindungsstelle zwischen #1 und #2 hätte noch rechtwinkliger ausfallen müssen.... :D

  • Was gerade aufgefallen ist, es fehlt ein Tutorial, wie man Objekte ins Spiel bringt.
    Ausführlich wirds jetzt nicht, aber eine kleine Kurzerklärung geb ich mal zum Besten:

    • Eine *.dds-Datei erstellen, wo alles drauf ist, was das Haus begehrt. Diese kann aber jederzeit nachträglich abgeändert werden. Gespeichert werden muß sie im BC1/DXT1-Format (Generate mipmaps)

    • Mit Blender ein Objekt kreieren, welches diese *.dds als Textur verwendet. Das Objekt muß ausschließlich aus Triangles bestehen. Ein Blender-Tutorial gibt es direkt bei der Blender-Website.

    • Jetzt muß das Blender-Objekt in ein obj-Objekt exportiert werden. Es werden dabei folgende Optionen notwendig:
      # Selection Only
      # Rotate X90
      # Normals
      # High Quality Normals
      # UVs
      # Materials
      # Triangulate
      # Objects as OBJ Objects

    • Nun besitzt du eine *.obj- und eine *.mat-Datei

    • Jetzt erfolgt mit der gsobj_import.exe die Konvertierung der Dateien in eine output.object- und output.-material-Datei

    • Die output.object-Datei entsprechend umscripten, am besten die Dateistruktur eines bestehenden Objekts, am allerbesten anhand eines Addons.

    • Die output.material-Datei ist etwas für den Papierkorb, da ist es besser, eine vorhandene und dem Verwendungszweck (Baum, Haus, Auto) angepasste Material-Datei umzuschreiben.

    • Es werden noch weitere *.dds benötigt, einmal die
      _n.dds (bläulich, bildet Schatten an Fensterleibungen u.a. aus;
      _s.dds (schwarz mit hellen Flächenteilen; sorgt für Fensterspieglung)
      _ao_dds (weiß mit schwarzen Schattierungen; für Schmuddeleffekte)
      _i.dds (schwarz mit Lichterfeldern, ist für die Beleuchtung)
      b.dds ist ein Sonderfall, er kann für die diagonalen Gegenstücke Verwendung finden.

    • Die dds-Dateien werden per Materialdatei auf dem Objekt eingebunden. Erscheint zum Beispiel trotz vorhandener _i.dds-Datei keine Beleuchtung auf dem Haus, ist es in der Material-Datei so nicht vorgesehen. Tipp: Beim Grundspiel hat die Materialdatei vom Cinema eine Beleuchtungsfunktionalität. Ich habe sie mir auch für das Kraftwerk "umgestrickt".

    • Damit alles funktioniert, wird auch noch die*.script-Datei benötigt. Auch hier am besten eine vorhandene Datei kapern und umschreiben.

    • Und die *.bmp (die mit den grünen, schwarzen und auch blauen Feldern) nicht vergessen.

    • Nun fehlen noch eine
      # .scene-Datei
      # .properties-Datei und
      # .skeleton-Datei
      Diese Dateien auch entsprechen umschreiben.

    • Dateien mit dem Namenszusatz LOD werden NICHT benötigt. Diese sind nur für die CIM-Objekte nötig, weil sie für die Fernansicht eigene Texturen verwenden.

    • Darauf achten, dass alle Dateien den selben Namen haben. Es ist zwar nicht bei allen erforderlich, für den Anfang sollte man es aber so machen.

    • Nun den Unterordner im Ordner "Addon" erstellen:
      # Der Primärordner kann einen frei erdachten Namen haben. Mindestens 2 weitere Unterordner werden gebraucht:
      ## Ein Ordner namens objects: Hier kommen alle jetzt erwähnten Dateien rein.
      ## Ein Ordner namens script: Hier kommt die environment.script Datei hinein. Je nach Verwendungszweck am besten eine vorhandene environment.script aus einem Addon studieren und dem eigenem Objekt anpassen.

    • Nun sollte das neue Objekt im entsprechendem Menü erscheinen und sich setzen lassen.


    Einmal editiert, zuletzt von ArkenbergeJoe () aus folgendem Grund: Liste benummert

  • Ich habe gerade gestern noch einmal Zeit für die unterschiedlichen DDS gehabt; ein Kraftwerk muß ja ordentlich beleuchtet und verschmuddelt sein; da ist es mir mal wieder aufgefallen:

    Zitat

    Es werden noch weitere *.dds benötigt, einmal die
    _n.dds (bläulich, bildet Schatten an Fensterleibungen u.a. aus;
    _s.dds (schwarz mit hellen Flächenteilen; sorgt für Fensterspieglung)
    _ao_dds (weiß mit schwarzen Schattierungen; für Schmuddeleffekte)
    _i.dds (schwarz mit Lichterfeldern, ist für die Beleuchtung)

    Während die _n.dds und _s.dds Texturen bei Originalgebäuden stets deckungsgleich mit der Primärtextur ist, verhält es sich mit der _ao.dds anders. So ist es zum Besispiel möglich, gleich texturierte Schornsteine mit unterschiedlicher Verschmutzung auszustatten. Ob es bei der Beleuchtungstextur auch so funktioniert, entzieht sich meiner Kenntnis. Weiß jemand dazu mehr, oder hat jemand dazu auch auf anderssprachigen Websiten gefunden? ?(

    2 Mal editiert, zuletzt von ArkenbergeJoe () aus folgendem Grund: Fragezeichen-Smilie dazu gesetzt.

  • [*]Mit Blender ein Objekt kreieren, welches diese *.dds als Textur verwendet. Das Objekt muß ausschließlich aus Triangles bestehen. Ein Blender-Tutorial gibt es direkt bei der Blender-Website.


    sollte auch aus Quads bestehen können, solange man beim Exportieren dann die Option "Triangulate" aktiviert.


    [*]Es werden noch weitere *.dds benötigt,


    diese sind optional, unbedingt nötig sind sie nicht. Gerade bei kleinen Objekten verzichtet man besser darauf um Speicherplatz zu sparen



    [*]Nun fehlen noch eine
    # .scene-Datei
    # .properties-Datei und
    # .skeleton-Datei


    bei mir hats auch immer ohne diese Dateien funktioniert. Nötig sind die vermtl erst für komplexere Sachen(Animationen, zusammengesetzte Objekte aus mehreren .object Dateien, ...)

  • Apropos, hat schon jemand rausgefunden wie man Animationen in CiM bringen kann? Zb wie das Riesenrad, die Windmühe, die Achterbahn oder gar Menschen? Wär ja cool wenn man das mit Keyframes in Blender machen und dann exportieren könnte.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!