October 4, 2022

Вегетация. Генерация растительности. Этап 2

Итак, я перегнал класс сосен в движок (в свою сцену). И уже получился миленький "сосновый сад»

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

Обратите внимание, насколько сильна роль здесь будущего освещения и грамотно настроенного шейдера

О свете мы будем говорить позже, когда перетащим весь проект на UE 5, пофиксим в шейдере листвы SSS (подповерхностное свечение) и врубим Lumen

Первое, что нужно сделать в движке это создать т.н. Foliage Type буквально для каждого дерева:

Здесь выставляются все технические аспекты будущей рассадки сосен (наклоны, вариативность по масштабу, коллизии, физические аспекты, если захотим эту сосну срубить в будущем и т.п.)

Эти файлы готовы!

Теперь переходим к более тонкой полировке деревьев:

Что мне не нравится и что нужно скорректировать - это системы Lod'ов. Дело в том, что те уровни детализации, которые можно настроить в Speed Tree мне не очень нравятся

Поэтому я буду настраивать LOD в самом движке, таким образом, чтобы по мере отдаления от объекта подрезка геометрии выглядела плавно и незаметно:

Причем последний LOD не будет подрезать сетку геометрии, но подменять сложную структуру дерева на макет из пары-тройки плейнов с проецированием отдельного материала, который называется Billboard:

Материал Bilboard:

Альбедо текстура Billboard:

Это просто запеченный силуэт модели сосны с разных сторон, включая вид сверху

А теперь поговорим о самом интересном. О шейдере для листвы

Дело в том, в принципе автоматически сгенерированные материалы в Speed Tree весьма хороши, но я буду подменять их на собранный мой сложный шейдер на базе шейдера от Quixel Megascan Tree

Короче я и тут немного порефлексировал:

Здесь очень мощная структура ветра, а для каждого аспекта дерева создана своя вводная функция (ствол и ветви, листва, декораторы)

Разберем листву:

Как видите собраны в систему все необходимые аспекты:

Есть даже функция межсезонья:

Генерация по оттенку:

Ну и разумеется корректировка подповерхностного рассеивания (это важно при взаимодействии с люменом):

НУ что ж, теперь займемся именно этими процессами:

1. Перегон ассетов деревьев в движок

2. "Предпродажная подготовка" настройка Foliage Type и системы Lod'ов с включением билборда

3. Тестирование оптимизации

4. Финализация системы шейдинга для деревьев

5. Рассадка деревьев по локации