Bodenstruktur bei Industrien

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the Transport-Fever Community

  • In den .con-Dateien von Industrien wird die Oberflächenstruktur des Bodens offensichtlich durch eine Liste von Koordinaten definiert. Das sieht in der Datei etwa so aus:


    Code
    1. meshes = {
    2. ["equal"] = {
    3. { { { 62, 70, 0 }, {67.69878, 75.44878, 0 }, {66.02470, 76.66660, 0 }, },{ { 69.76532, 71.96745, 0 }, {62, 70, 0 }, {70, 70, 0 }, },{ { 68.97760, 73.83571, 0 }, {62, 70, 0 }, {69.76532, 71.96745, 0 }, },{ { 67.69878, 75.44878, 0 }, {62, 70, 0 }, {68.97760, 73.83571, 0 }, },{ { 62, 70, 0 }, {66.02470, 76.66660, 0 }, {64.07813, 77.37601, 0 }, },{ { 62, 70, 0 }, {64.07813, 77.37601, 0 }, {62, 77.50000, 0 }, },{ { 62, 37.47691, 0 }, {52, -62.43179, 0 }, {60, -63.81123, 0 }, },{ { 60, -63.81123, 0 }, {70, 37.47691, 0 }, {62, 37.47691, 0 }, },{ { 52, -69.93179, 0 }, {60, -63.81123, 0 }, {52, -62.43179, 0 }, },{ { 60, -63.81123, 0 }, {52, -69.93179, 0 }, {60, -71.31123, 0 }, },{ { -70, 37.47691, 0 }, {-60, -43.11977, 0 }, {-62, 37.47691, 0 }, },{ { -52, -44.49920, 0 }, {-62, 37.47691, 0 }, {-60, -43.11977, 0 }, },{ { -60, -50.61976, 0 }, {-52, -44.49920, 0 }, {-60, -43.11977, 0 }, },{ { -52, -44.49920, 0 }, {-60, -50.61976, 0 }, {-52, -51.99919, 0 }, },{ { 70, 37.47691, 0 }, {60, -63.81123, 0 }, {85.35500, -68.19366, 0 }, },{ { 85.35500, -68.19366, 0 }, {104.29769, 37.47691, 0 }, {70, 37.47691, 0 }, },{ { 60, -71.31123, 0 }, {85.35500, -68.19366, 0 }, {60, -63.81123, 0 }, },{ { 85.35500, -68.19366, 0 }, {60, -71.31123, 0 }, {85.35500, -75.69366, 0 }, },{ { 104.29769, 37.47691, 0 }, {74.24264, 44.97691, 0 }, {70, 37.47691, 0 }, },{ { 74.24264, 44.97691, 0 }, {104.29769, 37.47691, 0 }, {104.29769, 44.97691, 0 }, },{ { -60, -43.11977, 0 }, {-91.89769, -45.11968, 0 }, {-60, -50.61976, 0 }, },{ { -91.89769, -45.11968, 0 }, {-60, -43.11977, 0 }, {-91.89769, -37.61968, 0 }, },{ { 87.43314, -75.56966, 0 }, {85.35500, -68.19366, 0 }, {85.35500, -75.69366, 0 }, },{ { 85.35500, -68.19366, 0 }, {91.05379, -73.64244, 0 }, {92.33260, -72.02936, 0 }, },{ { 89.37969, -74.86025, 0 }, {85.35500, -68.19366, 0 }, {87.43314, -75.56966, 0 }, },{ { 91.05379, -73.64244, 0 }, {85.35500, -68.19366, 0 }, {89.37969, -74.86025, 0 }, },{ { 85.35500, -68.19366, 0 }, {92.33260, -72.02936, 0 }, {93.12032, -70.16111, 0 }, },{ { 85.35500, -68.19366, 0 }, {93.12032, -70.16111, 0 }, {93.70499, -68.19366, 0 }, },{ { 104.29769, 37.47691, 0 }, {109.99648, 42.92569, 0 }, {108.32239, 44.14351, 0 }, },{ { 112.06302, 39.44436, 0 }, {104.29769, 37.47691, 0 }, {112.29769, 37.47691, 0 }, },{ { 111.27530, 41.31261, 0 }, {104.29769, 37.47691, 0 }, {112.06302, 39.44436, 0 }, },{ { 109.99648, 42.92569, 0 }, {104.29769, 37.47691, 0 }, {111.27530, 41.31261, 0 }, },{ { 104.29769, 37.47691, 0 }, {108.32239, 44.14351, 0 }, {106.37582, 44.85291, 0 }, },{ { 104.29769, 37.47691, 0 }, {106.37582, 44.85291, 0 }, {104.29769, 44.97691, 0 }, },{ { -93.97583, -44.99568, 0 }, {-91.89769, -37.61968, 0 }, {-95.92239, -44.28628, 0 }, },{ { -91.89769, -37.61968, 0 }, {-97.59648, -43.06846, 0 }, {-95.92239, -44.28628, 0 }, },{ { -99.66302, -39.58714, 0 }, {-91.89769, -37.61968, 0 }, {-99.89769, -37.61968, 0 }, },{ { -98.87529, -41.45538, 0 }, {-91.89769, -37.61968, 0 }, {-99.66302, -39.58714, 0 }, },{ { -97.59648, -43.06846, 0 }, {-91.89769, -37.61968, 0 }, {-98.87529, -41.45538, 0 }, },{ { -91.89769, -45.11968, 0 }, {-91.89769, -37.61968, 0 }, {-93.97583, -44.99568, 0 }, }

    ...und diese Zeichenwurst geht in dieser Form und exakt genau so unstrukturiert noch wesentlich länger weiter. Das, was ich hier rauskopiert habe, ist ungefähr 5% der ganzen Kolonne. Offensichtlich sind das XYZ-Koordinaten, die die lokale Höhe des Bodens definieren und dabei auch gleich eine Boundary Box abwerfen.


    Zwei Fragen habe ich dazu:


    1. "equal" ist offensichtlich ein lokal ebener Punkt auf Z=0. Was aber ist "greater" und "less"? Das sind ebenfalls solche Koordinaten, aber mit einem ziemlich wilden Z-Wert, der in einer zufällig ausgewählten .con von -20 bis +31.2 geht. Die "greater"- hat dabei interessanterweise meist die negativen, die "less"-Liste die positiven Werte. Die dabei entstehende Bodenstruktur hat aber keine Amplitude von über 50 Metern, da muß also was anderes auch noch reinspielen.


    2. Da ich nicht annehme, daß bei UG Masochisten arbeiten, die zum Vergnügen Telefonbücher auswendig lernen oder solche Zahlenkolonnen von Hand tippen (dann wären sie vermutlich auch schöner strukturiert und nicht so ein fürchterliches Chaos), nehme ich an, daß diese Strukturen irgendwie prozedural oder mit Hilfe eines Programmes erzeugt werden. Hat hier irgendjemand einen Fingerzeig? Bestimmt gibt es eine Methode, zum Beispiel ein auf der XY-Ebene liegendes Rechteck zu rastern, jedem Punkt einen Z-Wert zuzuweisen und das Ergebnis dann in so eine Buchstabensuppe zu übersetzen? In Blender wäre das sicher flott gemacht, wenn es hier eine Möglichkeit gäbe...


    Jede Hilfe ist willkommen :)

  • Dieses generatedData führt über industryutil.addIndustryData und constructionutil.addModelsAndGroups zu addTerrainAlignmentMeshes, wobei equal, greater und less sich auf die Terrainanpassung beziehen, welche auch in einer con angegeben werden (result.terrainAlignmentLists).

    Hier werden sie als triangles angegeben, wobei die generierten Dreicke (oben gut sichtbar), wieder entpackt werden, wegen dieser komische Art der con, alles einfach hintereinander zu schreiben.

  • Danke :) das Prinzip dahinter habe ich jetzt einigermaßen verstanden, denke ich. Das Kraftwerk hat jetzt eine ebene Grundfläche aus zwei solcher Dreiecke erhalten, die Kanten müssen noch etwas eleganter begradigt werden.


    Ich nehme nach wie vor an, daß es hier irgendein grafisches Werkzeug geben muß, um solche Bodenstrukturen zu modellieren - solche Zahlenkolonnen wie UG sie hier in seinen Fabriks-.con verwendet, haben mit Benutzerfreundlichkeit oder sogar nachvollziehbarer Programmierung meiner Meinung nach nicht das geringste zu tun...


  • Die werden da irgendwelche Tools haben. Habe das bisher aber auch nur in den Industrien gesehen.


    Wie bestimmen denn andere Modder die Flächen für Terrain Alignment und Ground Faces? Ausrechnen und trial and error?

    Immerhin kann man diese ja auch als Polygon angeben.

  • Grüße das selbe hatte ich auch gehabt, bei den Berliner HBH den ich immer noch nicht fertig habe er funktioniert aber mit den zuordnen von Ground Faces da fehlt es bei mir, konnte aber das graben eines Loches was es in TPF1 noch gab durch /hole.lua/ ersetzen damit die Kollision nicht mehr kommt. So hat dieser Bahnhof auch einen U-Bahnhof. 🙋