Prozedurale Straßennetzgenerierung
-
Hallo,
Ich habe eine Algorithmus geschrieben um prozedural ein natürlich wachsendes Straßennetz zu generieren.
Die Daten sind gespeichert in Nodes und Edges. Jede Node kennt alle ihre Nachbarn.
Nun bin ich an dem Punkt an dem ich die Zyklen des Graphen erkennen will und diese mit Nebenstraßen im Schachbrettmuster füllen will.
Meine Frage an euch wäre wie ich hier am besten vorgehe, unabhänig vom restlichen Straßennetz.Ein Beispiel ähnlich wie ich mir das vorstelle seht ihr hier:
https://josauder.github.io/procedural_city_generation/#the-growth-rules
Mit Python kenne ich mich leider nicht aus!
-
schoenes strassennetz, schaut recht natuerlich aus fuer europaeische verhaeltnisse.
es nun in ein gitter zu unterteilen ist in relation dazu doch recht einfach, wobei genau brauchst du hilfe?
-
Nunja, ich möchte zwischen den Zyklen karierte nebenstraßen einfügen.
Nur habe ich im Moment keinen Ansatz wie ich dies prozedural umsetze
-
Ich finde dein Thema hochinteressant. Wie hast du das gemacht? Kannst du mir Ansätze/Ideen/Links geben, damit ich das auch mal programmieren kann?
Eine Vermtung habe ich: Voronoi. In der Mitte der Karte einfach mehr Punkte als am Rand. Die Linien dazwischen dann mit Bezier/Spline anstatt einfach nur gerade.
-
Nein ich baue das wie eine art L-System auf. Es beginnt mit einer Straße, die Stück für stück gebaut wird und bei jedem Bau bestimmte Regeln befolgt. Diese Regeln sind von Wahrscheinlichkeit und Zufall bestimmt.
Zum Beispiel besteht je weiter die Straße am Zentrum ist, eine höhere Chance für eine Abzweigung.
Hier ist ein sehr interessantes Paper zu dem Thema, und auch im Internet gibt es viel über die Prozedurale Stadtgenerierung zu finden:
http://dynamicstructures.googlecode.com/svn/trunk/documents/public_papers/procedural%20modeling%20of%20city.pdf
-
Sehr schön. Danke für den Link. Da habe ich jetzt erstmal wieder was zum basteln^^
-
SaW120 schrieb:
Nunja, ich möchte zwischen den Zyklen karierte nebenstraßen einfügen. In etwa so:
http://imgur.com/DvJLyvX
Nur habe ich im Moment keinen Ansatz wie ich dies prozedural umsetzefind geschlossene zellen, randomize dir eine achse, dazu eine orthogonale, dazu die delta-abstaende zwischen den geraden und unterteile sie.