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

Слева — дерево из старой версии Blender, которое было сделано с помощью аддона, а справа — вариант, который мы получили, используя ствол из того самого аддона, но вот листья уже были добавлены нами. Если приглядываться, то косяки можно найти везде. Но в первом случае, на мой взгляд, их больше. Если обратить внимание на расположение листьев, то по ним можно четко увидеть, где у дерева находятся ветки. Вообще, логично, конечно. Мелкие ветки с листьями так или иначе, но растут вдоль более крупных. Но того самого природного рандома не хватает. Плюс бросаются в глаза тонкие голые ветки в верхней части кроны, на концах которых почему-то растут довольно крупные отростки с листьями.
Если же говорить о дереве, что мы делали в новой версии Blender, то у него тоже есть торчащие по периферии кроны мелкие ветки, которые выглядят нелепо, но голых ветвей как будто бы меньше. Кроме того, нет слишком четкого выделения крупных веток, отчего крона выглядит естественнее.
Но давайте еще немного задержимся с деревьями. В заголовок мы вынесли туманную формулировку со словами «рекурсия искусственности». Думаю, что оба слова вам знакомы, но что они означают в контексте моделирования вам неведомо. Суть в следующем. Когда мы знакомили вас с материалами, то упомянули, что есть готовые текстуры, которые можно использовать применительно к своим моделям. При создании же вьюна на полку вы видели, что вместо моделирования сложных поверхностей листьев мы просто взяли изображения живых листьев, и применили их к мешу, который лишь отдаленно походил на листок. Однако во время рендеринга картинки изображение волшебным образом стало сильно походить на живые листья. То есть мы взяли что-то настоящее и применили к искусственному. Рекурсия же возникла бы в случае, если бы мы сделали искусственный листок вручную по какому-нибудь референсу, превратили бы его в картинку, а затем применили бы к искусственному же мешу в качестве текстуры. На выходе получилось бы что-то близкое к реализму, но при этом не имеющее с реальностью вообще ничего общего. Первый раз я увидел это у одного 3D-художника, который показал, как он покрыл тем самым вьюном стену какого-то закоулка. Смотрите, как это выглядело:

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

Обратите внимание на количество треугольников. Если вы сейчас примените модификатор, чтобы листья исчезли, то никаких изменений в цифрах не увидите. Однако при работе с геометрическими нодами проект изрядно подтормаживал. Все из-за того, что хотя вся геометрия той ветки, которая использовалась для заполнения голого дерева, по сути, получена приемом Alt + D (то есть не множит геометрию в отличие от Shift + D), но в процессе ее расстановки железо все математические операции обрабатывает. А поэтому компьютеру (моему — точно) было весьма непросто. Все потому, что в каждой такой ветке почти тысяча треугольников.
И эту тысячу треугольников система множество раз продублировала и обсчитывала во время генерации листвы. А теперь давайте посмотрим, как действовал автор того самого закоулка, который он так виртуозно завесил вьюном. Вот небольшой отрывок из его обучающего ролика, что выложен на замедленном видеохостинге:
Давайте разберемся, что мы увидели выше. Автор взял фотографию живого листа и воссоздал по ней лист в Blender (версия программы, кстати, 2.9). Это тот самый случай, когда никакой Photoshop или нейросеть не воспроизведет до мельчайшей детали вашу задумку. Ему требуется совершенно конкретное расположение, совершенно конкретных листьев. Смотрите, какую конструкцию он в моменте получает:

Думаю, что не ошибусь, если предположу, что у него в одном листочке столько же треугольников, сколько во всей нашей ветке. Однако геометрия ему нужна только для того, чтобы зафиксировать ее на плоскости. Дальше будет процесс запекания текстуры, который нам пока не нужен. Но после получения текстур автор делает следующее:
Источник видео — личный аккаунт художника на YouTube
Из кадров выше становится очевидно, что изображение получается идентичным тому, что формируется многими полигонами геометрии, но содержит в сотни (если не в тысячу) раз меньше вершин. Позднее он добавит к листьям ветви и завесит растениями стены переулка.
Процесс происходит не в Blender, но суть та же самая. А теперь давайте посмотрим, что мы можем почерпнуть из проекта художника, некоторые фрагменты которого мы только что рассмотрели. Еще раз продублирую ссылку на его профиль. Поизучайте.
Нас пока интересует только момент с сокращением геометрии посредством использования готовой текстуры ветки с листьями. Работает это следующим образом.
А теперь давайте создадим объект в сцене с деревом из прошлого урока и превратим его в тот, которым нужно будет заполнить поверхность того голого ствола, что мы создали в аддоне ранней версии программы.
Ничего нового вы тут не увидите. Просто еще один вариант, как получить дерево, чтобы добавить его в свою сцену. Учесть здесь следует цвета листьев, когда вы рендерите ветку. Видно, что новая ветка получилась тусклее. Но вы всегда можете обратиться к сторонней текстуре листьев, как мы делали с вьюном. То есть для искусственной ветки вы возьмете настоящую текстуру, сделаете с ней ветку. Затем разместите ее перед камерой и превратите уже целую ветку в нужную вам картинку. В этом и заключается суть той самой рекурсии искусственности. Вы искажаете реальность, смешивая ее с частичками правды, но на выходе получаете концентрированный обман.
В данном случае мы действовали следующим образом. Добавили в сцену плоскость. Подразделили ее в режиме редактирования с помощью инструмента Subdivide. Создали ей материал, который состоял полностью из картинки, полученной в результате рендеринга ветки. Обратите внимание, что для того, чтобы у получившегося меша ветки, который вы будете позднее применять для заполнения голого ствола, была прозрачность, следует скопировать узел Image Texture и использовать его также и для подключения к точке Alpha нода Principled BSDF. Иначе он останется черным квадратом с рисунком ветки внутри.
После того как вы наделили вашу плоскость текстурой, вам следует отсечь лишние вершины и придать ей форму той самой ветки. Это позволит с большим удобством ее сгибать и четче видеть результат. Уверен, что вы обратили внимание, что фигура в итоге у нас получилась весьма угловатая. Однако использование функции Shade Smooth сгладило неровности до приемлемого уровня. Важно также установить центр ветки в точку, которая соответствует ее «истоку». Поскольку именно эту точку схема геометрических нодов будет использовать, для присоединения к стволу дерева и крупным ветвям.
В итоге два одинаковых дерева рядом с использованием разных подходов к созданию листового «заполнителя» выглядят следующим образом:

В некоторых местах можно рассмотреть излишнее уплощение отдельных листьев. Да и цветность получилась не такая насыщенная. Но в целом можно отметить сходство до степени смешения. Важным моментом здесь остается оптимизация. В конце видео, что приведено выше, мы подчеркнули, насколько сильно сэкономили в вершинах, используя подобный способ.
На следующем уроке мы с вами попробуем использовать полученные навыки для того, чтобы сделать хвойное дерево. Пока же попробуйте повторить то, что только что увидели. Если возникают вопросы, то не забывайте тегать меня в комментариях (@mikhailv0lk0v), чтобы я сразу увидел ваше сообщение.
Увлекательного моделирования!