Пакетная обработка фотографий в Blender

Свободно-распространяемый 3D-редактор Blender обладает потрясающими возможностями по созданию трехмерной графики, но это далеко не все, что он умеет делать. В данном туториале я хочу показать как с помощью этой замечательной программы делать быструю и качественную пакетную обработку фотографий для последующего использования их в создании анимации вращения (облет объекта, демонстрация со всех сторон, фото-360).
В данном уроке мы не станем углубляться в детальные настройки и будем использовать предварительно созданный шаблон. Никаких специальных знаний потребоваться не должно, будет достаточно небольшого опыта в обработке изображений.
Уже долгое время я участвую в различных проектах, так или иначе связанных с трехмерной графикой и визуализацией. Приходилось руководить студией, строить рендер-фермы, проектировать и воплощать «в железе» специальное оборудование для 3D-фото и 3D-сканирования.
Одним из проектов был веб-сервис, предоставляющий возможность интерактивной демонстрации товаров для интернет-магазинов. Наши попытки использовать для этого «настоящее» полигональное 3D разбились о стоимость масштабирования такого подхода, о проблемы с поддержкой необходимых технологий браузерами и «искусственность» конечного результата. Победителем оказался гораздо более простой метод: фотографии предметов с разных ракурсов сшивались в анимацию вращения и все это управлялось специальным плеером. Думаю многие видели подобные штуки.
Однако, получить стопку фотографий — далеко не достаточно, изображения нужно соответствующим образом подготовить к публикации: сделать цветокоррекцию, убрать лишнее, выровнять, откадрировать и т. д. И такой работы может быть очень много.
Ранее нашей командой уже создавались подобные уроки, тогда мы использовали иные инструменты:
Adobe Camera Raw:
Что умеет делать шаблон:
- Делает фон вокруг объекта абсолютно белым
- Добавляет логотип
- Дает возможность сделать качественную цветокоррекцию
- Оптимизирует секвенцию для быстрой загрузки из интернета
- Изменения цветов в отдельных элементах
Преимущества использования Blender:
- Бесплатный
- Кроссплатформенный
- Работает в Linux (Масштабируя ваш бизнес вам не придется тратить деньги на операционные системы и программы для обработки фотографий)
- Полноценная работа с видео
- Есть возможность пакетной оптимизации изображений перед публикацией
- Поддерживает GPU — для ускорения обработки
- Занимает мало дискового пространства, в отличии от его платных конкурентов
Оптимизируйте свой процесс обработки
Для однотипных объектов настройка параметров обработки делается один раз и после этого можно просто их открывать в одной сцене, запускать процесс рендеринга. Таким образом можно сохранить несколько шаблонов, которые будут обрабатывать свой тип объектов.
В качестве тестовой секвенции я взял белый кед, который сфотографирован на белом фоне.

Схема освещения создана с помощью четырех настольных диодных ламп из популярного мебельного магазина.
Результат обработки в виде GIF анимации
Полноразмерную секвенцию можно посмотреть на Google Drive
ШАГ 1 — Установите Blender
а) Откройте подготовленную сцену как это продемонстрировано в видео.
б) Импортируйте подготовленную секвенцию с исходниками в нашу сцену.
в) Укажите нужное количество кадров, в нашей секвенции их 100.
г) Для отображения текущего кадра нажмите кнопку на клавиатуре F12 или, в интерфейсе программы, кнопку Render
- Для передвижения холста нажмите на скролл мышки
- Для масштабирования холста вращайте скролл мышки
- В процессе импорта секвенции, для выбора всех файлов, нажмите на клавиатуре кнопку «A»
ШАГ 2 — Наложение и позиционирование вашего логотипа
Для тренировки можете использовать логотип из шаблона (Open Source проект) или сразу использовать свой.
Логотип можно использовать в формате png c прозрачностью.
ШАГ 3 — Редактирование маски для осветления краев кадра
Это градиентная маска, от черной к зеленой кривой идет плавный переход от прозрачного к белому цвету. Двигайте, редактируйте черную кривую и зеленая будет параллельно повторять ваши изменения. Чтобы изменить плавность перехода градиента, измените расстояние между черной и зеленой линией.
Моделирование помещения по фотографии в Blender
Введение.
В этом уроке мы рассмотрим моделирование сцены на примере фотографии, найденной в Интернете. Источниками вдохновения могут послужить обзоры архитектуры на различных веб-сайтах или блогах. Там вы можете найти сотни интересных проектов, и очень часто авторы публикуют фотографии интерьера и планы здания. Проект, который я решил воссоздать в 3D, называется «Дом Брекелена» и был разработан Zecc и BYTR Architects.

Довольно свежий, минималистский интерьер, на примере которого будем практиковать наши навыки в графическом редакторе Blender.
Шаг 1 . Перспективные линии.
Чтобы соответствовать перспективе в Blender, нам для начала нужно создать несколько ведущих линий в 2D. Я буду использовать Photoshop, но это также можно сделать и в Gimp. Мы начинаем создавать»линию горизонта», определяющую высоту, на которой была камера в момент создания фотографии. Чтобы найти эту линию, необходимо, глядя на фото, найти все горизонтальные линии (оконные проемы и дверные косяки, например), идущие параллельно верхнему и нижнему краям фотографии.

Линия параллельна как нижнему, так и верхнему краю фотографии, а также такому элементу, как оконные рамы слева.
Теперь продлеваем линии пола, стен и края потолка таким образом, чтобы они пересекли линию горизонта. Они обязательно должны встретиться в одной или двух точках. Также можно продлить линии других элементов, таких как столы, двери и окна. Используйте различные цвета, это поможет Вам не потеряться среди всех линий при работе позже в Blender.
Зеленые линии от пола и потолка, розовые от стен и голубые линии в качестве дополнительных от стола.
Шаг 2. Импортирование линий для работы в Blender.
Выравнивание камеры
Вид спереди и самые основные настройки рендеринга

Настройки фона
Пошаговая инструкция:
Создайте новую сцену и на панели 3D view нажмите клавишу N. В появившейся панели вы найдете панель Background Images. Включите галочку, нажмите кнопку Add Image, а потом кнопку Open чтобы добавить фоновое изображение. Для параметра Axis выберите значение Camera.
Далее, установите 3D-вид Front Ortho(Чис.1 по умолчанию) и добавьте камеру, нажав Shift + A. Перейдите к параметрам Render options и измените разрешение камеры на точно такое же, как на картинке, которую мы импортировали в фоновом режиме. В нашем случае, если вы загрузили картинку из этого урока, разрешение будет: 960 х 638.
Шаг 3. Расположение камеры.
Сейчас начинается самое трудное. Обычно, при сопоставлении 3D-камеры к фотографии, вы можете просмотреть все необходимые исходящие данные в графическом файле, который записывает данные автоматически. Эти данные включают в себя всю информацию о модели камеры, объектива, выдержки и т.д. К сожалению, в нашем примере нам придется сделать все вручную.
Попробуйте переместить камеру немного назад и вверх от центра сцены. Создайте куб, уменьшите его и приблизительно проверьте, как он соответствует нашим параметрам настройки камеры по умолчанию. Попытайтесь редактировать куб таким образом, чтобы его левая и правая грани были примерно выровнены до уровня зеленых линий пола фоновой картинки. Скопируйте объект и переместите его вверх, пытаясь соотнести с линиями потолка.

Пока что картинка вида не имеет, но мы ведь только начали.
Как видите, перспектива камеры выглядит несколько иначе, чем на нашей фоновой картинке. Нажмите точку на клавиатуре и 3D курсором по центру сцены (Shift + с), выбрав камеру, попробуйте вращать немного вправо. Подгоните свои измененные кубы таким образом, чтобы они максимально выровнялись с фоном.

Медленно приближаемся к главным линиям перспективы.
Шаг 4. Параметры объектива фотокамеры.
Как вы наверняка заметили, не получится добиться хорошего результата только вращая камеру и меняя ее положение. Теперь нам необходимо отредактировать центр объектива и найти значение, которое подошло бы лучше всего в нашем примере. Я лично рекомендовал бы придерживаться стандартных значений объектива: 80, 50, 32, 28 или 24, поскольку это дает нам намного большую вероятность нахождения правильного.

Значение объектива 24 будет наилучшим вариантом в данном примере.
Во время работы со сценой, я столкнулся с еще одной проблемой. Не смотря на то, что преобразование нашей картинки в 3Д становится более четким, я забыл сказать об одной важной вещи. Очень часто для редактирования перспективы фотографы используют Фотошоп. Это только усложняет нам работу, поскольку мы фактически не знаем, как выглядел оригинальный вариант. Однако, в Blender есть все инструменты, чтобы решить эту проблему. Выберите вашу камеру и под параметром Focal Lens вы найдете значения для параметра Shift. Это позволит нам снять как горизонтальное, так и вертикальное искажение.

Я использовал значение 0.100 для Х, а затем я слегка сдвинул свою камеру вправо (на этот раз сдвиг без использования 3D курсора).
Шаг 5. Бесчисленные попытки.
Используя нужные инструменты, которыми оснащен Blender, мы можем попробовать различные варианты значения/положения/вращения камеры. Правда, это легче сказать, чем сделать, т.к. даже я потратил на это более получаса, чтобы добится удовлетворительного результата. Имейте ввиду, возможно вам придется добавить несколько кубов, чтобы добиться лучшего ракурса вашей камеры. В конечном итоге я использовал следующие параметры настройки для объектива фотокамеры:
Фокусное Расстояние: 24, Сдвиг Х: -0.130, Сдвиг По Y: 0.080




Как видите, я не только установил куб вместо стола, но и вырезал окна и дверные проемы, что позволит мне улучшить перспективу.
Важное замечание
Помните, вы не должны соотнести изображение со 100% точностью, это всего лишь фотография. Незначительные погрешности будут всегда, ведь самое важное-это конечный результат!
Итог.
Процесс сопоставления 3Д камеры к фотографии не самая легкая тема, но я уверен, что у вас все получится.
Создаем 3D-модель из акварельной картины

Небольшое руководство о том, как конвертировать портретную картину или рисунок в 3D-модель с небольшим текстурированием и правильной разверткой. Для этого я использую платформу Blender, но вы можете попробовать любые другие программы. В качестве основы, я взял этот рисунок. Вы можете посмотреть данную модель на моем аккаунте Sketchfab:
Вчера я наткнулся на фантастическое выступление монтажера Йена Хьюберта «Построение мира в Blender». В своем докладе он рассказывает о том, как он использует проекционный маппинг в визуальных эффектах. Мне стало интересно, смогу ли я сделать то же самое с рисунками и портретами, чтобы создать 3D-модель, напоминающую ручную работу.
Я очень доволен своим результатом. Если вы внимательно осмотрите модель, вы заметите все типичные артефакты проекционного маппинга. Весь рабочий процесс занял меньше часа, поэтому я бы хотел поделиться с вами одним трюком. Конечно же, вы можете пойти и исправить эти артефакты или же преобразовать их с помощью других средств, о которых я расскажу в конце статьи.
Кроме того, этот метод поможет вам создать proxy-геометрию для повторного освещения вашей картины. Когда камера находится в ортогональном состоянии, а огни перемещаются вокруг модели — это выглядит очень круто.


Если у вас есть хорошая модель головы, готовая к риггингу, тогда вы легко сможете анимировать свой рисунок.
Но давайте выполнять работу постепенно.
Шаг 1: Найдите изображение
Для начала найдите подходящий портрет. Мой выбор остановился на этом.

Шаг 2: Создайте proxy-геометрию
Импортируйте изображение в формате ссылки в Blender, смоделируйте или слепите proxy-геометрию, которая послужит основой для проецирования текстуры. Необязательно, чтобы она была на 100% точной, если вы хотите сохранить модель неосвещенной, так как текстура картины скрывает топологию под ней. В качестве альтернативы, используйте изображение головы с хорошей топологией и деформируйте его до тех пор, пока силуэт не будет соответствовать картине. В шаге развертки вы сможете исправить все недочеты.


Шаг 3: Развертка для проектирования
Нажмите 1, чтобы переключиться на вид спереди (или, если ваше изображение и модель ориентируются по-разному, нажмите 5, чтобы переключиться на ортогональный вид, а после перейдите к той области, в которой находится ваша модель). Зайдите в режим редактирования и в выпадающем меню выберите пункт «Project from view». Затем откройте UV-редактор и начните масштабировать и преобразовывать большие острова до тех пор, пока они не совпадут с исходным изображением.


Если на этой стадии у вашего силуэта есть небольшие отклонения от рисунка, то возьмите эти вершины в UV-редакторе и передвигайте их с помощью мягкого выделения пока все полностью не выровняется.
Шаг 4: Настройка материала
Теперь приступим к созданию материала для объекта или объектов. Добавьте узел текстуры и изображения и подключите его к секции поверхности выпуска вашего материала. Это сработает, как неосвященный шейдер, который показывает случаи имеющегося переднего изображения. На этом этапе у вас получится что-то по типу этого:


Уже довольно неплохо для 30 минут работы. Из которых 25 минут ушло на моделирование волос. Если бы это был лысый человек, то процесс занял бы не более 5 минут. Сейчас пришло время приступить к настройке сетки, чтобы вы смогли исправить артефакты проекции.
Как исправить артефакты?
Для начала вам необходимо перейти к области размытия с помощью инструмента клонирования или кисти. Проблема с данной настройкой и разверткой может быть связана с тем, что несколько островов могут разделять одно и то же пространство. Развертка происходит через проецирование лиц на плоскости камеры в передней стороне. Поэтому любое лицо, находящееся на одной оси в линии направления камеры (все, что перекрывается с точки зрения камеры), будет иметь такое же пространство. Таким образом, лицо проецируется на заднюю часть волос:

Если бы мы использовали текущую развертку для рисования текстур, все то, что мы рисовали бы на задней стороны головы, отразилось бы и на лице. Это связано с тем, что эти треугольники разделяют одно и то же UV-пространство, где сохранена текстура.
То, что нам нужно — это UV, где у каждого лица есть свое уникальное пространство. Однако нам бы хотелось использовать результаты проекционного маппинга в качестве основы. Решение состоит в том, чтобы сохранить эти результаты в новом UV и использовать их для фиксации текстуры. Итак, ниже представлено поэтапное руководство по этому процессу.
Шаг 1: Создайте копию объекта
Перед началом работы я продублировал объект, так как хотел переделать и удалить сетку. Пересекающаяся геометрия изменяется на замкнутую поверхность, и мы не тратим время на рендеринг треугольников, которые полностью прикрыты. Для предварительного просмотра здесь я помещаю оригинал и дубликат рядом, но в вашем случае они должны идеально перекрываться, поэтому не передвигайте дубликат.

Шаг 2: Создайте уникальную развертку
В режиме редактирования выберите все вершины и в выпадающем меню разверните проект smart UV. Таким образом, у вас сформируется автоматическая развертка. Smart UV не гарантирует, что у лиц появится уникальное пространство. Но, по моему опыту, так всегда происходит, когда дело касается более низкого порога угла, такого как default 66. Если проект smart UV не сможет создать уникальный UV, то вы сможете попробовать развернуть карту освещения в выпадающем меню UV. Этот процесс может занять больше времени, поэтому убедитесь, что у вас низкополигональная сетка.

Шаг 3: Запекание
Как только у вас появится уникальная развертка, избавьтесь от всех материалов в копии. После этого сделайте новую копию и добавьте узел текстуры изображения. Вы сможете создать изображение, в котором будут сохранены ваши результаты запекания. В разделе камеры переключитесь на циклы, перейдите к настройкам запекания, установите тип запекания «Diffuse» и снимите галочку с вкладок «Direct» и «Indirect». Затем подключите опцию «Selected to Active» и настройте небольшое значение экструзии.

Вы почти готовы к запеканию, но сначала убедитесь в том, что исходная сетка, где вы создаете копии, обладает основным BSDF шейдером между выпуском и текстурой, которая помещена в цвете. Blender берет только то, что подключено к главному шейдеру для запекания цветной диффузной карты. Как только это будет сделано, выберите исходную сетку и настройте ее дубликат с уникальной разверткой, нажав CTRL. В материале дублированной сетки убедитесь, что созданный узел текстуры изображения выбран, а затем нажмите на кнопку запекания. У вас появится подходящее UV-пространство и текстура. Вы также сможете их исправить как в самом Blender, так и в Substance painter.9.

Заключение
Настоящая заслуга этого эксперимента заключается в том, что он показывает, как на самом деле просто добиться живописного акварельного образа в сетке. Еще одна вещь, которую стоит попробовать, — это то, что вы можете также нарисовать персонажа акварелью в том же положении сбоку. Затем вы сможете создать еще одну проекцию UV-маппинга с другой стороны и смешать их в Blender. Если вы сделаете это со всех сторон, то вам не понадобится текстурирование. Просто смешайте их с каждой стороны, и вы получите красивую сетку ручного произведения. Я подозреваю, что нарисовать человека акварелью с 3-4 сторон будет гораздо быстрее, чем добиться такого же эффекта в Substance painter или при использовании шейдеров.
Как правильно сделать рендеринг объекта на фото в Blender
Если вы не хотите тратить время на моделирование окружающей среды через приложение Blender, можно в качестве основы для представления смоделированного объекта использовать любое фото. Этот урок научит вас легко и просто провести рендеринг объекта на фоне картинки. Примеры:



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

Выберите картинку и добавьте её в качестве фона.

Выберите расширение рендера так, чтобы оно соответствовало по ширине и высоте подобранной картинки.

Подберите оптимальный угол расположения камеры, а также фокусное расстояние по картинке. Данные по последнему пункту можно отыскать в свойствах графического объекта.

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

Включите в сцену плоскость, используемую в роли основы. Именно на неё попадет тень от сформированного объекта.

Сформируйте материал для плоскости и обеспечьте её подходящим цветом.

Поместите плоскость и светильники на следующий слой при зафиксированной кнопке Shift. Она позаботится о том, чтобы объекты отобразились сразу на двух слоях.

Сформируйте дополнительный слой рендера, назовите его ground и выберите параметры, как по графической инструкции ниже.

Остановите выбор на модели и примените к ней значение Pass Index=1.

Потом перейдите к плоскости и задайте Pass Index=2:

Перейдите к первому слою, а потом выберите функцию Object Index и включите её.

Проведите рендеринг картинки, а потом обратитесь к редактору нодов.

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

Свяжите слои рендера с использованием нода Mix, а потом присвойте ему вид Divide.

Дальше готовую работу необходимо связать с фото-основой на основе нода Mix и присвоить ей вид Multiply.

Дополните работу нодом ID Mask, установите Index=2, а потом включите его, следуя графической инструкции ниже.

Вставьте на рабочую сцену дополнительный нод ID Mask, переведите Index=1, а потом включите его, как на следующей картинке:

Затем смешайте все отдельные элементы на основе нода Mix и получите похожий результат.