Beitragsseiten

Tutorial: MODding von gerenderten und Network-SC4Modellen 

Stell Dir vor Du möchtest ein gerendertes Modell (eine ".SC4Model" - Datei) verändern, ohne es neu zu rendern nach Änderungen in Gmax oder 3dsMax. In den meisten Fällen wird es einfacher sein, das Modell in Gmax zu ändern und dann neu zu rendern. Aber unter bestimmten Umständen können SC4Models geändert, repariert oder verbessert werden. Zum Beispiel, wenn das ursprüngliche Gmax Modell verloren gegangen ist oder korrupte Dateien erzeugt. Und ein paar Dinge, wie zum Beispiel das Erstellen von NAM-Modellen, können nur mit dieser Technik erreicht werden. Allerdings handelt es sich um eine zeitaufwendige Technik - die Rückkehr in Gmax und neu rendern ist in der Regel die schnellere Lösung. In diesem Tutorial wird die Technik anhand eines gerenderten Modells erklärt.

Einleitung

Als ich zu lernen anfing, wie benutzerdefinierte Inhalte für Sim City 4 funktionieren, begann ich am Ende: die Analyse der bestehenden Modelle, Desc, Lot- und DAT- Dateien mit dem Ilive Reader und SC4Tools. Dann spielte ich herum und veränderte bestimmte Teile und über einen Zeitraum von mehreren Monaten habe ich gewisse Kenntnisse erworben, die ich mit der Gemeinschaft teilen möchte. Die beschriebene Technik ist nicht neu, aber offenbar nicht sehr bekannt und nicht veröffentlicht worden (obwohl ich sicher bin, dass es einige Experten gibt, die mehr wissen). Ich glaube, es gibt noch viel zu tun, und hoffentlich ein paar von euch nehmen einige der Ideen auf, die hoffentlich zu neuen interessanten Modellen für unsere geliebten Spiels.

Dies ist ein MODding Tutorial für fortgeschrittene Benutzer. Es ist nicht für Anfänger!
Es ist nicht ein B.A.T. Tutorial - wir haben bereits ein gerendertes Modell gespeichert in einer ".SC4Model" oder ".Dat" Datei. Es ist auch kein Lot Tutorial.
Der Reader und auch FiSHMan sind erforderliche Werkzeuge für diese Technik, SC4Tools ist sehr nützlich. Erfahrung mit diesen Werkzeugen wäre hilfreich.

Wenn Du ein SC4Model eines anderen Autors änderst, gibt es ein Copyright-Problem. Du mußt immer die ursprünglichen Autoren um Erlaubnis fragen, bevor Du eine modifizierte Version veröffentlichst.

 

 


Appetitanreger

Skalieren von Modellen:

Du hast ein Gebäude runtergeladen, das in Deiner Meinung zu groß ist. Skaliere es einfach!
Im Beispiel der Eiffelturm von JEC, 8x8 Felder:

Image

Das Original ist wundervoll, aber ein bisschen zu groß. Mit der Technik in diesem Tutorial hat N1_2888 vom SFBT es auf 6x6 skaliert und seine Höhe auf 75% der ursprünglichen reduziert (nicht für die Öffentlichkeit freigegeben).

Image

Unvollständige Modelle:

Wiener Votivkirche von Debussyman wurde nicht im Zoom 1 angezeigt

Image

Mit dieser Technik wurde Zoom 1 restauriert:

Image

Komplexe Veränderungen der bestehenden Modelle

Beispiel: Biegung des geraden Autobahn 3D-Modell in ein sanft geschwungenes Modell

Image

Dieses Modell ist nur ein Vorschau-Modell, nur der erste Schritt sehr vieler Schritte, die nötig wären, um ein solches Modell für den NAM zu erstellen. Memo hat inzwischen mit einer anderen Technik eine geschwungene Autobahnkurve erstellt (im NAM vom April 2008).

Ich glaube, dass weitere faszinierende Effekte möglich sein werden, wie Geister-Effekte durch das Mischen verschiedener Tag- und Nacht- Modelle oder teilweise Verlagerung der Modelle unter der Oberfläche.


Grundlagen über S3D und FSH

Bevor ich beginne, die Technik des MODding gerenderter SC4Models zu beschreiben, ist es notwendig, einige der Grundlagen zu S3D und FSH-Dateien, die in SC4Model Dateien enthalten sind, zu erklären.
Als Beispiel nehme ich die SC4Model Datei aus der SFBT Aral-Tankstelle von Royal, SFBT_ARAL_Tonnendach-Datei 0x5ad0e817_0xd1188252_0x30000.SC4Model

Öffne die Datei mit dem Ilive Reader und klicke zweimal auf "Instanz". Dieses sortiert alle enthaltenen "Dateien" nach ihrer Instanz-ID.

Image

Sieh Dir die sechste Stelle an - es ist 0, 1, 2, 3 oder 4. Diese Zahl steht für die Zoom-Ebene (Tasten 1 bis 5 im Spiel entspricht Zahlen von 0 bis 4).
Sieh Dir die siebte Stelle an - es ist 0, 1, 2 oder 3. Diese Zahl steht für die Blickrichtung.

Klicke auf die S3D Datei mit der ID 00030400. Unten rechts gibt der Reader eine grafische Darstellung.
Mach Dich vertraut mit dieser Anzeige: klicke auf die Tasten zum hinein- und herauszoomen, schalte Nacht an / aus, und drehe in 3D. Sieht lustig aus. Klicke auf die Schaltfläche "Drahtmodell" und drehe. Klicke auf "Beide" und drehe. Es wird offensichtlich, dass es mehrere texturierte Dreiecke sind, dass dieses Modell bilden.
Schalte Gruppe "0", "1" und "2" ein- und aus. Jetzt vergleiche mit den FSH-Dateien 00030400, 00030401 und 00030402. Die FSH-Datei enthält die Textur der Gruppe.
Vergleiche auch mit FSH-Dateien 00038400, 00038401 und 00038402. Diese FSH Dateien enthalten Nacht Texturen.

Wähle erneut die S3D-Datei mit ID 00030400. Im oberen rechten Teil, klicke auf "Mats":

Image

Hier ist der Zeiger vom S3D Model zur FSH Textur.

Klicke auf "Prim" :

Image

Alle Gruppen sind vom Typ "triangle" (Dreieck), und die erste Gruppe besteht aus 39 Vertices in diesem Fall.

Klicke auf "Indx" und das + vor der ersten Gruppe:

Image
Zum Vergrößern bitte anklicken

Jedes Dreieck wird durch drei Vertices definiert, und jedes Vertex wird durch einen Index benannt.

Klicke auf "Vert" und das + vor der ersten Gruppe:

Image

Für jede Vertex gibt es zwei Sets von Koordinaten: x, y, z, und u,v
x, y, z gehört zur darunter liegenden 3D Darstellung

Doppelklicke in die z-Zelle der Vertex 11, gib 0 ein und tippe Return. Du hast gerade das Modell deformiert.

Image

Klicke nicht auf den Button "Apply". Klicke links auf eine andere Datei. Der Reader wird eine Frage stellen (darauf hinweisend, dass Du noch nicht "Apply" geklickt hast). Klicke auf "Ja".

Wähle erneut die S3D-Datei mit ID 00030400. Im oberen rechten Teil, klicke auf "UV-Karte". Wähle den ersten Material Namen.

Image

Das Bild in der oberen rechten Ecke zeigt die Textur (FSH der referenzierten Datei). Bewege den Cursor auf das Bild - und U-und V-Werte werden angezeigt. Diese Werte liegen im Bereich von 0 bis 1.

Es gibt blaue Punkte. Versuche einen auszuwählen. Möglicherweise mußt Du dazu bei gedrückter Maustaste die Maus darüber bewegen, bis der blaue Punkt selektiert wird (ein weißes Feld öffnet sich). Klicke auf den Punkt und bewege ihn irgendwo hin. Schaue auf die 3D-Darstellung unten!

Image

Du hast das Dach der Tankstelle verformt.
Klicke wieder nicht auf den Button "Apply". Klicke links auf eine andere Datei. Der Reader wird eine Frage stellen (darauf hinweisend, dass Du noch nicht "Apply" geklickt hast). Klicke auf "Ja".

Natürlich stehen die x-, y-, z-Koordinaten des 3D-Modells im Zusammenhang mit der u, v-Koordinate der Textur.
Dies ist eine Reihe von Parametern, die wir ändern mit dem Reader können. Nun, die meisten Änderungen ergeben keinen Sinn, aber es sind auch ein paar sinnvolle Änderungen möglich, die wir fürs Modden nutzen können.


Mehr über FSH Textur-Dateien

Weiter arbeitend mit dem Aral-Tankstellen Modell, klicke auf den "Filter"-Button ganz oben, wähle nur FSH-Dateien aus, aktualisiere und klicke zweimal auf "Instanz", um nach Instanz-ID zu sortieren.
Mit der 000304xx FSH Textur dargestellt auf der rechten Seite, probiere jede der Optionen "Nur Farbe", "Nur Alpha", "Alpha blended".

Image

Das Spiel mischt die alpha-blended Textur in die Stadt ein.

Probiere auch die drei Optionen für die Nacht Texturen. Entsprechende Tag- und Nacht- Texturen sind offensichtlich ähnlich. Das Spiel mischt Tag- und Nacht- Texturen (4 Texturen!) während der Nachtzeit.

Dies eröffnet weitere Möglichkeiten für Modding. Dazu exportieren wir die FSH Textur, ändern Sie mit Grafik-Software und importieren sie zurück.
Außerdem können wir "Geister"-Effekte durch die Einführung absichtlicher Unterschiede in der Nacht Textur erstellen. Ein Gebäude kann nachts anders aussehen als am Tag.

FSH Textur exportieren:
Wähle einen oder mehrere FSH-Dateien Reader aus und klicke auf "Save selected file(s)". Ich benenne die Dateien um in "fxxxx.fsh", wobei xxxx für die letzten vier Ziffern der Instanz-ID steht.
Öffne FiSHMan, öffne eine FSH-Datei, klicke mit der rechten Maustaste auf "#1" und wähle "Export-Color".

Image

Ein Datei-Auswahl-Box öffnet sich, vergiss nicht zu einem Grafik-Format wie PNG oder BMP zu wechseln. Wiederhole diesen Vorgang für "Export-Alpha".

FSH Textur importieren:
Öffne FiSHMan, öffne eine beliebige FSH-Datei, klicke mit der rechten Maustaste auf "#1" und wähle "Remove". Rechtsklicke auf "Bitmaps" und wähle "Import Bitmaps". Das "Insert new bitmap"-Fenster öffnet sich.

Image

Gib Dateinamen für die Bitmap (Farbe) und Alpha-Map an und vergiss nicht den FSH Bitmap-Typ "DXT3 Compressed, with Alpha" auszuwählen. Nach "OK"-Klick, zurück im FiSHMan Hauptfenster, wähle "#1" und prüfe die Darstellung. Schalte die Optionen "Nur Farbe", "Nur Alpha" und "Alpha blended", um sicherzustellen, dass alles richtig ist. Verwende "Datei - Speichern unter" um die neue FSH Datei abzuspeichern.

Im Reader, wähle die Dateien, die Du ersetzen möchtest und rechts-klicke "Copy Entry ID" und dann "Remove". Klicke mit der rechten Maustaste auf "Insert & Compress file" und wähle die neue FSH-Datei aus. Im neuen Fenster, gib "FSH-File" als Dateityp an. Die FSH-Datei wird geladen.
Jetzt muss nur noch die richtige Gruppe und Instanz-ID gesetzt werden (klicke "Paste Enty ID"). Der Reader aktualisiert die Anzeige nicht sofort. Auf der äußerst linken Seite, wechsele in "Blank dat" und wieder zurück in die Datei und die Anzeige wird aktualisiert.
Speichere die Datei SC4Model vor weiterem Klicken ab, sonst riskierst Du einen Absturz des Readers.


Mehr über S3D Modell-Dateien

Weiter arbeitend mit dem Aral-Tankstellen Modell, klicke auf den "Filter"-Knopf, wähle nur S3D Dateien aus, aktualisiere und klicke zweimal auf "Instanz", um nach Instanz-ID zu sortieren.

s3d moddingh

Wähle "Wireframe" aus und klicke auf einige andere S3D Modelle. Du wirst sehen, daß für kleinere Zooms (xxxxx0xx - xxxxx3xx) die S3D Modelle sehr einfach sind.

Image

Sie bestehen aus sechs Dreiecke definiert durch sieben Ecken (Vertices).

Außerdem kannst Du leicht überprüfen, daß für dieses Modell (wie für viele andere Modelle auch) in einer bestimmten Ansicht (zB xxxxxx20) das S3D Modell (fast) identisch ist für die Zooms xxxxx0xx zu xxxxx3xx. Nur im größten Zoom xxxxx4xx ist das Modell komplex.
Das Wort "fast" bezieht sich auf die Referenz auf die Texturen (unter "Mats"). S3D Modell 00030320 verlinkt auf FSH Textur 00030320 usw.

Die Schlußfolgerung, daß S3D Modelle (fast) identisch sind, ist wichtig, da es mehrere Möglichkeiten für Modding eröffnet. Die Schlußfolgerung scheint für die meisten Modelle gültig zu sein, aber nicht für alle.

Kopieren von S3D Dateien im Reader ist einfach: Wähle eine S3D-Datei, cntrl-C, cntrl-V. Denke daran, die Instanz-ID und die Referenz auf die FSH Texturen unter "Mats" zu ändern (oder auch nicht, je nachdem, was Du erreichen willst). Speichere die SC4Model-Datei oft, weil die Gefahr von Abstürzen des Readers hoch ist.

Export und Import von S3D Dateien
Der Reader ermöglicht den Export und Import von .s3d und .3ds Dateien. Es handelt sich um binäre Formate.

Es gibt einen Trick, der das Exportieren und Importieren in MS Excel oder OpenOffice Calc erlaubt. Dieses ist im Workflow im nächsten Kapitel beschrieben.


Skalierung oder Verschiebung eines Modelles

Skalieren der S3D Modelle ist sehr einfach. Manuelle Bearbeitung ist möglich, wenn alle 20 Modelle (für jede Zoom und jeder Blickrichtung) einfach sind; das heißt, aus nur wenigen Dreiecken bestehen. Bearbeite einfach die Werte für x, y, z, wie im Grundlagen-Kapitel beschrieben. Ich habe die SFBT BSC erweiteren Marrast Nebenstraßen - Unterführungen auf diese Art und Weise erstellt.

Für die meisten Modelle ist die manuelle Bearbeitung nicht möglich, weil das S3D Modell für den detailliertesten Zoom zu viele Dreiecke hat. Dann wende den folgenden Workflow an, wie beispielsweise für den Eiffel-Turm (siehe Bilder in Kapitel 1).

Öffne MS Excel oder OpenOffice Calc (leere Datei)
Im Reader, wähle die Datei S3D. Klicke auf "Vert" und jedes + vor den Gruppen.

Image

Wähle alle Werte x, y, z, und klicke auf Cntrl-C zum Kopieren.
In Excel oder Calc, klicke auf Cntrl-V. Verwende Formeln zum Skalieren aller Werte (für unseren Test skalierten wir den Eiffelturm auf 0,75, von 8x8 bis 6x6 Felder). Markiere und kopiere alle neuen Werte mit Cntrl-C.
Im Reader unter "Vert", wähle die oberste Zelle für x und drücke Cntrl-V.
Klicke auf Übernehmen und speichere die Datei. Vergiss nicht, die Modellgröße im Gebäude Exemplar zu aktualisieren (Desc-File).

Du kannst auch Modelle verschieben, auf die Mitte zentrieren oder Teile in den Untergrund verschieben. Oder invertiere ein Modell: kopfstehende Pyramiden. Viele Möglichkeiten für Modding ...
Das sanft geschwungenen Autobahn-Vorschau-Modell (siehe Kapitel "Appetitanreger") wurde so ähnlich erstellt, nur die Formeln in OpenOffice Calc waren komplexer als eine einfache Skalierung.


Arbeitsverlauf: Repariere Modelle

Angenommen, Du hast eine unvollständige oder korrupte SC4Model Datei. Unter bestimmten Bedingungen kannst Du sie reparieren.

Zum Beispiel, ich restaurierte Zoom 1 für Debussyman's wunderbare Votivkirche (siehe Bild in Kapitel 1) mit dem folgenden Workflow.
Zoom 1 (FSH S3D Modelle und Texturen mit ID's xxxxx0xx) waren beschädigt. Ich entfernte alle korrupten S3D Modelle und FSH Texturen für diesen Zoom.
Ich überprüfte die Texturen und Umriss der S3D Modelle für den Zoom 2. Sie waren alle korrekt und einfach (im Prinzip ein Kasten).
Also kopierte ich einfach die S3D Modelle des Zooms 2 (ID's xxxxx1xx) und gab diesen ID's für den Zoom 1 (xxxxx0xx). Intern verlinken diese neuen S3D Dateien noch auf die Texturen des Zoom 2 und das ist ok.
Abschließend mußte ich die Veränderung in der AppearanceZoomsFlag Prop Exemplar 1F aktivieren, um die Anzeige für alle Zooms zu erreichen.

Nun, ich war nicht sicher, ob dies ausreichend war. Zur Konsistenz veränderte ich die "Mat"-Referenzen in den neuen Zoom 1 S3D auf neue Zoom 1 Texturen (xxxxx0xx). Ich erstellte diese Texturen durch Export der Zoom 2 FSH Texturen, Skalierung der Bildgröße zu 50% mit Irfanview (sehr schnell mit wenigen Mausklicks) und Re-Import (und Ändern auf die richtige Instanz-ID's). Dieser Prozess dauerte 15 Minuten, und ich denke, daß es sicherer ist, es so zu machen.

Das ist es. Ich hoffe, Ihr findet dieses Tutorial nützlich und werdet wunderbare Modelle erstellen, die ich dann auch in meinen Städte bauen kann ...


Kleines 1x1 der Modelle und Wesen der Network-S3D-Files 

Hier wird abschließend noch kurz erläutert, wie solch eine S3D-Datei in den Grundzügen aufgebaut ist. Sozusagen als Starthilfe, damit Du weist, wie hier die Textur auf das Modell kommt, und warum sich eine Ecke gerade da befindet, wo sie ist. In diesem kleinen Extrabeispiel wird hierfür ein GLR-Modell herangezogen.

Image

Unter "Anim" wird ein Modell definiert. Er stellt sozusagen den Header der S3D-File dar. Unter "Add Group" können weitere Modellteile deklariert werden.
Die weitere Tabelle gibt an, wo die dazugehörigen "Mats", "Prim", "Indx" und "Vert" in den jeweiligen Gruppen zu finden sind. Dieses hier hat zur Einfachheit nur eine, daher ist überall die Null eingetragen.

Image

Unter "Mats" wird definiert, von welcher FSH-File die Textur auf das Modell bzw Modellteil übertragen wird. Daher haben gerade viele Networkmodelle das gleiche Aussehen.
Hier gibt es nur eine Gruppe "0", genau diese ist auch bei "Anim" eingetragen. Natürlich sind weitere Gruppen möglich, das hat aber nur Sinn, wenn es auch mehrere "Anim"-Gruppen gibt.

Image

Unter "UV map" siehst du, wie eine FSH auf das Modell gelegt wird. Wenn Du einen Punkt verschiebst, verzerrt sich auch die Darstellung der Textur. Das wurde aber bereits ausführlicher beschrieben.
Im Übrigen ist die Anordnung der "UV map" adäquat zur "Anim", da gibt es keine Gruppennummer.

Image

Unter "Prim" wird die Seitenanzahl der Triangles im Modelle bzw Modellteil angegeben. Eine falsche Zahl kann zu sehr unschönen Darstellungen des Modells führen, da der Computer versucht, alle Werte darzustellen. Im ungünstigsten Fall stürzt das Spiel ab.
Hat man mehrere "Anim"-Gruppen im Modell, muß man unter "Add Group" für jedes Teilstück eine eigene "Prim"-Gruppe erstellen.

Image

Unter "Indx" werden die Punkte der Triangles eingetragen. Jeder Triangle besteht aus 3 Punkten, und müssen so angeordnet werden, dass sie letzlich in einer fiktiven Zeichnungsrichtung entgegengesetzt dem Uhrzeigersinn ausgerichtet sind. Sonst stellt SimCity4 sie nicht dar!
Unter "Add Triangle" kann man ein neues Triangle definieren, die Lage der Punkte wird später unter "Vert" vorgenommen.
Unter "Add(n) Triangles" kann man mehrer davon in einem Rutsch erstellen.
"Remove" vernichtet ein Triangle, unter "Add Group" erstellst Du eine komplett neue Trianglegruppe, sie wird notwendig, wenn Du eine neue "Anim" erstellt hast.
"Del Group" vernichtet eine Gruppe, allerdings solltest Du bei mehreren Gruppen keine in der Mitte wegnehmen, das zerstört zu allermeist das gesamte Modell!
Bei BAT-Modellen werden die Triangles aus dem in gmax definierten LOD generiert werden. Also normalerweise eine Box, sofern man ihn nicht angepasst hat.

Image

Unter "Vert" wird den Punkten der Triangles der Ort zugewiesen. Hier werden letzlich auch die meisten Modifikationen betreff der Größenänderung und Verschiebung vorgenommen. Hast Du mehrere "Anim"-Gruppen, brauchst Du auch für jede eine eigene "Vert"-Gruppe. Auch hier steht die Gruppennummer ganz links, nach dem Doppelpunkt steht die Anzahl der einzelnen Punkte.
Die ersten 3 Werte stehen für die räumlichem Maße, die letzten 2 für die FSH-Darstellung. Veränderst Du die ersten 3 Werte, wird das Modell verändert, bei den letzten 2 wird die Textur verzerrt.
Wie Du unschwer erkennen kannst, sind vor allem die "x" und "z" Werte für die Fläche zuständig, während "y" kurioser Weise für die Höhe zuständig ist. Dies rührt daher, weil SC4 eigentlich hochkant aufgebaut ist, und der Rechner Deine Stadt erst so schön in die isometrische Ansicht biegt.

Image

Hier kannst Du zu guter Letzt ein Modell sehen, welches aus mehreren Gruppen aufgebaut ist. In der nachstehenden Tabelle sind die dazugehörigen Komponenten eingetragen. Einige Komponenten, wie "Mats" werden sogar von einigen "Anim" gemeinsam verwendet. Auch die "Prim" können mehrfach verwendet werden, nämlich, wenn die selbe Anzahl Triangles in den verschiedenen "Anim"-Gruppen vorhanden sind. Auch bei der "Indx" ist es möglich, aber mit äußerster Vorsicht zu genießen. Es sollte nur bei vollkommen baugleichen Elementen zu Anwendung kommen (Geländer links; Geländer rechts)
Hier endet erstmal die kleine Extratour im Wesen der Network-Modelle. Am besten, kopiere eine bestehende S3D-File in eine Extra-Datei und probiere es selber einmal. Viel Spaß dabei, und lass Dich von Mißerfolgen nicht entmutigen.
Im Übrigen wurden die Eisenbahn-Viadukte auch 2x gebaut, bis alles passte.