Как сделать фрактал в Blender с Tissue: дерево и анимация

Чтобы собрать фрактал в Blender, необязательно начинать с формул или Geometry Nodes. Аддон Tissue переносит один объект на грани другого, а затем повторяет операцию с полученной геометрией. Так из простого компонента вырастает самоподобная структура — от рекурсивного куба до ветвящегося дерева.

Разберём принцип Tissue, ограничим рост с помощью материалов, соберём фрактальное дерево и оживим его через Shape Keys.

О версиях. Видео записано в более раннем интерфейсе Tissue. В новых сборках расположение и названия части настроек изменились, но связка Component → Base → Tessellate и логика итераций сохранились.

Коротко: как строится фрактал в Tissue

  1. Установите Tissue и создайте два объекта: размножаемый Component и принимающий его Base.

  2. Выделите Component, затем активным — Base, и запустите Tessellate.

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

  4. Включите отбор по Material Index и добавьте повторения в Iterations.

  5. Используйте Unused, чтобы сохранить незадействованные грани прошлых итераций, и Merge, чтобы соединить сетку.

  6. Для анимации создайте Shape Keys на Component, поставьте ключевые кадры для Value и включите передачу деформации в Tissue.

Что понадобится

  • Blender и базовое понимание Edit Mode;

  • умение выполнять Inset, Extrude, Loop Cut, перемещение, вращение и масштабирование;

  • аддон Tissue;

  • отдельная копия .blend: число полигонов растёт с каждой итерацией.

Актуальную сборку Tissue берите из официального репозитория автора. В README проекта автор рекомендует устанавливать свежий ZIP вручную через настройки аддонов Blender. ZIP устанавливается как архив — распаковывать его перед выбором в установщике не нужно.

После включения Tissue его инструменты появляются в боковой панели 3D Viewport. В разных версиях Blender панель, набор параметров и названия режимов могут выглядеть немного иначе. Если кнопка находится не там, где в видео, сверяйтесь с официальной документацией Tissue.

Как работает Tissue

В операции участвуют два объекта:

  • Component — геометрия, которую Tissue будет размножать;

  • Base — поверхность, на грани которой будет помещён компонент.

Сначала выделите Component, затем с Shift выделите Base, чтобы он стал активным объектом. Запустите Tessellate. Аддон подгонит ограничивающий объём компонента под каждую подходящую грань базы и создаст новый результирующий объект.

Окно Tissue Tessellate: Base, Component и режим Quad

Окно Tissue Tessellate: Base, Component и режим Quad

Из этого следуют три важных правила.

  1. Форма и локальные координаты Component напрямую влияют на результат.

  2. Топология и нормали Base определяют, куда ориентируются копии.

  3. После изменения исходных объектов результат можно пересчитать командой Refresh.

Для первого теста возьмите простую деталь и тор или куб. Tessellate сразу покажет суть метода: каждая грань базы заменяется или покрывается адаптированной копией компонента. Если включить Merge, соседние копии можно объединить. Модификатор Solidify добавит получившейся сетке толщину.

Первый фрактал: рекурсивный компонент на кубе

1. Подготовьте Component и Base

Добавьте плоскость — она станет исходным компонентом. В Edit Mode сделайте Inset, затем Extrude, чтобы получить небольшой выступ над основной плоскостью. Добавьте куб: он будет базовым объектом.

Выделите компонент, затем куб и выполните Tessellate.

Первый результат может выглядеть искажённым: вершины компонента растягиваются вдоль интерполированных нормалей вершин базы. В показанной в видео версии Tissue это исправляется переключением режима нормалей с вершин на грани — Faces. Тогда каждый компонент ориентируется по нормали своей грани и сохраняет более жёсткую форму.

2. Включите повторения

Найдите раздел Iterations и увеличьте число повторений. Tissue будет использовать результат предыдущей итерации как базу для следующей. Так появляется самоподобие: один и тот же выступ повторяется на всё более сложной геометрии.

Рекурсивная геометрия после двух итераций Tissue

Рекурсивная геометрия после двух итераций Tissue

Но есть проблема: без ограничений компонент размножается на всех полигонах, в том числе на тех, которые должны оставаться основанием. Из-за этого модель быстро превращается в плотный комок геометрии.

3. Ограничьте рекурсию индексом материала

Создайте на Component два пустых материала:

  • материал с индексом 0 — условный ON;

  • материал с индексом 1 — условный OFF.

Названия произвольные; важны индексы. Материал ON назначьте только граням, на которых должна продолжаться следующая итерация. Остальным граням назначьте OFF.

В настройках Tessellate откройте блок Selective и включите отбор по индексу материала. В интерфейсе из видео обработка продолжается на гранях с индексом 0, а остальные грани пропускаются. В актуальной версии поле может быть устроено иначе и позволять прямо выбрать используемый Material ID — ориентируйтесь на смысл настройки, а не только на номер.

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

Отбор граней по Material Index и результат нескольких итераций

Отбор граней по Material Index и результат нескольких итераций

4. Покажите предыдущие итерации

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

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

Как создать фрактальное дерево в Blender

Кубический пример показывает механику. Теперь применим её к органичной форме.

1. Смоделируйте одну ветку

Добавьте куб и вытяните его по вертикали. В Edit Mode добавьте несколько разрезов через Loop Cut, затем экструдируйте верхнюю часть в несколько направлений, формируя развилки.

Сделайте силуэт менее механическим: немного сместите, поверните и масштабируйте отдельные вершины и грани. Удобно включить Alt+Z, чтобы видеть и выделять геометрию насквозь.

Эта ветка станет Component. В роли Base используйте плоскость: на первом шаге ветка появится один раз, а затем Tissue начнёт размножать её уже по торцам самой ветки.

2. Укажите места роста

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

Включите отбор по Material Index и добавьте несколько итераций. Если оставить все грани активными, ветка начнёт копироваться по всей поверхности и вместо дерева получится полигональный комок.

Переключите нормали в режим Faces, если копии заметно деформируются. Режим Unused вернёт участки предыдущих итераций, которые не участвовали в следующем размножении.

Компонент-ветка, Material Index и режим Unused

Компонент-ветка, Material Index и режим Unused

3. Настройте масштаб через Component Coordinates

В режиме Bounds каждый новый компонент подгоняется под границы целевой грани. Поэтому ветви могут становиться меньше на каждом шаге. Для контролируемого размера в видео используется режим Global.

После переключения в Global компонент может сместиться. Причина в том, что теперь Tissue учитывает глобальные координаты исходной ветки. Перейдите в вид сверху и в Edit Mode переместите всю геометрию компонента в первый квадрат координатной сетки, не двигая Origin объекта. Для точности включите привязку к Grid.

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

Как объединить ветви и подготовить сглаживание

Включите Merge. Если точки между итерациями не свариваются, проверьте нижний торец Component. Закрывающая грань может мешать соединению границ. Удалите нижний полигон ветки, затем обновите результат через Refresh.

После успешного объединения можно добавить Subdivision Surface и проверить цельность сетки. Если на стыках остаются разрывы, вернитесь к компоненту и проверьте:

  • открыта ли нижняя граница;

  • совпадает ли количество и расположение вершин на соединяемых контурах;

  • включён ли Merge;

  • не слишком ли мал порог слияния;

  • применяются ли преобразования и координаты так, как ожидает выбранный режим.

Фрактальное дерево после объединения и сглаживания

Фрактальное дерево после объединения и сглаживания

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

Перед экспериментами сохраните отдельную версию .blend и увеличивайте Repeat по одному шагу.

Как анимировать фрактал через Shape Keys

Форма компонента может меняться во времени, а Tissue — пересчитывать эту деформацию для всей конструкции.

1. Создайте две формы ветки

Выберите исходный Component и откройте Object Data Properties → Shape Keys. Дважды нажмите +:

  • Basis сохранит исходную форму;

  • Key 1 станет изменённым состоянием.

Выберите Key 1, перейдите в Edit Mode и измените ветку: сместите точки, измените наклон ответвлений, масштаб или изгиб. Не добавляйте и не удаляйте вершины после создания Shape Keys — ключи формы хранят положения существующих вершин и требуют стабильной топологии.

2. Поставьте ключевые кадры

Вернитесь в Object Mode. На начальном кадре установите Value = 0 и вставьте ключевой кадр. Перейдите к финальному кадру, установите Value = 1 и снова вставьте ключевой кадр.

Blender плавно интерполирует компонент между Basis и Key 1. В настройках результата Tissue включите передачу и обновление формы. В версии из видео этот переключатель называется Animatable; в более новых сборках ищите параметры, связанные с Use Shape Keys, morphing или анимируемым Tessellate.

Запустите воспроизведение. Если всё настроено верно, одна деформация исходной ветки распространится по всей рекурсивной структуре.

Shape Keys на исходной ветке и анимированный результат Tissue

Shape Keys на исходной ветке и анимированный результат Tissue

Типовые ошибки

Компоненты сильно искажаются

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

Фрактал растёт на всех полигонах

Проверьте материалы Component и отбор в Selective. Материал продолжения должен находиться только на торцах или других гранях роста.

Видна только верхушка структуры

В Combine Iterations вместо Last выберите Unused либо All. Для дерева обычно удобнее Unused: он возвращает непроработанные участки предыдущего шага без безусловного дублирования всей геометрии.

Merge не соединяет итерации

Удалите закрывающую грань на стыке компонента, проверьте контуры и порог слияния. Затем выполните Refresh.

После Global компонент сместился

Исправьте положение самой геометрии в Edit Mode относительно Origin и координатной сетки. Не компенсируйте проблему случайным перемещением объекта в Object Mode.

Blender зависает при увеличении Repeat

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

Куда развивать результат

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

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

В Tissue вы проектируете не итоговую модель, а правило размножения одного элемента. Самое интересное начинается после настройки компонента, активных граней и координат: меняя одну ветку, можно перестраивать всю структуру.

Частые вопросы

Что делает аддон Tissue в Blender?

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

Можно ли создать фрактал без Geometry Nodes?

Да. В этом уроке рекурсия строится через Iterations в Tessellate. Geometry Nodes для метода не нужны.

Почему ветки уменьшаются с каждой итерацией?

В режиме Bounds компонент подгоняется под ограничивающий объём целевой грани. Если нужен другой контроль масштаба, используйте Local или Global coordinates и правильно расположите геометрию относительно Origin.

Зачем назначать два материала без текстур?

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

Как анимировать результат Tissue?

Создайте Shape Keys на Component, анимируйте Value и включите передачу ключей формы или анимируемый режим в настройках Tessellate. Название параметра зависит от версии аддона.

Сколько итераций можно использовать?

Единого безопасного числа нет: всё зависит от топологии компонента и числа активных граней. Начинайте с одной итерации и повышайте значение постепенно. Для модели из исходного урока автор рекомендует не превышать пять.