В этом туториале соберём в TouchDesigner анимированную сферу, поверхность которой непрерывно меняется под воздействием процедурного шума. В результате получится объект, похожий одновременно на цифровую луну, облако частиц и живую планету.
Основной эффект строится на небольшой цепочке POP-операторов:
Point Generator POP→ Feedback POP→ Noise POP→ Math POP→ Null POP
После настройки частиц мы подготовим классический рендер через Geometry COMP, добавим шлейф с помощью второго Feedback уже на уровне TOP и завершим композицию свечением через Bloom TOP.
В моём финальном ролике базовая сфера дополнена сине-фиолетовой цветокоррекцией, цифровым зерном и вращающимися типографическими кольцами. Однако центральный объект построен именно по описанному ниже принципу.
Материал подготовлен на основе англоязычного видеоурока Okami Rufu. Последовательность действий переведена, переработана и дополнена пояснениями.
Структура проекта
Всю сеть удобно разделить на три смысловых блока. В первом генерируются и анимируются точки, во втором они передаются в Geometry и рендерятся через камеру, а в третьем готовое изображение проходит постобработку.

Общая структура проекта: POP-система, рендер и постобработка.
Главная идея эффекта заключается в том, что каждый кадр мы добавляем шум к координатам точек, а затем возвращаем их на поверхность сферы. Упрощённо этот процесс можно записать так:
Pnext = normalize(Pcurrent + Noise) × Radius
Здесь Pcurrent — текущее положение точки, Noise — процедурное смещение, normalize() — нормализация вектора, а Radius — радиус сферы.
Шум пытается разрушить исходную форму, а нормализация постоянно собирает её обратно. Благодаря Feedback операция повторяется каждый кадр, поэтому поверхность не просто колеблется, а постепенно меняет своё состояние.
Создаём облако точек
Начнём с Point Generator POP. В параметре Shape выбираем Sphere, а количество точек устанавливаем в зависимости от возможностей компьютера. В исходном проекте используется 500 000 точек, но для первой сборки лучше начать со 100–200 тысяч. Когда сеть заработает стабильно, количество можно увеличить.
В разделе распределения можно выбрать как Surface, так и Volume. Для этого эффекта принципиальной разницы нет, потому что позже Math POP всё равно перенесёт все точки на поверхность сферы.

Создание сферы из 500 000 точек с помощью Point Generator POP.
На этом этапе объект представляет собой обычное статичное облако точек. Следующим шагом добавим обратную связь, благодаря которой результат предыдущего кадра станет основой для нового вычисления.
Добавляем Feedback POP
После генератора создаём Feedback POP и соединяем его с Point Generator POP. Теперь оператор сможет получать координаты точек из предыдущего кадра и повторно отправлять их в сеть.
Без Feedback мы получили бы обычную анимированную деформацию: шум менялся бы со временем, но каждый кадр рассчитывался бы от исходной сферы. С Feedback каждое новое состояние становится отправной точкой для следующего, поэтому движение выглядит более органичным и накопительным.
Чтобы система не работала бесконечно без сброса, создаём LFO CHOP. В его параметрах выбираем тип Pulse и устанавливаем Frequency равной 2. После этого связываем выход LFO с импульсными параметрами Initialize и Start в Feedback POP.

LFO автоматически сбрасывает состояние Feedback POP.
Частота LFO влияет на продолжительность цикла. При низких значениях система дольше развивается без перезапуска, а при высоких чаще возвращается к исходному состоянию. Слишком частый сброс может сделать движение заметно дёрганым, поэтому значение лучше подбирать под конкретную анимацию.
Деформируем поверхность шумом
После Feedback POP добавляем Noise POP. В исходном варианте используются Period со значением 4, Harmonics со значением 2, Harmonic Spread со значением 3 и Amplitude около 0,1.
Параметр Amplitude определяет силу смещения точек. При небольших значениях поверхность движется мягко, а при слишком высокой амплитуде становится агрессивной и может визуально распадаться на отдельные участки.
Чтобы характер шума дополнительно менялся во времени, копируем созданный ранее LFO CHOP, переключаем его тип на Gaussian и устанавливаем Frequency равной 1. Затем связываем выход этого LFO с параметром Harmonic Gain в Noise POP.

Параметры процедурного шума, деформирующего поверхность.
Теперь Noise POP изменяет координаты точек, а второй LFO управляет детализацией и интенсивностью шума. Поверхность уже начинает двигаться, но без дополнительной обработки форма сферы постепенно теряется.
Возвращаем точки на поверхность сферы
После Noise POP создаём Math POP. В разделе постопераций выбираем Normalize A. Именно этот параметр выполняет ключевую работу: нормализует вектор позиции каждой точки и возвращает её на сферическую поверхность.
Для увеличения объекта можно поднять значение Map to Range High до 3. В таком случае нормализованные координаты будут масштабированы, и сфера станет крупнее.

Нормализация возвращает смещённые точки на поверхность сферы.
Фактически Noise POP каждый кадр пытается увести точки в разные стороны, а Math POP проецирует их обратно на сферу. Новые координаты возвращаются в Feedback и становятся основой следующего кадра. Именно это сочетание создаёт эффект текучей, постоянно перестраивающейся оболочки.
Замыкаем POP-сеть
После Math POP создаём Null POP и называем его END. Затем указываем этот оператор внутри Feedback POP, чтобы замкнуть цикл.
Итоговая последовательность выглядит так:
Point Generator POP→ Feedback POP→ Noise POP→ Math POP→ Null POP

Финальная POP-сеть с замкнутым циклом обратной связи.
Логика сети довольно проста: сначала создаются точки, затем используются координаты предыдущего кадра, после чего они смещаются шумом, нормализуются и сохраняются для следующего вычисления.
Почему сфера остаётся круглой
Представим точку с координатами:
P = (x, y, z)
После применения шума её положение меняется:
P' = P + N
Здесь N — вектор смещения, полученный из Noise. Длина нового вектора может быть любой, поэтому точка способна оказаться как внутри сферы, так и за её пределами.
Нормализация делит координаты на длину вектора:
normalize(P') = P' / length(P')
В результате длина каждого вектора становится равной единице. Если затем умножить полученные координаты на выбранный радиус, все точки снова окажутся на одной сферической поверхности:
Pfinal = normalize(P') × Radius
Таким образом, мы не деформируем готовую полигональную модель. Вместо этого TouchDesigner каждый кадр рассчитывает новые позиции сотен тысяч независимых точек.
Подготавливаем рендер
Чтобы отделить генеративную часть проекта от рендера, создаём Select POP и указываем в нём оператор END. После этого добавляем Geometry COMP, Camera COMP, Render TOP и Constant MAT.
В Geometry COMP указываем Select POP в качестве источника геометрии, а в качестве материала назначаем Constant MAT белого цвета. Такой материал удобен тем, что позволяет получить яркое изображение без дополнительной настройки источников света.

Подготовка частиц к рендеру через Geometry COMP.
Камеру располагаем напротив объекта и подбираем расстояние так, чтобы сфера занимала центральную часть кадра. В Render TOP устанавливаем чёрный цвет фона.
Для вертикальной композиции можно использовать разрешение 720 × 1280. Во время работы его удобно временно уменьшить до 360 × 640, чтобы снизить нагрузку на систему, а перед финальным экспортом вернуть исходные значения.

Базовый рендер сферы до добавления постобработки.
На этом этапе уже видна основная форма объекта, но изображению пока не хватает глубины и следа от движения.
Добавляем шлейф через Feedback TOP
До этого момента Feedback использовался для работы с координатами частиц. Теперь создадим второй цикл обратной связи, но уже на уровне готового изображения.
Добавляем Feedback TOP, затем Level TOP и Over TOP. Выход Level TOP подключаем к первому входу Over TOP, а результат Render TOP — ко второму. После этого указываем Over TOP в параметре Target TOP оператора Feedback TOP, замыкая цикл.

Цикл обратной связи для накопления предыдущих кадров.
Level TOP управляет тем, насколько быстро исчезают предыдущие кадры. Если весь экран становится белым или слишком ярким, значит, значение Opacity установлено слишком высоко.
Для начала можно использовать Opacity около 0,5. При значениях около 0,2 получится короткий аккуратный шлейф, а значения в районе 0,8 создадут длинное накопление и сильное размытие движения. Для мягкой «лунной» поверхности обычно хорошо подходят значения от 0,4 до 0,6.
Добавляем Bloom
Последним оператором постобработки создаём Bloom TOP и подключаем его после Over TOP. Bloom усиливает наиболее яркие участки изображения, добавляет свечение и визуально объединяет отдельные точки в более плотную поверхность.

Финальный эффект после добавления Bloom и шлейфа.
Интенсивность Bloom лучше увеличивать постепенно. При слишком высоких значениях сфера быстро превращается в однородное белое пятно, а мелкие детали поверхности исчезают.
Лучше всего эффект работает при тёмном фоне, ярком материале частиц и умеренном накоплении предыдущих кадров.
Финальная структура проекта
Основная POP-сеть состоит из Point Generator POP, Feedback POP, Noise POP, Math POP и финального Null POP. Два LFO CHOP используются для автоматического сброса Feedback и модуляции параметра Harmonic Gain.
Рендер строится на связке Select POP, Geometry COMP, Camera COMP, Constant MAT и Render TOP. После рендера изображение проходит через цикл Feedback TOP, Level TOP и Over TOP, а затем обрабатывается в Bloom TOP.
В итоге проект содержит два независимых Feedback. Первый работает с координатами частиц, а второй — с готовым изображением.
Как был стилизован финальный ролик
В моей финальной композиции базовый эффект дополнен ярким синим фоном, бирюзовыми и фиолетовыми оттенками, цифровым зерном и несколькими кольцами из крупного белого текста.
Типографика здесь используется не как обычная подпись, а как самостоятельная графическая система. Текстовые кольца обрамляют центральную сферу, создают дополнительную глубину и усиливают ощущение орбитального движения.
Такой слой удобно собирать отдельно от POP-сети, а затем объединять со сферой во время композитинга. Благодаря этому можно менять текст, масштаб, скорость и направление вращения колец, не затрагивая симуляцию частиц.
Возможные проблемы
Точки почти не двигаются
Если поверхность выглядит статичной, увеличьте Amplitude в Noise POP, например с 0,1 до 0,15. Также проверьте, что выход второго LFO действительно связан с параметром Harmonic Gain.
Сфера потеряла форму
Убедитесь, что в Math POP выбрана постоперация Normalize A. Также проверьте, что в Feedback возвращается результат после Math POP, а не выход Noise POP.
Кадр превращается в сплошное белое пятно
Скорее всего, значение Opacity в Level TOP слишком высокое. Попробуйте начать с 0,3, а затем постепенно увеличивать его, пока не получите нужную длину шлейфа.
Проект работает слишком медленно
Снизьте количество точек с 500 000 до 100 000 или временно уменьшите разрешение Render TOP. После настройки параметров можно вернуть финальные значения.
На поверхности слишком хорошо видны отдельные точки
Увеличьте их количество, немного приблизьте камеру или добавьте умеренный Bloom. Также скрыть структуру отдельных частиц помогает шлейф Feedback и небольшое цифровое зерно.
Движение выглядит слишком резким
Уменьшите Amplitude в Noise POP, снизьте частоту LFO или увеличьте Period. Более высокий Period сделает структуру шума крупнее и спокойнее.
Куда развивать эффект дальше
Получившуюся сеть можно сделать аудиореактивной. Для этого достаточно подключить Audio Device In CHOP, проанализировать сигнал через Analyze CHOP, привести его к нужному диапазону с помощью Math CHOP и передать результат в Noise POP.
Например, низкие частоты могут управлять радиусом сферы, средние — амплитудой деформации, а высокие — интенсивностью Bloom или цветом.
Проект также можно сделать интерактивным. Положение курсора, данные камеры или координаты внешнего контроллера подойдут для локального притяжения и отталкивания частиц, создания вмятин или изменения цвета отдельных областей.
Вместо белого Constant MAT можно использовать цветовые атрибуты точек или окрашивать готовый рендер через Ramp TOP, Lookup TOP, HSV Adjust TOP и Color Correct TOP.
Ещё один вариант развития — создать несколько копий сферы с разными значениями Period, Amplitude, радиуса и скорости Feedback. Так можно получить орбитальную систему, набор генеративных объектов или полноценную сцену для живого выступления.
Основные параметры также удобно связать с MIDI-контроллером. В таком случае во время выступления можно в реальном времени управлять амплитудой шума, размером сферы, длиной шлейфа, интенсивностью свечения и цветовой палитрой.
Больше экспериментов и визуальных работ
Больше разнообразных работ, экспериментов с генеративной графикой, моушн-дизайном и TouchDesigner я публикую в Telegram-канале Design by DI:
Там можно найти дополнительные проекты, визуальные исследования и примеры того, как подобные техники выглядят в законченных композициях.
Итог
Мы получили динамическую сферу из сотен тысяч точек, используя небольшую POP-сеть и два независимых цикла обратной связи.
Noise POP создаёт движение, Math POP сохраняет сферическую форму, а Feedback превращает обычную деформацию в непрерывный процесс. Второй Feedback, собранный на уровне TOP, добавляет след от предыдущих кадров, а Bloom завершает изображение мягким свечением.
Главное преимущество этого подхода — соотношение сложности сети и результата. Всего несколько операторов дают основу, которую можно превратить в цифровую луну, аудиореактивную планету, интерактивную инсталляцию или типографическую композицию.
При этом каждый элемент остаётся процедурным: можно в любой момент изменить количество точек, форму генератора, характер шума, радиус объекта, длину шлейфа и цветовую палитру, не перестраивая проект с нуля.
ссылка на оригинал статьи https://habr.com/ru/articles/1067640/