Коротко: чистая случайность читается как искусственная, потому что настоящая растительность противоположна случайному: это видимый итог конкуренции за свет, воду и почву. Вам не нужно моделировать ничего из этой экологии. Вам нужны пять правил размещения, которые подделывают её результаты: кластеризуйте, свяжите виды, градуируйте края, структурируйте размеры и позвольте рельефу решать, что растёт. Эта статья даёт каждое правило с конкретными числами, плюс тест в оттенках серого, который ловит фальшивое распределение раньше всех.
Никакой садовник это не расставлял. Деревья сбиваются вдоль воды и укрытия, редеют на скале и гребне, а край луг-лес — градиент; каждое правило этой статьи видно на одной фотографии.
Ключевое прозрение: природа держится на правилах плюс шум
Перед пятью правилами стоит ментальная модель, которая заставляет их щёлкнуть: настоящий ландшафт не случаен и не упорядочен: он управляется правилами с шумом поверх. Семена падают близ родителей, растения конкурируют за свет, вода собирается в долинах, ветер карает открытые гребни. Результат выглядит органично именно потому, что простые правила его породили, а затем случайность огрубила края. Равномерно случайное размещение пропускает правила и хранит лишь шум, потому оно читается как «это сделал компьютер». Всё ниже описывает способ дёшево вернуть правила.
Правило 1: природа кластеризуется
Равномерно случайное размещение даёт ровное посыпание, которого нет нигде на Земле: настоящие растения сбиваются вокруг того, что их посеяло, с по-настоящему пустыми промежутками между скоплениями. Толкайте кластеризацию дальше, чем кажется безопасным.
Деревья стоят в рощах; цветы цветут пятнами; даже пустынный кустарник кучкуется вдоль дренажных линий. Пустое пространство между скоплениями не растрачено: именно оно делает скопления читаемыми, даёт линиям обзора где дышать и (бонус) рендерится дешевле равномерного заполнения, потому что пустая земля не стоит ничего, а скопления отсекаются как единицы. Практическая цель: стремитесь к размерам скоплений 3–12 инстансов с промежутками в несколько ширин скопления между ними, а не к математически ровному полю.
Почему «дальше, чем кажется безопасным»? Потому что в редакторе, с вида сверху, сильная кластеризация выглядит слишком разреженной, и инстинкт велит заполнить промежутки. Затем вы спускаетесь на уровень глаз, проходите её, и промежутки стали полянами, линиями обзора и местами, где собирается свет. Доверяйте наземному прочтению больше, чем виду сверху; вид сверху лжёт вашему чувству плотности.
Правило 2: у видов есть отношения
Два типа отношений покрывают бо́льшую часть экологии: ПРИТЯГИВАТЬ (грибы у стволов, плющ у стен, камыш у воды) и ИЗБЕГАТЬ (наземные цветы вдали от густого полога, саженцы вдали от зрелых деревьев). Горстка пар бьёт удвоение числа ассетов.
Грибы не разбрасываются случайно по лугу, а следуют за валежником и влагой. Одно правило «притягивать к стволам и брёвнам» воспроизводит это мгновенно, и зрители читают это как истину, не зная почему.
Пары, что окупаются почти в любой умеренной сцене:
- грибы → притягивать к стволам деревьев и упавшим брёвнам (редуценты следуют за валежником)
- трава → избегать густого полога (проигрывает конкуренцию за свет)
- папоротники → притягивать к краям тени (им нужна влага, не тьма)
- молодые деревья → избегать старых деревьев (родитель затеняет саженец)
- камыш → притягивать к линиям воды; луговые цветы → избегать их
- камни/валуны → притягивать к основаниям склонов (скатываются вниз и собираются)
Причина, почему это так дёшево продаёт реализм: зрители не знают ботанику сознательно, но они прошли сквозь десять тысяч настоящих сцен, где эти корреляции выполнялись. Нарушения регистрируются как «игровые» без того, чтобы игрок мог выразить, почему лес ощущается неправильным. Настройка scatter, говорящая на отношениях притягивать/избегать с параметрами дистанции (как scatter от Numivo), превращает весь список выше в пять-шесть записей правил, вычисляемых автоматически, пока вы рисуете.
Правило 3: леса делаются на краях
Граница леса — не стена взрослых деревьев, а градиент: трава, потом кусты, потом маленькие деревья, потом полог, обычно на протяжении 5–15 метров. Выделяйте переходную полосу везде, где встречаются две зоны.
Экологи называют это экотоном, и именно там глаз проводит бо́льшую часть времени, потому что тропы, дороги, лагеря и боевые пространства все жмутся к краям, ведь глубокий лес всё равно по большей части скрыт. Хороший краевой градиент всякий раз превосходит хорошую смесь глубокого леса. Тот же принцип действует на каждой границе: луг/скала, скала/вода, вода/песок, возделанное/дикое. Если вы делаете лишь одну «продвинутую» вещь со своей растительностью, пусть это будут краевые полосы с собственными смесями видов: это изменение с наибольшим рычагом.
Избегайте одного режима сбоя: жёсткого края, чёткой линии, где густой лес становится голым лугом. Ничто в природе не имеет этой линии, кроме подстриженного газона или бульдозера. Даже граница пожара или граница леса перистится на метрах. Жёсткий край растительности читается как граница левел-дизайна, что ломает погружение ровно там, где игроки смотрят больше всего.
Правило 4: размер рассказывает историю
Одинаковый масштаб выдаёт мгновенно, но наивный случайный масштаб едва ли лучше, так что структурируйте его: более крупные экземпляры в укрытых центрах, меньшие, обглоданные ветром, на открытых краях, плюс небольшой поворот и пара градусов наклона.
Полезные значения по умолчанию, выдерживающие проверку:
- Диапазон масштаба 0,85–1,25× внутри вида, смещённый к малому на краях и высоте: равномерная случайность ±40 % выглядит как коробка игрушек, потому что даёт гигантов рядом с карликами без логики.
- Случайный рыскание на всём; широколиственные деревья дополнительно получают 2–5° наклона. Идеально вертикальные деревья на склоне кричат «расставлено», а настоящие деревья на холме клонятся, тянутся к свету и растут кривыми.
- Утапливайте инстансы на 2–5 см в землю. Парящая трава на высоте лодыжки — самый частый артефакт scatter, невидимый в редакторе и вопиющий на скриншоте.
- Пофрагментная вариация цвета на пару процентов ломает копи-пейст-мерцание в больших полях эффективнее добавления мешей-вариантов, ведь глаз ловит повторённый цвет быстрее повторённой формы.
Более глубокая мысль: размер должен кодировать ту же историю, что рассказывают кластеризация и края. Большие укрытые деревья в долине, чахлые на гребне, саженцы на светлом краю леса, куда проникает свет. Когда размер согласуется с положением, сцена читается как экосистема с историей; когда размер случаен, она читается как ассеты, посыпанные на рельеф.
Правило 5: рельеф решает, что растёт
Маски уклона и высоты — бесплатная экология: крутые грани держат скалу и стойкие кусты, а не газоны; днища долин пышнее гребневых линий; виды меняются с высотой. Геометрия, что у вас уже есть, это кодирует.
Пороги, хорошо ложащиеся на восприятие: трава и почвопокров исчезают выше ~30–35° уклона; кусты держатся до ~45°; за пределами — голая скала и редкий обитатель утёсов. Полосы высоты важны даже в малых сценах: смесь долины и смесь гребня, слитые по переходу, продают логику большого мира, которой плоское равномерное покрытие никогда не достигнет. Добавьте влагу третьей маской там, где движок позволяет (у воды, в лощинах), и вы закодировали три оси, на которые настоящие экосистемы действительно откликаются: свет, высоту и воду.
Прелесть масок рельефа в том, что их создание ничего не стоит: данные уклона и высоты уже есть в вашей карте высот. Вы не рисуете, где идёт трава; вы говорите системе «трава, но не на утёсах», и утёсы маскируют себя сами.
Собираем всё вместе
Обнадёживающая часть: правила складываются за один проход. Кластеризованные дубы + грибы, притянутые к ним + трава, избегающая полога + полоса кустов на краю леса + маски уклона, оставляющие утёсы голыми — это пять настроек, а не пять недель ручной расстановки. Затем запустите финальную проверку.
Тест прищура в оттенках серого: сделайте скриншот сцены, переведите в чёрно-белое и прищурьтесь. Настоящая растительность даёт неравномерные, комковатые тоновые узоры: тёмные массы, светлые поляны, беспокойную текстуру. Если ваши оттенки серого выглядят как гладкий, ровный шум, ваше распределение под низом всё ещё равномерно, и надо вернуться к Правилу 1 и толкать кластеризацию сильнее. Тест работает, потому что обесцвечивание убирает цвет, что вам льстил, и оставляет лишь распределение, а именно оно действительно читается как естественное или фальшивое.
Полевые цифры, которые стоит украсть
- Размер скопления, читающийся естественно: 3–12 инстансов, промежутки в несколько ширин скопления
- Ширина градиента края леса: 5–15 м выделенной переходной полосы
- Дисперсия масштаба: 0,85–1,25×, смещённая к малому на краях и высоте
- Наклон: 2–5° на широколиственных; утапливание в землю: 2–5 см на всём
- Отсечка уклона для травы: ~30–35°; кусты: ~45°
- Видов для богатой сцены: ~2 полог, 2 куст, 2–3 почвопокров, 1–2 акцент; распределение бьёт число
Мини-FAQ
Применимо ли это к стилизованным играм? Полностью. Кластеризация, края и логика рельефа касаются распределения, а не детализации: рисованный вручную мир с естественным распределением читается правдоподобнее фотореалистичного с равномерным посыпанием. Распределение остаётся слоем, который игроки читают первым, до текстуры.
Сколько видов мне на самом деле нужно? Меньше, чем вы думаете. Одна сцена хорошо держится на двух пологовых деревьях, двух кустах, двух-трёх почвопокровах и паре акцентных видов, с отношениями между ними. Качество распределения всякий раз бьёт число видов: десять ассетов, расставленных по правилам, бьют сорок, расставленных случайно.
А производительность? Кластеризация — ваш друг: скопления отсекаются как единицы, промежутки не стоят ничего, а краевые полосы концентрируют детализацию там, где смотрят игроки. Естественно выглядящий scatter обычно дешевле равномерной плотности, а не дороже: пустое пространство, что вас тянуло заполнить, — это бесплатное кадровое время.
Можно ли подделать всё это одной большой текстурой шума? Отчасти: шум даёт вам комкование, но не отношения видов и не краевые градиенты, а именно они читаются как экология, а не просто вариация. Шум — это только Правило 1; правдоподобие идёт от Правил 2 и 3.
Пять правил, один проход и тест в оттенках серого для проверки. Природа не случайна, а управляется правилами с шумом поверх, что и есть в точности хорошая настройка scatter.