Vorwort:
Im folgenden werde ich versuchen die Vorgehensweise zum Erstellen von Grafiken für Simutrans-Paks mit Hilfe von Blender zu erläutern. Sicherlich ist dies nur ein Vorschlag. Der ein oder andere wird andere Vorlieben haben oder entwickeln. Den Richtigen Weg gibt es nicht. Sicherlich ist es aber ein guter Anfang.
Dieses Tutorial ist hauptsächlich auf Pakete mit einer Auflösung von 128*128 Pixel gedacht. Andere Auflösungen sind natürlich auch machbar. Ob es allerdings z.B. beim pak 64 noch Sinn macht ist die zweite Frage.
Die meisten Grafiken sind verkleinert dargestellt. Ein Klick auf diese öffnet sie in voller Größe.
Seitenanfang
Voraussetzungen:
Ich werde hier nicht versuchen zu erklären, wie das erstellen von Modellen in Blender allgemein funktioniert. Diese Kenntnisse setze ich also voraus. Dies würde aber auch den Ramen sprengen, da Blender dazu zu komplex ist. Ein gutes deutsches Tutorial ist unter http://de.wikibooks.org/wiki/Blender_Dokumentation zu finden.
Des Weiteren benutze ich Gimp zur Bildbearbeitung. Wenn also eine Nachbearbeitung mit eine Bildbearbeitungsprogramm zu erfolgen hat, werde Ich mich daher auf beziehen. Sicherlich werden die angewandten Operationen aber auch mit den meisten anderen Programmen gehen.
Alles Simutrans spezifische findet ihr im Wiki unter Grafiken erstellen. Insbesondere von Bedeutung sind die Tipps, die im Tutorial von Alexander Brose gegeben werden und die Kenntnis darüber, dass einige Farben spezielle Funktionen in Simutrans haben.
Seitenanfang
Vorteile und Nachteile:
Sicherlich ist es manchmal schneller eine Grafik mal eben mit Paint & Co. zusammen zu zeichnen. Die Vorteile von Blender sind:
- gute Proportionskontrolle
- gute Skalierbarkeit
- gute Ergebnisse, da Farbabstufungen, Schatten, ...
- gute nachträgliche Anpassbarkeit
- bei gut gemachten Modellen viele Details
Nachteile gibt es natürlich auch:
- Blender ist sehr Komplex. Eine schnelle Einarbeitung ist nicht so ohne weiteres möglich bzw. die Ergebnisse stimmen ohne diese hinterher nicht
- Manchmal kann es länger dauern - gerade bei kleinen Grafiken
- Manchmal muss die Grafik noch mit einem Bildbearbeitungsprogramm nachgearbeitet werden
Seitenanfang
Grundeinstellungen:
Simutrans verwendet eine nahezu isometrische Ansicht. Nahezu daher, weil die exakten Winkel von 60° bzw. 120° eingehalten werden. Wäre dies so, dann wäre die Kameraeinstellung recht einfach. Sie müsste dann an die Stelle x*(1,-1,1), wobei x für eine beliebige reelle Zahl steht und (1,-1,1) für den Punkt (Vektor). Im folgenden werde ich Punkte in Blender immer als einen solchen Zeilenvektor schreiben.
Eine Kachel (für das Pak 128) sieht so aus:
Kamera:
Die Kamera positioniere ich an der Stelle (10,-10,8.200). Des weiteren setze ich ein Empty an die Stelle (0,0,0).
Nun setze ich einen Track auf das Empty. Dies richtet die Kamera auf den Empty aus. Dazu zuerst die Kamera markieren und dann den Empty. Danach Ctrl-C bzw. Strg-C drücken und TrackTo Constraint auswählen.
Um nun die relative Position von Kamera und Empty zu fixieren parente ich die Kamera auf den Empty. Dazu drücken Sie Strg-P.
Auf dem Bild habe ich ein wenig gepfuscht, um zugleich zeigen zu können, wie das ganze nachher im Outliner (rechts, lässt sich über die Dropbox links unten im Unterfenster auswählen) aussehen soll.
Danach kann das Empty an die Stelle (0,0,0.810) verschoben werden. Die Kamera sollte diese Verschiebung mit vollführen.
Nun muss nur noch die Kamera in den orthogonalen Modus geschaltet werden und die Skalierung auf 2.800.
All dies führt dazu, dass zum einen die Winkel und die Position in der Grafik stimmen.
Rendereinstellungen:
Um bei der Ausgabe die richtige Auflösung zu bekommen muss diese auf 128*128 gestellt werden. Für andere Auflösungen muss dieser Wert natürlich angepasst werden. Das Antialiasing (OSA) sollte ausgeschaltet werden. Bei den geringen Auflösungen wären ansonsten keine Details mehr zu erkennen. Nun stimmt auch der Ausschnitt des Bildes. Des weiteren sollte als Ausgabeformat png eingestellt sein.
Licht:
Da die Sonne von links unten in einem Winkel von 45° über dem Horizont scheint, muss diese an die Stelle x*(0,-1,1) stehen. Ich habe eine Lampe (Lamp) a die Stelle (0,-10,10) gesetzt. Den Dist-Wert habe ich auf 15 gestellt.
Nun würden allerdings nur da Licht hinkommen, wo keine Schatten sind. Daher sollte Ambient Occlusion eingeschaltet werden. Auch wenn dies grundsätzlich eine schon recht rechenintensive Methode ist, ist es meiner Meinung nach die beste. Außerdem fällt das bei den kleinen Grafiken eh nicht so sehr ins Gewicht. Auf meinem Rechner - und der ist nicht der schnellste - dauert das damit immer noch nur ca. 2 Sekunden. Ich habe die Standardwerten beibehalten. Damit wirken die Grafiken zwar ein wenig grieselig, was aber meiner Meinung nach im Spiel eine bessere Wirkung erzielt als völlig "glatte" Grafiken.
Hintergrund
Da der Hintergrund Transparent sein soll und im Spiel die Farbe 231 255 255 für Transparenz steht, muss der Hintergrund die Farbe 0,906 1.000 1.000 bekommen. Oben rechts ist eine mit den nun genannten Einstellungen gerenderte Grafik. Dazu habe ich noch eine Platte mit der Kantenlänge 2*2 an der Stelle (0,0,0) eingefügt. Leider sieht die Grundkachel ein wenig anders aus als sie sein sollte. Sie ist genau ein Pixel höher als die oben eingefügte (oben ist noch eine Pixelreihe drüber). Dies lässt sich meiner Meinung nach aber verschmerzen.
Ich hoffe ich habe bei den Grundeinstellungen nichts mehr vergessen...
Ein Blenderfile macht hier meiner Meinung nach keinen Sinn, da damit ja auch alle Einstellungen übertragen würden. Und ich denke die meisten benutzen nicht die Standardkonfiguration - ich jedenfalls nicht.
Seitenanfang
FrontImage und BackImage - der Sinnvolle Einsatz von Layern:
Es gibt viele Fälle, in den eine der Beiden Grafiken nicht reicht. In diesem fall müssen zwei verschiedene, sich ergänzende Bilder gerendert werden. Ich setze daher die Sonne und die Kamera auf Layer 1. Nun entwerfe ich das Modell (in der Regel den Mesh) komplett und belege ihn mit allen nötigen Texturen. Es ist von Vorteil nur einen Mesh zu verwenden, es gibt aber sicherlich auch Fälle, in denen das unmöglich oder auch eine andere Konstellation nötig ist. Wenn das Grundmodell fertig ist, wird dieses zwei mal dupliziert. Ein Duplikat kommt auf Layer 2 und eins auf Layer 3. Das Original wird nun (z.B. im Outliner) deaktiviert. Dies muss auch für das gerenderte Bild gelten. Dieses Original dient im weiteren als Sicherungskopie, da im kommenden Arbeitsschritt Teile des Mesh entfernt werden.
BackImage:
Auf Layer 2 habe ich nun die Grafik für das Backimage gesetzt. Hier entferne ich die Vorderseite, die später auf dem FronImage landen soll. Wählen Sie die Schnittlinie mit Bedacht - ansonsten erzielen sie unter Umständen nicht die gewünschten Ergebnisse. Noch ist allerdings der Schatten falsch.
Dies ändern wir nun in einem zweiten Schritt:
Eine dritte Kopie des Modells wird erstellt. Hier wird genau der Teil weggeschnitten, der zuvor angezeigt wurde. Dieser Teil soll nun den Schatten erzeugen. Damit dieser Teil aber nicht sichtbar ist, muss er vollständig transparent gemacht werden. Dazu wird der A-Wert auf 0 gestellt. Des weiteren muss ZTransp aktiviert werden, da ansonsten an die Stelle der Vorderseite die Hintergrundfarbe (Im Spiel transparent) gerendert würde. Außerdem könnten noch störende Glanzlichter vorhanden sein. Daher muss der Spec-Wert ebenfalls auf 0 gestellt werden.
FrontImage:
Das FrontImage ist nun recht einfach. Ebenso wie bei der Transparenten Vorderseite wird nun der ungewollte Teil (der der auf dem BackImage zu sehen ist) entfernt. Dieses wird auf Layer 3 generiert.
Mittelteil:
Sollte ein Mittelteil erstellt werden (für dims=1,1,8 und dims=1,1,16) werden in der Regel weitere Schatten benötigt. Daher sollt das Vorderteil ebenso wie beim BackImage hinzugefügt werden. Auch dieses muss vollständig transparent gemacht werden. Hierzu mal kein Beispiel.
Seitenanfang
Cursor:
Ich Rendere die Gesamtansicht (Originalmodell) in der normalen Auflösung. Danach lege ich mit Gimp über das Bild ein transparentes Raster (png Simutrans.pat - für Gimp). Das Gimp-Muster muss vor dem Programmstart in den Ordner "/usr/share/gimp/2.0/patterns" (Achtung: Dazu sind root Rechte erforderlich) bzw. unter Windows in de Ordner ~/Gimp-2.0/share/gimp/2.0/patterns (~ bedeutet im Regelfall C:\Programme Adminrechte sind erforderlich) kopiert werden. Bei älteren bzw. kommenden Versionen kann der Pfad abweichen. Für Linux gehe ich von (K)Ubuntu 9.10 Karmic Koala aus. Bei anderen Distributionen kann der Pfad gegebenenfalls auch anders sein. In Gimp wird nun die gesamte Grafik markiert (Strg-A). Im Werkzeugkasten wird nun Füllen ausgewählt. Die Option Muster ist zu wählen Der gesamte Auswahl sollte gefüllt werden. Im Ebenen, Kanäle, Pfade-Fenster wird nun das Simutrans-Muster ausgewählt. Nun wird einmal in das Bild geklickt.
Nun sollte das Bild so aussehen:
Seitenanfang
Button:
Dies ist die Grundgrafik:
Leider musste die korrigiert werden, da der Button im Original im Wiki einen Pixel zu weit rechts war.
Ich rendere die Gesamtansicht im Regelfall mit der Auflösung 24*24. Je nach Motiv kann die Auflösung auch größer sein. Nun mache ich mache das hellblaue mit Gimp richtig transparent. Dazu fügt man zuerst einen Alphakanal hinzu.
Anschließend wird der blaue Bereich mit dem Zauberstab ausgewählt. Durch halten der Shift-Taste können die Bereiche aufaddiert werden.
Durch drücken von Esc wird der Bereich nun transparent.
Nun wird das ganz (ggf. in einer neuen Datei) abgespeichert und als Ebene in der Grundgrafik geöffnet.
Er kann nun in die Mitte des Buttons gezogen werden.
Für Stationen gibt es noch erweiterte Buttons. Diese müssen ggf. vorher eingefügt werden.
Zur Info: Der Button ist 32*32 Pixel groß.
Nun muss noch der Cursor eingefügt werden (dort wo die Kachel ist). Dies funktioniert genauso. Das Ergebnis sieht dann so aus:
Am ende muss die Transparenz wieder entfernt werden, denn sonst gibt es so etwas:
Dies gilt für alle Grafiken. Ebenfalls sollte man auf die Spezialfarben achten. Diese müssen ggf. nachträglich eingefügt werden.
Und nicht vergessen im Dat-File "=> " anstelle des "=" zu nehmen, sonst wird der Button skaliert.
Seitenanfang
Nachwort:
So nun wünsche ich euch viel Spaß und Erfolg beim Erstellen von neuen Grafiken für Simutrans.
Ach so: Das hier verwendete Beispiel ist eine historische Station der Wuppertaler Schwebebahn für das pak 128. Mehr Infos dazu sind im deutschen Simutransforum zu finden.
Seitenanfang
Die letzten Wiki-Kommentare