Создаем 3D-модель из акварельной картины

Небольшое руководство о том, как конвертировать портретную картину или рисунок в 3D-модель с небольшим текстурированием и правильной разверткой. Для этого я использую платформу Blender, но вы можете попробовать любые другие программы. В качестве основы, я взял этот рисунок. Вы можете посмотреть данную модель на моем аккаунте Sketchfab:

https://skfb.ly/6YpLQ

Вчера я наткнулся на фантастическое выступление монтажера Йена Хьюберта «Построение мира в 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 или при использовании шейдеров.

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Shahriar Shahrabi: Making a 3D model out of a watercolor painting

Предыдущая статьяSonarQube: за качество кода отвечаем
Следующая статьяКак сделать приложение с дополненной реальностью, используя React Native