27-10-2019, Sunday-21:17:08
(Dieser Beitrag wurde zuletzt bearbeitet: 29-10-2019, Tuesday-17:45:34 von Pumuckl999.)
Da ich die nächsten Tage Besuch habe und weder zocken noch modellieren werde, mal ganz was anderes . Das kann ich die Woche (hoffentlich) weiterschreiben.
Tutorial Modellierung für Simutrans (vorzugsweise mit 3dsMax)
Grundlagen Polygonmodeller
Poly- in Polygonmodeller bringt uns gleich mittenrein und zu einigen Problemen: Poly=viel, mehrere; d.h. unsere Objekte bestehen allesamt aus Flächen mit mehr oder weniger Ecken. Für die Grafikkarte werden sämtliche Polygone zudem in Dreiecke zerlegt, die Polygonart mit der geringsten Eckenanzahl. Braucht uns uns i.d.R. nicht kümmern, erzeugte Polygone werden automatisch in Dreiecke zerlegt(1).
Logisch scheint, dass man damit nur eckige Objekte bauen könne, niemals gerundete(2).
(1) Der Computer weiss leider nicht, was der Anwender genau will, deswegen müssen wir in einigen Fällen nachhelfen. Bild 1 zeigt zwei verschiedene Polygonarten, nennen wir das linke ein konvexes Polygon, die anderen beiden konkav. Bei der Zerlegung in Dreiecke werden die vorhandenen Punkte verbunden – beim linken Polygon werden diese Verbindung immer innerhalb der Fläche liegen, egal welchen Punkt wir mit einem anderen verbinden. Das können wir dem PC überlassen, gibt ja auch noch andere Hobbys. Beim mittleren sieht die Sache anders aus: Eine Verbindungsline zwischen zwei Punkten kann theoretisch auch ausserhalb der Fläche liegen und zu Darstellungsfehlern führen. Solche Flächen sollten wir also selbst so teilen, dass jede entstehende Fläche problemlos in Dreiecke zerlegt werden kann. Im rechten Beispiel ist die Fläche komplett in Dreiecke unterteilt, das ist allerdings, wie erwähnt, nicht zwingend nötig, Hauptsache wir erzeugen Flächen, bei denen Punktverbindungen immer innerhalb liegen.
Bild 1
Da Objekte oft durch Gittermanipulation entstehen, wir also vorhandene Punkte im Raum verschieben, führt uns das zum nächsten Problem. Bild 2 zeigt links das ursprüngliche Polygon (1). Von diesem Polygon verschieben wir den hinteren rechten Eckpunkt in die Höhe (Bsp. 2). Bei der Zerlegung in Dreiecke mit den vorhandenen Punkten gibt es zwei Möglichkeiten (Bsp. 3 und 4). Da die Grafikkarte ja nicht wissen kann, welche dieser Möglichkeiten wir wollen, sollten wir uns für Bsp. 3 oder 4 entscheiden. 3 gibt einen „Berg“ in der Mitte der Fläche, 4 ein „Tal“. Btw wird in den Grafiken für Simutrans die Darstellung entweder gleichbleibend falsch oder richtig sein, in 3D-Welten wird ggf. regelmäßig zwischen beiden Möglichkeiten gewechselt, das gibt dann im Zweifelsfall eine flackernde Fläche im 3D-Spiel.
Bild 2
T-Verbindungen: Genau drei Flächenverbindungen treffen sich in einem Punkt, gezeigt in Bild 3. Der erste Fall ist unproblematisch, die T-Verbindungen sind nur am Flächenrand zu finden. Beim zweiten Beispiel findet sich eine solche Verbindung in der Fläche, auch das kann zu Darstellungsfehlern führen. Also stellen wir entweder den Zustand aus Bsp. 1 her oder den aus Bsp. 3.
Bild 3
(2) Wir wollen natürlich auch Objekte abbilden, die nicht eckig sind. Theoretisch gibt es dafür zwei Möglichkeiten. Die schlechtere: Wir unterteilen unsere Fläche so oft, dass auch mit den vielen entstehenden Teilflächen der Eindruck entsteht, wir hätten eine Rundung und keine Ecke. Die bessere: Wir nutzen sogenanntes Smoothing, eine Technik die erlaubt, auch eckige Formen rund abzubilden. Im Standardfall steht die Flächennormale senkrecht auf der Fläche, beim Smoothing wird eine Normale für jeden Punkt in der Fläche berechnet, so dass der Eindruck entsteht, die eckige Fläche sei rund. Wie viele Flächen wir genau brauchen, hängt von der Objektgröße und vom persönlichen Geschmack ab. Für Simutrans müssen es für Zylinder selten mehr als zwölf sein.
Smoothing muss man nicht auf ganze Objekte anwenden, man könnte zB. Auch eine Hälfte des Zylinders rund darstellen, die andere eckig.
Bild 4 zeigt links einen achtseitigen „Zylinder“, der in der Mitte hat 48 Seiten und sieht damit schon annähernd rund aus. Erzeugt leider auch mehrmals so viele Daten. Der rechte Zylinder hat acht Seiten und wurde mit Smoothing versehen. Die Mantelflächen wirken damit deutlich runder, als Bsp 1. Hinnehmbares Manko ist, dass die Deckflächen weiterhin eckig wirken. Achtet in 3D-Spielen darauf, fällt bei Vasen, Töpfen, etc. immer mal wieder auf.
Tip zu zylindrischen Körpern: Wenn man als Flächenzahl der Mantelfläche immer eine durch vier teilbare wählt, erleichtert dies die Bearbeitung. Solange der Zylinder nicht verdreht, liegen dann immer vier der Flächenkanten des Mantels auf den Hauptachsen.
Bild 4
Verdeckte Flächen: Bild 5 zeigt einen Würfel, der auf einer Grundplatte steht, in Simutrans könnte dies ein Haus sein, das auf der Grundkachel steht. Zu sehen ist genaugenommen aber kein Würfel, sondern nur drei Flächen davon. Da in Simutrans die Ansicht allerdings gedreht werden kann, brauchen wir fünf der Würfelflächen. Die Grundfläche ist niemals zu sehen, sollte also unbedingt gelöscht werden, spart bei unserem Beispielwürfel immerhin 1/6 der Flächen.
Bild 5
Detailgenauigkeit: Wir rechnen mal kurz: Eine Simutranskachel in pak128.german (bei Gebäuden) soll ca. 20x20m abbilden. Die Grafik dafür ist 128x128 Pixel gross. Die Kachel liegt allerdings in isometrischer Ansicht darin, also wir brauchen die Diagonale der Kachel. Nach Pythagoras wären das D²=(20m)²+(20m)²gibt ~28,3m für die Diagonale. Dies durch die 128Pixel Seitenlänge geteilt, gibt ~220mm/Pixel. Da sich einerseits Pixel in der Fotobearbeitung nicht teilen lassen, andererseits z.B. Schatten und/oder das später besprochene Ambient Occlusion Objekte optisch verbreitern, modelliere ich selbst Details meist >100mm. Alles was kleiner ist, wird weggelassen. Zusätzliches Problem ist, dass der Renderer i.d.R. kleinere Objekte nicht komplett verwirft, von einem Balken mit meinetwegen 80mm sind im Rendering ggf. dann einige wenige Pixel zu sehen.
Zusätzlich sollte man sich noch dazu entscheiden, nicht alle Details >100mm ins Modell zu „kneten“. Dachrinnen an Häusern sind so ein Beispiel, die lasse ich immer weg. Relativ hoher Aufwand für wenig Wirkung.
Tutorial Modellierung für Simutrans (vorzugsweise mit 3dsMax)
Grundlagen Polygonmodeller
Poly- in Polygonmodeller bringt uns gleich mittenrein und zu einigen Problemen: Poly=viel, mehrere; d.h. unsere Objekte bestehen allesamt aus Flächen mit mehr oder weniger Ecken. Für die Grafikkarte werden sämtliche Polygone zudem in Dreiecke zerlegt, die Polygonart mit der geringsten Eckenanzahl. Braucht uns uns i.d.R. nicht kümmern, erzeugte Polygone werden automatisch in Dreiecke zerlegt(1).
Logisch scheint, dass man damit nur eckige Objekte bauen könne, niemals gerundete(2).
(1) Der Computer weiss leider nicht, was der Anwender genau will, deswegen müssen wir in einigen Fällen nachhelfen. Bild 1 zeigt zwei verschiedene Polygonarten, nennen wir das linke ein konvexes Polygon, die anderen beiden konkav. Bei der Zerlegung in Dreiecke werden die vorhandenen Punkte verbunden – beim linken Polygon werden diese Verbindung immer innerhalb der Fläche liegen, egal welchen Punkt wir mit einem anderen verbinden. Das können wir dem PC überlassen, gibt ja auch noch andere Hobbys. Beim mittleren sieht die Sache anders aus: Eine Verbindungsline zwischen zwei Punkten kann theoretisch auch ausserhalb der Fläche liegen und zu Darstellungsfehlern führen. Solche Flächen sollten wir also selbst so teilen, dass jede entstehende Fläche problemlos in Dreiecke zerlegt werden kann. Im rechten Beispiel ist die Fläche komplett in Dreiecke unterteilt, das ist allerdings, wie erwähnt, nicht zwingend nötig, Hauptsache wir erzeugen Flächen, bei denen Punktverbindungen immer innerhalb liegen.
Bild 1
Da Objekte oft durch Gittermanipulation entstehen, wir also vorhandene Punkte im Raum verschieben, führt uns das zum nächsten Problem. Bild 2 zeigt links das ursprüngliche Polygon (1). Von diesem Polygon verschieben wir den hinteren rechten Eckpunkt in die Höhe (Bsp. 2). Bei der Zerlegung in Dreiecke mit den vorhandenen Punkten gibt es zwei Möglichkeiten (Bsp. 3 und 4). Da die Grafikkarte ja nicht wissen kann, welche dieser Möglichkeiten wir wollen, sollten wir uns für Bsp. 3 oder 4 entscheiden. 3 gibt einen „Berg“ in der Mitte der Fläche, 4 ein „Tal“. Btw wird in den Grafiken für Simutrans die Darstellung entweder gleichbleibend falsch oder richtig sein, in 3D-Welten wird ggf. regelmäßig zwischen beiden Möglichkeiten gewechselt, das gibt dann im Zweifelsfall eine flackernde Fläche im 3D-Spiel.
Bild 2
T-Verbindungen: Genau drei Flächenverbindungen treffen sich in einem Punkt, gezeigt in Bild 3. Der erste Fall ist unproblematisch, die T-Verbindungen sind nur am Flächenrand zu finden. Beim zweiten Beispiel findet sich eine solche Verbindung in der Fläche, auch das kann zu Darstellungsfehlern führen. Also stellen wir entweder den Zustand aus Bsp. 1 her oder den aus Bsp. 3.
Bild 3
(2) Wir wollen natürlich auch Objekte abbilden, die nicht eckig sind. Theoretisch gibt es dafür zwei Möglichkeiten. Die schlechtere: Wir unterteilen unsere Fläche so oft, dass auch mit den vielen entstehenden Teilflächen der Eindruck entsteht, wir hätten eine Rundung und keine Ecke. Die bessere: Wir nutzen sogenanntes Smoothing, eine Technik die erlaubt, auch eckige Formen rund abzubilden. Im Standardfall steht die Flächennormale senkrecht auf der Fläche, beim Smoothing wird eine Normale für jeden Punkt in der Fläche berechnet, so dass der Eindruck entsteht, die eckige Fläche sei rund. Wie viele Flächen wir genau brauchen, hängt von der Objektgröße und vom persönlichen Geschmack ab. Für Simutrans müssen es für Zylinder selten mehr als zwölf sein.
Smoothing muss man nicht auf ganze Objekte anwenden, man könnte zB. Auch eine Hälfte des Zylinders rund darstellen, die andere eckig.
Bild 4 zeigt links einen achtseitigen „Zylinder“, der in der Mitte hat 48 Seiten und sieht damit schon annähernd rund aus. Erzeugt leider auch mehrmals so viele Daten. Der rechte Zylinder hat acht Seiten und wurde mit Smoothing versehen. Die Mantelflächen wirken damit deutlich runder, als Bsp 1. Hinnehmbares Manko ist, dass die Deckflächen weiterhin eckig wirken. Achtet in 3D-Spielen darauf, fällt bei Vasen, Töpfen, etc. immer mal wieder auf.
Tip zu zylindrischen Körpern: Wenn man als Flächenzahl der Mantelfläche immer eine durch vier teilbare wählt, erleichtert dies die Bearbeitung. Solange der Zylinder nicht verdreht, liegen dann immer vier der Flächenkanten des Mantels auf den Hauptachsen.
Bild 4
Verdeckte Flächen: Bild 5 zeigt einen Würfel, der auf einer Grundplatte steht, in Simutrans könnte dies ein Haus sein, das auf der Grundkachel steht. Zu sehen ist genaugenommen aber kein Würfel, sondern nur drei Flächen davon. Da in Simutrans die Ansicht allerdings gedreht werden kann, brauchen wir fünf der Würfelflächen. Die Grundfläche ist niemals zu sehen, sollte also unbedingt gelöscht werden, spart bei unserem Beispielwürfel immerhin 1/6 der Flächen.
Bild 5
Detailgenauigkeit: Wir rechnen mal kurz: Eine Simutranskachel in pak128.german (bei Gebäuden) soll ca. 20x20m abbilden. Die Grafik dafür ist 128x128 Pixel gross. Die Kachel liegt allerdings in isometrischer Ansicht darin, also wir brauchen die Diagonale der Kachel. Nach Pythagoras wären das D²=(20m)²+(20m)²gibt ~28,3m für die Diagonale. Dies durch die 128Pixel Seitenlänge geteilt, gibt ~220mm/Pixel. Da sich einerseits Pixel in der Fotobearbeitung nicht teilen lassen, andererseits z.B. Schatten und/oder das später besprochene Ambient Occlusion Objekte optisch verbreitern, modelliere ich selbst Details meist >100mm. Alles was kleiner ist, wird weggelassen. Zusätzliches Problem ist, dass der Renderer i.d.R. kleinere Objekte nicht komplett verwirft, von einem Balken mit meinetwegen 80mm sind im Rendering ggf. dann einige wenige Pixel zu sehen.
Zusätzlich sollte man sich noch dazu entscheiden, nicht alle Details >100mm ins Modell zu „kneten“. Dachrinnen an Häusern sind so ein Beispiel, die lasse ich immer weg. Relativ hoher Aufwand für wenig Wirkung.