Литейная Ядерная Бомба. Введение



Литейная ядерная бомба.
</p><p>
 Введение

высокое разрешение - нажмите на него И снова здравствуйте, Хабр! В этом посте я хотел бы рассказать об замечательной программе под названием Ядерное оружие от компании Литейный завод , о котором уже говорилось здесь, в этом посте , но вызвало множество вопросов у читателей, далеких от 3D-графики вообще и 3D-композитинга в частности.

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

Что могу сказать — «Аватар», «Трон: Наследие», «Трансформеры», «Хранители», «Властелин колец» и большинство других голливудских блокбастеров были сняты на Nuke. Я познакомился с ней года три назад и сразу влюбился: это одна из самых гениальных программ, которые я когда-либо видел — как с точки зрения используемых подходов, так и с точки зрения удобства использования.

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

В процессе написания поста я понял, что все, что хотелось бы описать, просто не влезет ни в один пост или серию статей.

Хоть пост и получился длинным, но это верхушка айсберга — он описывает чуть меньше 0,01% всего, чем я хочу поделиться.

Интересный? Добро пожаловать коту! Осторожно! Много трафика, Джобсы, чайники и укушенные НЛО.

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

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

Небольшая заметка номер два.

: Я получил карму (спасибо!) и перенес ее в наиболее подходящий блог.

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

Хотя это имеет огромное значение в 3D-графике, и без него все было бы иначе.

Что это? Начнем издалека.

Давным-давно, во времена первых семи максов, засилья разверточного рендеринга и моего детства, на выходе 3D пакета (скажем, 3ds max) мы получали финальную картинку/серию картинок, которая выглядела круто тогда, а сейчас ничего, Ничего кроме улыбки они не вызывают. Крупные студии (ILM, Weta, Pixar, DreamWorks, Digital Domain, Blur и так далее) с еще более древних времен используют «разделение труда», называемое конвейером: одни делают модели и геометрию, другие рисуют текстуры, третьи анимируют. , кто-то занимается рендерингом, кто-то занимается композицией, пост-эффектами и постобработкой, кто-то занимается продажами, а третьи получают кассовые сборы от кинотеатров.

Нас интересует именно часть конвейера от рендеринга до постобработки, а именно: композитинг, постэффекты и постобработка, которые в совокупности называются VFX. Цель всего этого — как можно лучше интегрировать 3D-объекты в 2D-изображения камеры (см.

Джобс с чайником), создав иллюзию того, что объект был там, или скомпоновать воедино несколько разных 3D-сцен (или даже одну), наконец , придать всему законченный вид - такой, какой увидит зритель (например, в кинотеатре).

Техническая составляющая данного подхода основана на следующем принципе: После расчета сцены 3D-пакет выдает не финальное изображение, а «суповый набор» из «полуфабрикатов», называемых пассами, — ряда составных частей изображения в виде отдельных изображений: цвета объектов, блики, отражения/преломления, освещение, тени, окружающая окклюзия , глубина, всевозможные маски и даже проходы данных (о них чуть позже), где цвет пикселя кодирует какое-то значение (например, положение этого пикселя в мировых координатах, или направление и скорость движения) .

За что? Ну и зачем, спросите вы, возиться с пропусками, если можно сразу получить готовое изображение в формате jpeg? И потом, гибкость этого подхода и его возможности поражают: вам не нужно каждый раз пересчитывать сцену с нуля, занимая часы, а то и дни, если вы хотите что-то исправить — это можно сделать в реальном времени, просто настроив нужный проход — как в Фотошопе, с той лишь разницей, что Фотошопу и не снилось 99% возможностей и мощи Нюка, что я продемонстрирую на примере фотошопа с Джобсом.

Основные принципы Nuke



1. HDR и 32-битный цвет.

В отличие от Фотошопа, где 32-битка поддерживается криво и не может нормально использоваться, Нюк — это полностью 32-битное линейное пространство.

Это означает, что вместо традиционных целых 8 бит на канал (True Color — 24 бита в сумме трех каналов), nuke использует 32 бита в формате с плавающей запятой (обычный C float) для каждого канала, что позволяет пикселям принимать любые значения.

значения, включенные в диапазон, поддерживаемый типом данных float, включая отрицательные.

Посмотрите — все цвета, которые вы видите на экране монитора, в плавающем представлении лежат в диапазоне от 0 до 1, но ничто не мешает цвету пикселя иметь запредельные значения, например такие:

Литейная ядерная бомба.
</p><p>
 Введение

На этом скриншоте цвет синей полосы в центре имеет красную и зеленую составляющие около минус шести тысяч, а синюю — вообще около пяти миллиардов.

Зачем нам нужен такой широкий диапазон цветов? Хороший вопрос, я отвечу.

Они нужны для того, чтобы вы могли иметь в одном цветовом пространстве как сверхглубокие тени «чернее черного», так и сверхяркие блики «белее белого» и свободно ими оперировать без потерь и ошибок округления (это важно): изменить экспозиция, сдвиг, гамма, выполнять с ними различные математические операции и так далее.

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

Существует множество форматов файлов для хранения изображений с расширенным динамическим диапазоном, но наиболее часто используется exr, который стал де-факто отраслевым стандартом благодаря своей гибкости: в одном файле можно хранить неограниченное количество проходов в любом цветовом формате (хотя он может достигать весьма внушительных размеров - в среднем у меня получается от гигабайта на изображение 4000х5000).

Подводя итог, можно сказать, что с цветовой точки зрения конвейер выглядит следующим образом: 1) Получать все проходы из 3D пакета в формате exr и в 32bit float на канал, весом в несколько (десятков, сотен) гигабайт. 2) Заливаем их на Нюк, делаем там всю цветокоррекцию, добавляем все эффекты и т.д. и на выходе получаем конечный jpg (avi в случае с видео) по 8 бит на канал и весом в несколько мегабайт. Также стоит отметить, что 8-битные изображения (sRGB), загруженные в nuke, подлежат реверсу.

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

Но 32-битные изображения сами по себе линейны — они не изменяются.

Зачем нужна линейность? Для того, чтобы математические операции (даже банальное наложение двух изображений) основывались на определенные формулы ) имел предсказуемый, однородный характер.



2. Процедурный неразрушающий древовидный подход

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

Это действие: загрузить изображение, наложить несколько изображений, размыть, смешать с другим и так далее: как душе угодно — выбор огромен.

Каждый узел имеет большое количество настроек, и они соединены друг с другом рёбрами ориентированного графа, называемыми трубами.

Все это продемонстрирую на простом, но совершенно надуманном примере (вектор НЛО я нарисовал в nuke отсюда , когда я создавал Джобса, а затем сохранял его в формате JPEG, чтобы упростить этот пример): 1) Наложение двух изображений в режиме умножения (многие режимы наложения точно такие же, как в Фотошопе):

Литейная ядерная бомба.
</p><p>
 Введение



Литейная ядерная бомба.
</p><p>
 Введение

2) Вкусим НЛО на манер Apple - сделаем кружок в векторе и вычтем НЛО из нашей хабры.



Литейная ядерная бомба.
</p><p>
 Введение



Литейная ядерная бомба.
</p><p>
 Введение



Литейная ядерная бомба.
</p><p>
 Введение

3) В отдельной ветке дерева скопируйте синий канал из хабрального на все остальные, получив монохромное изображение - интенсивность синего канала была около 0,4, поэтому логотип стал серым, понизьте серый до черного, чтобы возьмите черный логотип и размойте его (размытие).



Литейная ядерная бомба.
</p><p>
 Введение



Литейная ядерная бомба.
</p><p>
 Введение

4) Применим к нашему НЛО размытый черный логотип в режиме умножения, объединив обе ветви дерева, и выведем результат в файл.



Литейная ядерная бомба.
</p><p>
 Введение



Литейная ядерная бомба.
</p><p>
 Введение

Зачем я все это показал? И для того, чтобы продемонстрировать силу дерева.



Если сильно упростить: допустим, вам нужно применить два слоя, а затем размыть их.

Чтобы реализовать это в Photoshop, у нас есть два варианта: 1) Мы объединим/свернём их, тем самым безвозвратно потеряв оба, а затем размоем через фильтры.

А что, если потом что-то не понравится и нужно будет это изменить? Начните с самого начала.

2) Дублируем их и делаем невидимыми, а затем повторяем пункт 1. Хорошо, теперь у нас есть резервные копии исходных слоев, и мы можем изменить их при необходимости.

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

Что, если мы забудем? Сделайте это снова! Единственный выход — либо делать для каждого своего действия отдельное действие (извращение), либо называть каждый слой так, чтобы он отражал его историю.

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

У меня есть несколько PSD трехлетней давности с несколькими тысячами активных слоев, и я не хочу их открывать, не говоря уже о редактировании.



Литейная ядерная бомба.
</p><p>
 Введение

Поскольку nuke оперирует действиями (процедурный подход), то таких проблем, как описано выше, для Фотошопа просто нет в принципе.

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

Кстати, если сделать цепочку из Merge в nuke, то это будет абсолютный эквивалент слоев.



Литейная ядерная бомба.
</p><p>
 Введение

Кстати, нук-скрипты весят совсем немного - самый большой скрипт, который я сделал, весил около 500кб, и при этом он был огромным.

В качестве другого примера давайте посмотрим на фотошоп с Джобсом.

У меня это заняло часа три, но вот скриншот дерева:

Литейная ядерная бомба.
</p><p>
 Введение

Сначала я выбрал вот это фото из Google (увеличение по клику):

Литейная ядерная бомба.
</p><p>
 Введение

Почему я выбрал именно этот образ? Потому что он идеально подходит для демонстрации многих вещей, не имеющих аналогов в Фотошопе, плюс есть отражение лица на экране Макбука — оно нам понадобится в дальнейшем.

Потом я сделал простую сцену в 3ds max, где на примитив чайника поместил логотип хабра из шапки сайта, дешево осветил его одним исходником и накинул на окружение HDRI-карту, чтобы были всякие разные отражения на чайник.

Также я сделал на глаз несколько цилиндров, которые не видны камере, но затеняют чайник в проходе с помощью Ambient occlusion, чтобы имитировать контактные тени от пальцев.



Литейная ядерная бомба.
</p><p>
 Введение

После расчета я получил 32-битный экср со всеми проходами, плюс отдельный экср с Ambient occlusion, так как я рассчитывал его отдельно.

Вот они все: 1) Комбинированное изображение, которое показывается в окне рендера и которое многие используют как финальное изображение, если не используют композитинг (см.

самое начало поста).

Его еще называют перевалом Красоты.

Но это не для нас – нам этого мало, поэтому идем дальше.



Литейная ядерная бомба.
</p><p>
 Введение

2) Проходы, составляющие картинку выше: Диффузный проход — плоские текстуры предметов и их цвет

Литейная ядерная бомба.
</p><p>
 Введение

Световой проход - тени и освещение.

Вообще все эти вещи делаются отдельными проходами, но в данном случае я вынес их в один — для простоты.



Литейная ядерная бомба.
</p><p>
 Введение

Проход отражения - все отражения, которые есть в сцене

Литейная ядерная бомба.
</p><p>
 Введение

Зеркальный проход - блики от источников света

Литейная ядерная бомба.
</p><p>
 Введение

Проход Ambient Occlusion

Литейная ядерная бомба.
</p><p>
 Введение

Так как позже выяснилось, что штриховка от цилиндров не соответствовала расположению пальцев, я перерисовал эту штриховку вручную в nuke:

Литейная ядерная бомба.
</p><p>
 Введение

Мы получим пропуск красоты от этих компонентов по следующей формуле: Красота = Рассеянное * Освещение + Зеркальное + Отражение Рассеянное * Освещение:

Литейная ядерная бомба.
</p><p>
 Введение

Диффузное * Освещение + Зеркальное отражение:

Литейная ядерная бомба.
</p><p>
 Введение

Diffuse*Lighting+Specular+Reflection (в проход отражения добавлено отражение от монитора MacBook — об этом я расскажу ниже):

Литейная ядерная бомба.
</p><p>
 Введение

Теперь нам нужно добавить контактные тени от AO — умножив полученную Beauty на Ambient Occlusion:

Литейная ядерная бомба.
</p><p>
 Введение

Обратите внимание: вокруг ручки добавлены тени, что добавляет реализма.

Делаем цветокоррекцию, чтобы цвета чайника были максимально приближены к цветам исходной фотографии (но без 32-битного цвета это практически невозможно — будет слишком много потерь и округлений):

Литейная ядерная бомба.
</p><p>
 Введение

3) Z-проход глубины — глубина изображения.

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

Чем ярче пиксель, тем ближе он к зрителю.

Используется для таких эффектов, как «Глубина резкости», «Расфокусировка», «Боке/Свертка» и т. д. Также полезно для наложения двух изображений на основе глубины, если они оба имеют проход глубины в одном и том же пространстве.



Литейная ядерная бомба.
</p><p>
 Введение

Теперь вам нужно размыть глубину, чтобы она соответствовала исходной фотографии (посмотрите на MacBook – она далеко не резкая).

Выходные данные калибровки эффекта глубины резкости:

Литейная ядерная бомба.
</p><p>
 Введение

Зеленый — в фокусе, красный — ближе к камере и размыт, синий — дальше от камеры и размыт. Результат глубины резкости:

Литейная ядерная бомба.
</p><p>
 Введение

Зернистость добавляем на глаз – чтобы она как можно лучше совпадала с зернистостью на фотографии.

В Нюке есть инструменты для объединения зерен (анализируется зерно из оригинала и генерируется подобное), но я их не использовал ради простоты примера.



Литейная ядерная бомба.
</p><p>
 Введение

4) В отдельную ветку дерева берем отражение Джобса от Макбука:

Литейная ядерная бомба.
</p><p>
 Введение

Далее мы трансформируем его, делаем цветокоррекцию и применяем к проходу «Отражение»:

Литейная ядерная бомба.
</p><p>
 Введение



Литейная ядерная бомба.
</p><p>
 Введение

Результат вы уже видели выше.

Поскольку это происходит в виде дерева, то приходится ломать повествование вот так – что поделаешь? 5) Используя другую ветку дерева, ретушируем Макбук и фон (аналогично штампу-клону в Фотошопе):

Литейная ядерная бомба.
</p><p>
 Введение

Затем делаем маску для наложения НЛО на фон методами манипуляция (да, зеленые фоны в Аватаре заменили на Пандору с помощью Nuke):

Литейная ядерная бомба.
</p><p>
 Введение

6) Размойте укушенный НЛО, примените к нему зернистость и добавьте на фон.



Литейная ядерная бомба.
</p><p>
 Введение

7) В векторе рисуем маску пальцев, которые будут выступать перед чайником:

Литейная ядерная бомба.
</p><p>
 Введение

Ну и напоследок нанесем чайник с помощью маски.



Вуаля! (Кликабельно)



Литейная ядерная бомба.
</p><p>
 Введение

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

Теги: #Nuke #the Foundry Nuke #композитинг #3d #3d графика #passes #pass #passes #32 bit float #exr #nodebased #TREE #wood #обработка изображений

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.