Login

Lost your password?
Don't have an account? Sign Up

Настройка эффекта трансформации мистика из X-Man в Гудини

Дэвид Гао описал процесс создания эффекта трансформации кожи Mystique из X-men в Гудини.

Страж серии

Моя серия Sentinel началась с исследования эффекта трансформации Mystique от X-men. Это привело меня к видео на канале Youtube Moder More, которое продемонстрировало этот эффект, используя шкалу с отдельными материалами по обе стороны и переворачивая их волной.

Это вдохновило меня попробовать сам эффект, когда я впервые начал изучать Гудини 2 года назад. С тех пор я создавал последующие итерации эффекта по мере роста моих знаний в программном обеспечении. 

Я включил файл hip для базового эффекта в описание этого видео на YouTube, чтобы вы могли легко следить за ним!

База FX

Поскольку я создал этот эффект, когда только начал изучать программное обеспечение, концепции, описанные в этом разделе, относятся к начальному уровню. 

Сначала мы создадим двустороннюю шкалу.

Чтобы создать контур шкалы, мы начинаем с линии в направлении Y. Затем с помощью атрибута wrangle мы можем лепить контур линии, сдвигая значение X.

Сначала мы получаем нормированную длину вдоль оси Y:

f @ norm = (@ ptnum * 1.0) / ((@ numpt * 1.0) – 1);

Во-вторых, мы будем контурной линией вдоль оси X, используя рампу, и включим переменную, которую мы можем масштабировать:

@Px = chramp («контур», @norm, 0) * ch («X_Scale»);

Используя Mirror SOP вдоль оси X, а затем Skin (Группы из N примитивов), Fuse и PolyExtrude (позволяя группам Output Front / Back / Side для последующего применения материала), SOP даст нам форму масштаба / листа с деления по горизонтальной оси. Масштаб также должен быть преобразован вдоль оси Z для последующего копирования в точки.

Теперь нам нужно создать геометрию для копирования масштабов. В моем первом страже я использовал анимацию Mixamo , но для этого базового примера мы можем просто поэкспериментировать с сеткой. Я начал с сетки размером 5 х 9 с 22 строками и 8 столбцами. Чтобы правильно скопировать эти шкалы в точку нашей геометрии, нам нужно будет рассчитать нормаль и создать вектор Up (0,0, -1, если мы хотим, чтобы шкалы лежали плоско на оси Z в начале). Кроме того, мы можем добавить некоторые нерегулярные детали / шаблоны в масштабах, добавляя шум к компонентам X и Z вектора Up, сохраняя при этом компонент Y на 0.

Введение шума в векторе Up создаст более естественное масштабирование

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

Поворот нужно будет поддерживать, так как мы хотим, чтобы шкала оставалась перевернутой после преобразования. Масштабирование является только временным, поскольку мы хотим, чтобы масштаб увеличивался только во время преобразования. Я создал простую линию, которая перемещалась по сетке и использовал перенос атрибута со значением цвета (0,03, 1, 0). Я дал ему порог расстояния 0,01 и ширину смешивания 1. Это может варьироваться в зависимости от масштаба вашей сетки.

Красный компонент накапливается, в то время как зеленый компонент рассчитывается только для каждого кадра.

Зеленый компонент будет контролировать вращение и будет намного меньше, потому что решатель быстро накапливает это значение. Это значение должно быть скорректировано в зависимости от скорости линии. Красный компонент будет контролировать масштабирование и обходить добавление предыдущего кадра.

Настройка решателя СОП

Только X-компонент цвета должен накапливаться со временем, значение Y может просто пройти через

Следующим шагом является создание цикла For, который будет копировать эти масштабы в сетку. В цикле For мы создадим атрибут атрибута, который переназначит значения Cd в наше значение масштаба и вращения. Если вы хотите выделить этот эффект в замедленном режиме, вы также можете реализовать атрибут изгиба. Я переназначил этот пример на эти значения:

f @ rot = fit01 (@ Cd.r, -90,90);

f @ bending = fit01 (@ Cd.g, -90,90);

f @ scale = fit01 (@ Cd.g, 0,1,5);

Теперь мы можем добавить SOP изгиба и преобразования перед подачей его в SOP Copy to Points. Чтобы получить доступ к атрибутам, созданным в атрибуте remap, мы добавим запасной параметр для этих двух СОП через раскрывающееся меню настроек и перетащим атрибут атрибута в этот слот. Эти два узла теперь будут включены в цикл For, как показано фиолетовым проводом. В SOP Bend я использовал это выражение для вызова атрибута bending:

точка ( “../ attribute_remap”, 0, “изгиб”, 0)

В SOP преобразования я использовал точечное выражение для вращения, равномерной шкалы и Z-шкалы, как показано:

Наконец, мы можем добавить Delete SOP в цикл удаления точек For с атрибутом scale 0 с выражением @ scale == 0, чтобы очистить ненужную геометрию. 

Теперь мы закончили с компонентом масштаба этого эффекта. 

Конечное дерево узлов

Эффект масштаба

Чтобы изменить материал под весами, мы можем использовать тот же решатель СОП, который мы использовали, и смешать материал, используя красный компонент. Этот метод будет зависеть от типа используемого рендерера. Для Redshift это будет через RS Material Blender.

Вторичный FX

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

Это все элементы, которые я использовал для создания первой версии часового, которые были применены к анимации от Mixamo. Я просто дам краткий обзор высокого уровня основных дополнений и отличий последующих итераций.

Магма Мистик

Для второй итерации моей серии часовых я создал версию элемента огня с некоторыми улучшениями пиро и текстур. 

Для дыма я добавил много уровней газовой турбулентности в дополнение к градиентному шуму, чтобы создать более сложную модель дыма. Хорошая имитация дыма требует 5+ турбулентности с различными частотами. Поскольку пиро является таким огромным предметом в FX, я очень рекомендую посмотреть этот мастер-класс Джеффа Вагнера, чтобы узнать больше:

Чтобы создать текстуру магмы, я использовал актив вулканической породы Quixel Megascans . Я взял текстуру смещения, перевернул и зажал ее, чтобы создать эффект излучения света от трещин текстуры. 

Арктическая Мистика

Третья ледовая итерация часовых имеет еще несколько добавленных элементов. Вместо того, чтобы просто смешать материал, возникающий в базовой геометрии, я удалил кожу, чтобы показать фрагментированную ледяную скульптуру. Чтобы создать эту геометрию, я сначала переместил анимацию Mixamo в первый кадр. Затем я использовал предустановку стекла узла перелома материала RBD, чтобы создать рисунок разбития стекла. Я удалил некоторые части разбитой геометрии, чтобы придать ей более искаженный и неполный вид, и исказил точечный результат исходной анимации (SOP с точечной деформацией очень быстро спасает жизнь во многих ситуациях). Чтобы создать более похожий на туман дым, я создал более плавную симуляцию дыма и добавил настраиваемое поле скорости с шумом скручивания.

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

Deep Sea Sentinel

Моя последняя итерация была вдохновлена прошлой работой, которую я проделал с излучающими светами, проходящими через зеркальные провода :

Подобно арктическому сторожу, я удалил скин, чтобы показать другую геометрию, которая была деформирована по отношению к исходной анимации. Чтобы создать рисунок из проволоки, я разбросал точки на части исходной геометрии, которые я выбрал, а затем использовал их в качестве источника излучения в сети POP. В POP я использовал выражение minpos во всплывающей подсказке, чтобы привязать частицы к геометрии. Затем я тянул эти точки, чтобы создать кривые, которые затем были сметены в провода. Затем я скопировал излучающие сферы на симуляцию исходных частиц, чтобы создать эффект света, движущегося по проводам. В затенении эти сферы были скрыты от первичного луча, так что были видны только их отражения на проводах.

Послесловие

На этом моя серия Sentinel заканчивается! Я начал эту серию в попытке воспроизвести эффект, но к концу я действительно получил удовольствие, экспериментируя с различными методами, пытаясь создать что-то новое и странное. Спасибо за прочтение!