February 16, 2022

scattering и создание процедурных ландшафтов

Маленький опыт в создании разных ландшафтов.

1 Создание стилизованного ландшафта

Для создания такого ландшафта нужна общая затравка из объекта

Начнём рассаживать траву. Чтобы рассаживать только на на вершине объекта, а не по бокам или снизу используем ноду математики "больше чем" .

low-poly модельки травы, камней, деревьев и цветов скачаны с сайта sketchfab.

рассеивание цветов и деревьев происходит по такой же схеме, только с меньшей плотностью

Боковые камни ставятся почти так же как и все остальное, только с математической нодой "меньше чем", что позволяет рассеивать камни на всех остальных оставшихся участках

последний штрих - шейдинг объекта-затравки. Так же как и для рассеивания объектов будем использовать положение точек по координате Z и математическую ноду "больше чем" чтобы контролировать высоту зелёной части объекта, на которой находиться трава.

Результат если сложить всё воедино.

2 Создание процедурного фотореалистичного болота

процесс очень схож с созданием со стилизованным ландшафтом, но все же имеет свои особенности

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

Деформация плоскости происходит по координате Z, правление шумом через кривые. Начинаем рассеивать траву, способ такой же как и при стилизованном ландшафте, но с использование фотосканов травы, скачанных с quixel bridge.

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

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

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

результат

3 создание каньона по кривой

для создания каньона были взяты части из фотоскана каньона, такие как склоны или просто прямая поверхность

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

Главной боевой единицой почти прямых склона утёса и вода между ними - это основа канона

Далее применяем модификаторы array для клонирования и выставляем параметры fit type на fit curve и constant offset тем самым каждый следующий клон будет на константном расстоянии друг от друга и следовать по кривой

Всё классно, но есть проблема, каньон слишком сильно зациклен, что бросается в глаза. для этого будем использовать geometry nodes - процедурное взаимодействие с геометрией. С использованием положения каждой точки кривой и её поворот можно, с маленьким отступом, рассеять уже готовые закруглённые части.

У кривой есть параметр закрытости, он замыкает кривую создавая отдельную фигуру, по которой так же можно рассеивать объекты. Для этого будем использовать прямые части с фотоскана. и вот финальный результат