Создание лазерной сабли в стиле «Звёздных войн» с помощью Maya & Houdini
Уайетт Кларк рассказал нам о проекте «Световой меч», обсудив моделирование оружия в стиле «Звёздных войн» и его деталей, таких как винты и кристалл, с использованием программ Maya, Houdini и Nuke.


Введение
Привет! Я Уайетт Кларк, специалист по визуальным эффектам (VFX), ищущий стажировки и работу. Вы можете найти меня здесь. Мне нравится моделирование, текстурирование, виртуальное производство и немного эффектов. Я использую Maya, Houdini, Substance 3D Painter и Designer, а также Unreal Engine, и с удовольствием пообщаюсь о 3D Gaussian splatting, машинном обучении или устройстве вселенной.
Когда я был маленьким, я слышал о друге, чей дядя работал над фильмами, и его имя появилось на рекламном щите в кадре. Я подумал, что это самое крутое пасхальное яйцо, и захотел впечатлить своих трёх младших братьев таким же образом. Отсюда и визуальные эффекты! Я работал над несколькими студенческими проектами и участвовал в совместных стажировках, чтобы достичь того, что имею сегодня, сотрудничая с такими компаниями, как The Mill, Paramount+ и BMW.
Начало работы
Этот проект был моей мечтой в стиле Star Wars, осуществлённой за один уик-энд, подпитанной моим СДВГ. Я начал его, чтобы найти способ доказать себе, что могу использовать Houdini для полностью процедурного реквизита, максимально точно соответствуя референсному материалу. Меня полностью вдохновило концепт-арт Адама Бёрна для «Диснеевских Последователей», и я не претендую на авторство цвета, силуэта или дизайна.

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

Блоу-аут
Используя Maya для блоу-аута, я смоделировал внутреннюю ручку и механизм захвата. Всё остальное было сделано в Houdini, чтобы у меня был неразрушающий рабочий процесс.

Поскольку я выделял себе на весь проект только выходные, я хотел сделать несколько быстрых трюков, чтобы не пришлось лепить изношенную кожу. Обмотка кожи — это винтовая схема, и если мы не видим заднюю часть одновременно, то нормально, если мы не можем проследить винт по всей рукоятке, особенно для изношенного реквизита. Это могло бы сэкономить мне время, если бы я просто сделал кучу цилиндров вокруг рукоятки. Чтобы сделать это процедурно, я скопировал трубки в точки на шумной линии, а затем добавил шум с помощью pointVOP к этому продукту. Чтобы сделать UV-развёртку процедурной, я использовал autoseam, flatten, а затем layout из узлов UV Houdini.

Кристалл был сделан относительно таким же образом, с базовой сеткой, а затем с большим количеством шума. На этот раз я добавил забавные логические операции, чтобы вырезать из него куски и добавить разрезы. Я использовал смесь VDB и полигональных рабочих процессов, что позволило мне использовать как объёмные vops для определённого вида шума, так и полигональные логические операции для более структурированного шума кристалла. Я настоятельно рекомендую «Моделирование и рендеринг кварцевого кристалла в Houdini 16» от Entagma на YouTube для получения дополнительных советов.
Лезвие было очень забавным и на удивление лёгким. Разбивка следующая: трубка + анимированный вертикальный шум. Анимируйте длину трубки. Готово! Вся эта часть представляла собой трёхмерный шум в pointVOP, который я немного увеличил по оси y, а затем анимировал смещение.
Камень был самой сложной частью всего процесса. В худшем случае я манипулировал почти 20 миллионами вершин на своём ноутбуке! Процесс был простым:
- Определите базовую сетку.
- Разделите на части и добавьте шум с помощью VDB/pointVOP.
- Превратите в VDB и удалите части, которые не являются частью крупнейшего VDB.
3.1. Вы можете сделать это с помощью узла vdbsegmentbyconnectivity, который группирует каждую часть по связности, затем поместите узел blast и скажите «delete non-selected» и выберите piece 0. - Повторяйте шаги 2 и 3, пока не получите нужное количество шума. Для каждого уровня шума стремитесь к определённой повторяющейся особенности или масштабу в вашем референсе.
- Преобразуйте в полигоны!
Теперь, когда у меня был красивый камень, мне нужна была острая вырезанная часть с каждой стороны. Boolean пришёл на помощь!

Ретушь топологии и развёртывание
У меня было два выхода из полигонального преобразования: один для высокополигональной сетки и один для низкополигональной сетки. Я запек карту смещения с помощью текстуры выпечки в моём выходном контексте для низкополигональной сетки, и с тех пор не открывал высокополигональную. С низкополигональной сеткой я смог сократить количество вершин с 11 миллионов до 300 тысяч. Вероятно, я мог бы сделать меньше, но на этом этапе я был доволен временем рендеринга.
Для UV-развёртки я хотел максимально использовать процедурный подход и для большинства задач использовал Houdini. Поскольку некоторые части формировались естественным образом, я смог использовать следующий порядок узлов с минимальными настройками: UV autoseam, UV flatten и UV layout. Я не так часто занимался UV-развёрткой в Houdini, поэтому обязательно перепроверьте другие ресурсы.
Текстурирование
Я использовал Solaris для рендеринга всего проекта, что означало изучение работы MaterialX в конструкторе шейдеров Karma вместо Arnold, к которому я привык.
Камень снова был самой сложной частью. Шейдер оказался не самым сложным, но за те выходные, что я работал над этим проектом, я потерял из-за него сон! Изначально я планировал использовать Karma для возможности XPU, рендеринг одновременно на CPU и GPU. Однако я использовал узел Curvature для любой процедурной текстуры камня, а этот узел ещё не доступен на XPU. Так что получается Karma CPU! Шейдер имеет множество различных настроек кривизны для применения шума, создающего шероховатость и цвет плоских частей, краёв и внутренних частей. Если бы у меня было больше времени, я хотел бы добавить на плоские стороны следы инструментов, чтобы показать, что они были вырезаны, как на резном мраморе. Houdini выпустила отличную серию процедурных камней, и я смог использовать там много техник, даже с набором инструментов Karma.

Процедурная подповерхность для «плавящегося камня» была хорошим упражнением. Я использовал узел mtlxposition и разделил его на три числа с плавающей запятой для x и z. Используя remaps после этого, я установил, где камень должен начать светиться, и анимировал эти значения до того места, где я хотел, чтобы он перестал светиться. Использование ramps здесь также позволило мне плавно затухать свечение, а не резко включать/выключать. Я умножил эти значения на 3D-шум для некоторой вариации визуальной плотности камня и на этом остановился.

Обёртка рукояти была ещё одной веской причиной использовать CPU для узла Curvature в Karma, поскольку это позволило мне снова положить грязь во все складки. Я сгенерировал клеточное смещение, которое использовалось для высоты, кривизны для грязи, а также шероховатости. Это было почти идеально для стиля, к которому я уже стремился, но я также добавил полосатый шум, придав больше вариативности цвета.
Освещение и рендеринг
Мне нравится рисовать акрилом, и этот шаг в процессе разработки внешнего вида удовлетворяет эту мою потребность. Я могу взять кисть и выделить или добавить цвет/тень в любые области, чтобы они соответствовали референсу, как при рисовании.
Я использовал освещение в качестве упражнения, чтобы увидеть, насколько хорошо я могу соответствовать заданному стилю или референсу. Я использовал общее заполнение сверху реквизита, затухающее к передней части, и отражённый свет снизу с более холодным тоном, чтобы определить форму профиля цилиндра. Чтобы получить детали на металле и отражающих поверхностях, я использовал HDRI, найденный на PolyHaven. Я использовал простой паркинг без ярких огней — что-то, что заполнило бы металлические поверхности. Я добавил небольшие блики в механизм захвата, где кристалл немного выступает, так как эта область получилась слишком тёмной. Я также хотел добиться красивого эффекта излучающего кристалла, поэтому помимо точечных источников света в кристалле я добавил прямоугольные источники света вдоль внутренних стен камня, идущие вверх. Последним важным источником света был небольшой блик для D-образного кольца в конце. В Karma, чтобы заставить лезвие излучать, я использовал узел rendergeometrysettings и установил для него значение «light» как «treat as light source».
Чтобы кристалл полностью отображался, мне пришлось поднять пределы преломления и отражения очень высоко, до 20 для некоторых кадров, но я смог вернуть это значение в норму, когда лезвие закрыло кристалл.
Я выполнил некоторую постобработку в Nuke, в основном аберрацию объектива, виньетирование и немного градаций и зерна.
Заключение
Основная задача при создании привлекательных реквизитов — делать то, чего раньше никто не делал. Искать учебные пособия в интернете и смешивать их — это нормально, но когда вы начинаете заходить на неизведанную территорию, вы это поймёте! Именно здесь мне больше всего нравится работать, даже если это сложно.
Для новичков лучший совет, который я могу дать, — всегда иметь под рукой справочный материал. Распечатайте его и наклейте на монитор! Но что ещё более важно, задавайте вопросы. Обратитесь к друзьям в отрасли или к профессорам, которые могут вам помочь, чтобы вытащить вас из грязи. Вот откуда я черпал информацию.
Уаятт Кларк, специалист по VFX
Автор: Wyatt Clark
Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.