Итеративные правила городского проектирования?

В данный момент я занимаюсь проектированием города и хочу, чтобы жилое строительство шло по итеративному проекту. Дома состоят из сообщающихся шестиугольных комнат.

Семьи в моем городе становятся очень большими из-за каких-то не связанных между собой социальных вещей, а строительством часто занимаются жители. Таким образом, правила должны быть достаточно простыми, чтобы их понимало население в целом, и они должны выполняться с использованием только линейки и циркуля за разумное время (никаких огромных алгоритмов, для выполнения которых требуется компьютер). Этот набор правил должен оставлять не менее 2 метров пространства между домами (для пеших и велосипедных прогулок). Не может быть столкновений, наложений или ловушек (медленно растущая семья не должна попасть в ловушку своих быстрорастущих соседей).

Единственные решения, которые я придумал, приводят к невероятно регулярному и скучному городу и не могут справиться с неровностями любой формы. Я хочу, чтобы мой город был органичным/фрактальным.

Почему шестиугольники? Все шестиугольные комнаты одинакового размера? Ими сложнее управлять, чем прямоугольниками, особенно с вашими требованиями к коммерции 2-метровых путешественников. Лучшее, что я могу предложить, — это фиксированный размер или форма участка с границами, встроенными для путешественников, хотя это немного скучно.
Шестиугольник вещь религиозная. Комнаты одинакового размера. Если я не могу что-то понять, я, вероятно, буду использовать обычную сетку. Проще и практичнее, но далеко не так красиво.
Что такое ваша среда проектирования и для чего она нужна? Шестиугольная конструкция, напоминающая улей, всегда будет иметь элементы одинакового размера, иначе в ней останутся дыры. Прямоугольники позволяют создавать комнаты разного размера (даже каждое измерение отдельно), позволяя не только количеству комнат и порядку распределения быть единственными векторами настройки с точки зрения базовой структуры.
Сносятся ли комнаты, когда семья становится меньше (уезжают дети, умирают бабушки и дедушки и т. д.)? Это может придать более динамичный вид вашему городу. И какие материалы используются? Можно ли их переработать/повторно использовать/компостировать? Могут ли люди строить вверх? Жители люди?
Боб, во-первых, добро пожаловать на сайт. Я направлю вас в справочный центр для вопросов, которые могут возникнуть о том, как здесь все работает. Как только вы наберете 20 повторений, присоединяйтесь к нам в чате построения мира .
Во-вторых, к вашему посту. Я вроде чувствую, что вы хотите две эксклюзивные вещи, я не знаю, что вы можете иметь сборные, вероятно, алгоритмически размещенные здания И иметь органическое / фрактальное качество
Только дома правильной и шестиугольной формы имеют одинаковые размеры или все постройки такие ограниченные?
@James bmp, почему бы и нет. Один из классических фракталов... (бред, название ускользает от меня), но состоит из треугольных "наростов" разного размера. Есть примеры с использованием разной длины, но только с прямыми углами. Оба вида могут достичь органического ощущения. Запрашивающему необходимо добавить шум, чтобы найти то, что он ищет.
@Треугольник Нейта Серпинского
Если вы справляетесь с неровностями как с приоритетом, в результате должны получиться нужные вам органические функции. Нестандартные клетки вызывают странные взаимодействия, которые обеспечивают «органический» внешний вид.

Ответы (5)

Причина, по которой ваш дизайн получается скучным, заключается в установленных вами правилах. Город органичен, в большинстве старых «интересных» городов были самые странные правила. Дома в Амстердаме облагались налогом по ширине. В Париже балконы пришлось выравнивать. В старых городах, обнесенных стенами, был стимул оставаться в безопасности городских стен, поэтому вы меняете пространство на безопасность и строите маленькие.

Если ввести какие-то произвольные эстетические правила, а не логические, то получится более органичная система. Избавьтесь от принудительного разрыва между каждой собственностью, например, в пользу шестиугольной дорожной сети. Это означает, что, поскольку люди чрезмерно расширяют свой участок из-за размера семьи, им приходится переезжать на новый участок с большим пространством для расширения.

Земля дороже в центре города, люди будут строиться на меньшей площади, а не на улице. Дешевле строить вдали от города, но по мере расширения города вы получите большие старые загородные дома, которые сейчас находятся в центре, окруженные небольшими домами с высокой плотностью застройки.

Это позволит строить небольшие владения в центре города и более крупные в пригородах, но со случайными остатками, такими как старые загородные особняки недалеко от центра города (см. Дом Лодердейла или Букингемский дворец в качестве примеров этого эффекта).

Новые объекты будут строиться вдоль существующих дорог до того, как будут построены новые дороги, поэтому на основных маршрутах будут более длинные блоки больших домов, расположенных на большей площади, а затем второстепенные дороги будут застраиваться меньшими блоками домов меньшего размера по мере роста стоимости земли.

Что нужно сделать:
Представьте районы, в которых люди хотят жить: это приводит к более высокой плотности и более дорогому жилью.
Представьте районы, где люди не хотят находиться: это дает более высокую плотность недорогого жилья (трущобы), возможно, даже сделает их квадратными, чтобы они выделялись как дешевое жилье. Тогда регенерация будет иметь шестигранный корпус на квадратных участках.
Пригород: Немного скучно, стоимость недвижимости зависит от размера участка.
Добавьте шума: Реки, парки, озера и водохранилища, а также рельеф.

Подводя итог: Строгие правила делают города скучными .

Добавлять шум. Если ваша местность однородна, город будет таким же. Сначала запустите на карте генератор шума Perlin или Simplex , создав места, которые нельзя использовать, потому что они слишком высокие или слишком низкие. Вы также можете наложить постановления об «открытом пространстве», которые требуют, чтобы 1 гекс оставался открытым на каждые 3 построенных. У вас может быть суеверие, что некоторые проценты следуют и никогда не будут связаны с определенным шестнадцатеричным номером ребра. Просто нужно допустить некоторую случайность.

Что касается органического дизайна, обратите внимание на L-системы . Сначала установите свои дороги, пробегите случайные расстояния, а затем либо проложите развилку (Y), либо отстреляйтесь от меньшей боковой улицы или участка под застройку. На каждой итерации вы либо продолжаете наращивать дороги в конечных точках, либо строите дома в точках участков.

Поиск по Генерации процедурных дорог даст вам множество исследований, проведенных людьми, вам просто нужно применить их к своей системе.

Мне очень нравится идея объединения приподнятой регулярной шестиугольной сетки дорог (для распределения товаров) с наземной планировкой, созданной фракталами на основе L-систем. Хотя делать их без компьютеров может быть немного утомительно.
К слову о шуме: парки и река
Абсолютно. Город на самом деле только около 50% жилых. Остальное - услуги и еда, торговцы, открытое пространство, гражданское население (включая дороги). Добавление различных типов зданий дает дорогам место для движения и причину для движения туда.
Если вы работаете ручкой и карандашом (кости?), то вам просто нужно построить шансы и таблицы, которые следуют тем же правилам. Шумовые функции, вероятно, слишком сложны для реализации без компьютерной мысли.
Компьютер особо не нужен. Нарисуйте карту с особенностями местности. Выберите несколько мест, которые выглядят круто, а затем застройте их, соединяя удобными дорогами. Наращивайте дальше, пока они не взаимодействуют. (Конечно, вы можете использовать такие вещи, как парки и нежилые постройки, и, вероятно, должны это делать.) Если они просто не подходят друг другу, вы просто вносите некоторые произвольные возмущения по эстетическим причинам.

Существует множество программ, специализирующихся на процедурной генерации городов; например этот: https://youtu.be/yI5YOFR1Wus Я бы просмотрела кучу из них, либо чтобы найти один для использования, либо попытаться выяснить, что они делают, что вам нравится. В противном случае, как сказал человек выше, попробуйте математическую доску.

Это какой-то хитрый софт.

Просто применяйте правила, которые у вас есть, но применяйте их органично.

Разделите карту на гексы, каждый размером с комнату. Поместите «дороги» вокруг гексов.

Разбросайте «исходные точки» по гексам, чтобы они стали вашей отправной точкой.

Используйте генератор случайных чисел от 1 до X+1, где X — количество занятых гексов, чтобы сгенерировать число.

Если число соответствует семейству, оно расширяется. Они выбирают пустой соседний гекс и расширяют его (раскрашивают его в свой цвет) и заполняют дорогу между этими двумя гексами. Обратите внимание, что если какой-либо гекс, который они занимают, выбран, они могут вырастить свое здание из любого места, а не только из этого гекса. Если нет пустых соседних гексов, они растут вверх — один из гексов становится двухэтажным (или трехэтажным, или любым другим).

Если выпало x+1, семья распалась, выберите новую точку и закрасьте ее новым цветом.

Как правило, здания должны расширяться от ближайших соседей, а не к ним, и избегать их окружения.

Остановитесь, когда посчитаете, что ваше поселение достаточно населено.

Это даст вам органичное ощущение города со зданиями разных размеров, более людными районами, растущими вверх и т. д.

Описанный алгоритм будет отдавать предпочтение большим семьям, которые становятся больше, поэтому вы получите больше различий в размерах, и он будет отдавать предпочтение растянутым одноэтажным зданиям.

Если вы предпочитаете более одинаковые размеры, вы можете выбрать случайное семейство для роста, предоставив им одинаковые возможности.

Если вы предпочитаете большую высоту, вы можете придерживаться первого алгоритма, но требовать, чтобы рост происходил из выбранной ячейки. Тогда центр домов будет иметь тенденцию подниматься, даже если по краям еще есть места для расширения.

Это хороший ответ. Не уверен, почему это становится звонко. В сочетании с советом по добавлению различий в ландшафте это может выглядеть действительно интересно с небольшой обработкой.

Чтобы быть кратким, выполните настройку пчелиного улья .

Я имею в виду, что у каждой семьи есть выделенный размер участка. Этот участок представляет собой большой шестиугольник с местом для определенного количества комнат.

Теперь окружите каждый участок двухметровой «дорогой» для торговли.

Таким образом, каждая семья может расширяться по мере необходимости, всегда будет место для перемещения между домами, а все дома состоят из взаимосвязанных шестиугольных комнат.

Если бы я хотел пойти по простому пути, я бы начал с обычной сетки.
Может быть, вам больше повезет с этим вопросом на математической доске SE. Это математическая задача, и они лучше меня подготовлены к такому абстрактному планированию.
Возможно ты прав.
Удачи с вашим вопросом. Надеюсь, вы найдете отличный ответ.