Как создать 3д модель по фотографии
Как создать 3д модель по фотографии
Моделирование по фотографиям
Моделирование по фотографиям
Вступление
Шаг 1. Заготовка фотографий
В качестве примера я возьму моделирование резиновой лягушки.
Сперва надо сделать снимки с разных ракурсов.
Фотографии, естественно, должны быть без дисторсии, с известным эквивалентным фокусным расстоянием (первое можно поправить в фотошопе, второе высчитать экспериментальным путем). Для этого урока я использовал цифровую камеру с фикс-объективом 50мм (для моей камеры экспериментальным путем вычислено ЭФР 88.473мм). Надо сделать снимки с таких ракурсов, чтобы каждая деталь была видна как минимум на двух снимках. Для облегчения юстировки виртуальных камер я поместил объект на отпечатанную на принтере сетку.
У меня получились вот такие фотографии:
Для этих фотографий углы зрения равны 16.78 и 13.41 градусов. Высокая точность определения углов имеет большое значение.
Шаг 2. Подготовка сцены
Шаг 3. Установка камер
Выберем самый «удобный» кадр из референсов. В данном случае это вид справа.
Поставим на сцену Target Camera, укажем соотвутствующий FOV, дадим камере название, перекликающееся с выбранной фотографией.
Добавим также Spot Light, расположенный в той же точке, что и камера, и смотрящий в том же направлении. Зачем? Пригодится при текстурировании, об этом позже. «Привяжем» лампочку к камере и деактивируем.
Перед камерой, на достаточном расстоянии от нее, чтобы не задевать объект, надо создать Plane, присвоить ему мульти-материал и соответствующий подматериал.
Размер Plane вычисляется по формуле:
Для точной доводки можно использовать кнопки управления камерой :
(обратите внимание, что у многих кнопок есть несколько режимов, можно использовать только те, что здесь показаны).
Можно также аккуратно менять координаты и Roll камеры с помощью полей в нижней части рабочего окна.
Процедуру надо повторить для других нескольких камер (в моем случае виды сверху и слева):
Теперь можно проверить юстировку камер, для чего провести линии через некоторые точки модели (я провел через нос и самые выдающиеся пальцы):
Убедившись, что точки совпадают для всех камер, можно начинать моделирование.
Шаг 4. Наконец, моделинг
При моделировании очень удобно ставить режим движения в плоскости экрана Screen:
Также удобно использовать Axis Constraints.
Я предпочитаю работать со сплайнами и модификатором Surface. По мере работы добавляю остающиеся камеры. При работе с полигонами присваиваю им материал с режимом Wire, чтобы не заслонять фон.
Если требуется увеличить изображение, можно скопировать соответствующую камеру и переключиться на нее. Теперь можно менять угол зрения и поворачивать скопированную камеру относительно себя, но нельзя ее двигать. Нельзя изменять параметры исходной камеры! Можно также менять угол зрения исходной камеры. Удобно использовать кнопки:
(обратите внимание, что у многих кнопок есть несколько режимов, можно использовать только те, что здесь показаны).
Шаг 5. Текстуринг
После того, как развертка готова, начинается самое интересное:
Берем лампочку, привязанную к интересующей нас камере, и начинаем настраивать. В настройках Advanced Effects включаем Ambient Only. В настройках Spotlight Parameters указываем тип Rectangle и аспект 1. Ставим галочку Overshot, задаем угол Falloff/Field равный углу зрения камеры. В качестве Projector Map выбираем Bitmap фотографию с оригинальным разрешением и контрастом. Красим объект в 100% белый цвет и включаем лампочку.
Отныне эта лампочка работает как прожектор, накладывающий цвет на объект с учетом перспективы (в отличие от Planar Mapping).
Теперь при помощи рендера убеждаемся, что «текстура» легла куда надо:
Осталось превратить освещение в текстуру: выделяем наш объект и вызываем окно Render To Texture. Там добавляем элемент CompleteMap, ставим желательный нам размер (рекомендую 2048, потом можно ужать), убеждаемся, что выбран режим Use Existing Channel, проверяем, чтобы был указан именно тот канал UVW, в котором хранится наша развертка, и ставим галочку Render To Files Only. Теперь Render. Сохраняем полученную картинку и выключаем лампочку. Повторяем для всех остальных камер. Теперь у нас есть куча текстур.
Открываем их все в фотошопе, сбрасываем в один документ как разные слои и микшируем:
Важные примечания:
— При управлении камерами с помощью кнопок ни в коем случае нельзя ошибаться.
Для настройки исходной камеры можно использовать кнопки: Dolly Camera, Roll Camera, Orbit Camera, Truck Camera.
Для настройки камеры, скопированной с основной для увеличения можно использовать кнопки: Field-of-View, Pan Camera, Roll Camera.
— На изготовленной таким образом текстуре сохранятся блики от вспышки в разных местах.
— При движении точки в одной из камер она движется по нескольким осям в других. Поэтому каждую точку приходится двигать несколько раз, пока она не окажется именно там, где надо.
— Камеры никак не привязаны к вьюпортам, их может быть сколь угодно много, возможно для каждой мелкой детали. В каждом вьюпорте можно включать любую камеру, перспективный или изометрический вид без опасности сбить бэкграунд.
Если будут какие-либо вопросы я с удовольствием отвечу на них.
Создание игровых 3D-моделей «для бедных»: путь инди
Вы когда-нибудь задумывались о том, как работает небольшая инди-студия, занимающаяся разработкой видеоигр?
Создавать игры с очень маленьким бюджетом можно, но для этого необходима смекалка, много труда и ещё больше любви к своему делу.
Мы — небольшая команда из Польши. Нас всего три человека, но полный рабочий день занимаются проектом всего двое.
Сегодня мы расскажем о процессе создания персонажей для нашей игры «The end of the Sun». Имейте в виду, что показанные в статье скриншоты взяты из проекта, который пока находится в разработке.
Этот текст посвящён только статичным элементам персонажей: мы расскажем, как сканировали персонажа и одежду, как создавались дополнительные элементы, а также о том, как мы настроили движок Unity, чтобы получить такие скриншоты:
Но начнём с начала. Прежде чем приступать к работе, мы подготовили список свойств, необходимых нашим персонажам:
В статье мы расскажем только об одном персонаже в молодом и пожилом состоянии, потому что в нашей игре очень важен сюжет и мы не хотим портить удовольствие игрокам.
Итак, составив список, можно приступать к работе над графикой.
1. Фотограмметрия лица и подготовка трёхмерного тела
Актриса в процессе фотограмметрии.
Фотогра… что?
Мы начали со сканирования лица нашей модели с помощью метода фотограмметрии. Это тема для отдельного поста, но немного подробнее о нём можно узнать на нашем youtube-канале.
Обратимся к Википедии:
Фотограмметрия — научно-техническая дисциплина, занимающаяся определением формы, размеров, положения и иных характеристик объектов по их фотоизображениям.
Другими словами: фотограмметрия — это способ восстановления 3D-глубины по нескольким фотографиям (или множеству снимков) для создания трёхмерной виртуальной модели, выглядящей как объект в реальном мире.
В крупной AAA-студии с большим бюджетом для сканированимя персонажа используется множество камер. Они располагаются вокруг актёра и делают кучу снимков примерно в одинаковое время…
… Но что если у нас есть только одна камера?
Да, здесь возникает проблема, и как же мы её решили? Сканы, созданные таким образом, будут хуже, чем при работе со множеством камер, но этого достаточно для нас, чтобы создать базовую форму лица и запечённую высококачественную текстуру. Это «инди-способ» создания фотограмметрии.
Мы сделали множество попыток, поэтому вот советы по созданию снимков только одной камерой:
Актёр или актриса не должны двигаться, пока вы не закончите делать снимки лица. Они не могут даже моргать и дышать. (Съёмка обычно занимает около 10-20 секунд, но этого всё равно сложно добиться)
Нам приходилось очень быстро делать снимки с разных сторон актрисы. Для этого мы использовали режим серии фотографий (burst mode). Иногда возникали проблемы с фокусировкой, но так снимки сделать быстрее всего, чтобы актриса оставалась неподвижной.
Лучше посадить актёра на кресло с подлокотниками, так проще сидеть неподвижно.
Мы делали снимки только с передней части актрисы. На скриншотах можно увидеть фотографии и сзади, но в финальном скане мы их не использовали. В целом для создания скана необходимо всего 8-10 хороших фотографий спереди.
Хорошо также использовать с камерой поляризационный фильтр, потому что он уменьшает засветы на коже, что улучшает форму модели и текстуру.
Для такой схемы используйте не менее четырёх софтбоксов, чтобы улучшить текстуру и снизить объём постобработки.
Используйте как можно более высокую скорость затвора, чтобы избежать размытия в движении, а также как можно меньший размер диафрагмы (я имею в виду f.5 и выше), чтобы получать на фотографиях широкий диапазон фокусировки. Именно для этого нужны как минимум четыре очень мощных софтбокса. Разумеется, ISO должно быть как можно меньше, чтобы избежать шума.
Для анализа фотографий и создания модели мы использовали ПО Photoscan 3D. Вот как выглядит облако точек после обработки фотографий:
Облако точек и визуализация схемы расположения фотографий.
Как видите, здесь есть фотографии сверху и снизу персонажа, но сейчас я могу сказать, что мы не рекомендуем их делать. Гораздо лучше сделать примерно 8-12 хороших фотографий передней части лица (дуги от левого до правого уха). Это даёт намного более качественные результаты для текстуры и модели. Единственный недостаток в том, что шею модели нужно создавать вручную, но это небольшая проблема.
После создания облака точек мы перерабатываем его в трёхмерную высокополигональную модель:
Уже выглядит лучше, правда? Но на 3D-модели видно много шума:
Он возникает по следующим причинам:
— Размытие движения при очень быстром создании снимков
— Микродвижения нашей актрисы (да, даже перемещение лица на 1 миллиметр приводит к подобному шуму)
Большинство из вас наверняка думает, что это выглядит ужасно, и вы правы. Именно поэтому мы сделали ещё несколько шагов.
Теперь можно сделать операцию под названием «ретопология». Это техника создания 3D-модели более простой и оптимальной формы на основе высокополигональной модели.
Вот как это выглядит на практике:
Это делается потому, что показанная выше модель содержит более миллиона треугольников. Обычный компьютер для работы с частотой кадров 30-60 fps способен обрабатывать 5-6 миллионов. (Эта информация даётся просто для общего понимания, на самом деле, на производительность влияет множество других аспектов.) То есть в игре может отображаться всего несколько моделей с таким количеством треугольников.
Ещё один важный аспект ретопологии — это создание гладкой модели лица, готовой к лицевой анимации. Для выполнения ретопологии мы используем ПО Topogun 2.
Вот наша модель лица после ретопологии (мы отполируем её позже, после текстурирования):
Затем мы запекли (в сленге 3D-графики это означает просто подготовку/создание) текстуру лица с помощью наших фотографий, Эта операция выполняется почти автоматически. Именно поэтому мы решили использовать фотограмметрию — модель лица и хорошая текстура делают наш персонаж естественным.
Хм, тут ещё многое предстоит сделать — как видите, в текстуре есть небольшие ошибки. Ещё одна небольшая проблема заключается в отсутствии задней части головы и глаз.
Поэтому следующим этапом будет создание неотсканированных элементов и элементов, которые невозможно отсканировать, например ресниц, волос, глаз. Поэтому давайте узнаем, как это делается. Мы используем ещё один программный пакет под названием Cinema 4D. В этом ПО мы можем создать остальные части модели и усовершенствовать её текстуру.
Отлично, выглядит намного лучше. Прежде чем мы начнём работать над текстурой, необходимо создать тело с костями для анимирования. (Об этом в нашем блоге будет отдельный пост.)
Немного поискав, мы обнаружили отличный способ создания 3D-тел для наших отсканированных лиц. Мы используем для этой задачи бесплатное для коммерческого использования ПО Make human. С помощью этого софта можно создать целое тело, даже с лицом и скелетом. Достаточно просто передвигать ползунки, пока не получишь нужный результат, к тому же у него будет скелет, совместимый с движком Unity 3d.
Поэтому всего за несколько минут мы получили целое тело с отличной топологией и даже весами, готовое к анимированию! (Если вы не понимаете, о чём я говорю, то прочитайте второй пост об анимировании персонажей, который скоро выйдет!) Это очень полезное ПО.
Единственная проблема в том, что нам нужно уничтожить часть модели, отрезав от тела голову (звучит страшновато). Нам нужно это сделать, чтобы заменить её отсканированной моделью.
Самое важное здесь то, что благодаря ПО Make human у нас есть веса на костях, подготовленные к анимированию.
Нам достаточно просто добавить кости лица, чтобы иметь возможность анимирования лицевых эмоций или для синхронизации движений губ с диалогами. Но об этом скоро будет следующий пост в нашем блоге.
На создание правильной системы лицевых костей может уйти целый день (да, я знаю, на лице не кости, а мышцы, но так они называются в 3D-графике).
Разумеется, для создания красивых текстур нужно ещё и много труда. Мы используем Frequency Separation Technique в Photoshop для устранения засветов и ретуши кожи. Так создаётся рабочий процесс, хорошо подходящий для устранения из текстур ненужного освещения (даже когда это отсканированная модель камня, а не человеческого лица). Вам тоже стоит попробовать этот процесс. (В интернете есть множество информации о Frequency Separation.)
Финальная Albedo-текстура выглядит так: (простите, но до выпуска игры мы не хотим выкладывать текстуру большого разрешения)
А вот как выглядит модель с уже наложенной albedo-текстурой.
Теперь мы добавляем зубы, язык и глаза:
Вот как выглядит готовая модель из соединённых вместе отсканированного лица и тела с готовой текстурой (цензура наложена, чтобы можно было делиться картинкой в соцсетях).
Готовый внешний вид 3D-тела и лица.
2. Создание волос головы и ресниц реального времени.
Я написал эту главу, потому что создание волос, работающих и хорошо выглядящих в видеоигре — это довольно широкая тема. Наверно, одни из самых красивых волос вы могли видеть в AAA-играх. Мы — инди, поэтому не можем тратить столько же времени на один аспект наших персонажей, как большие компании.
Поэтому мы создали волосы из полигонов с наложенной на них текстурой с прозрачностью.
Как это работает? Сначала мы моделируем полигоны в форме волос, а затем располагаем их на голове персонажа и перемещаем/распределяем с помощью инструментов 3D-моделирования. (В нашем случае Cinema 4D.) Также можно сделать это в генераторе сплайнов — создать сплайн с динамическим мешем вдоль него, тогда манипулирование волосами упростится.
Итак, все причёски создавались из таких частей:
Волосы без материала выглядят так:
Вот причёска с наложенной готовой текстурой:
А вот как выглядит причёска со скриншотов, которая показана в начале поста.
Как видите, мы можем менять причёски, поэтому нет никаких проблем, например, в добавлении пожилому персонажу причёски молодого.
Разумеется, при создании волос мы используем Photoshop и BodyPaint 3d для отрисовки полос на волосах и элементов разных форм. Вы можете использовать любое другое ПО, но было бы здорово, если бы в нём присутствовал режим просмотра альфа-прозрачности в реальном времени. Тогда вы точно будете видеть, что делаете (а не только серые полосы на голове персонажа).
Текстура волос выглядит следующим образом:
Albedo-текстура волос с прозрачностью
Чтобы придать волосам естественность поведения, мы пробовали использовать на меше волос компонент ткани Unity 3d, чтобы добавить небольшой эффект ветра или гравитации, но подробнее об этом в другом посте.
3. Создание пожилых версий персонажей
«Girl you’ll be a women soon»
Как я говорил выше. в нашей игре можно встретить персонажей в разные стадии их жизни. Это добавляет интереса для игроков, а также заставляет нас выполнять дополнительную интересную работу.
Я покажу, как мы сделали красивую девушку намного старше. Мы просмотрели множество видео, картинок и интернет-страниц о том, как стареет человеческое тело.
Дело не только в морщинах, свою форму меняет всё лицо человека. Подробнее об этом можно прочитать например здесь.
В статье я расскажу о технической стороне вопроса. Итак, сначала мы завершили 3D-модель молодого персонажа со всеми костями. Это очень важно, потому что на подготовку скелета и добавление весов уходит очень много времени. После этого мы просто скопировали её и начали работать с копией модели. Благодаря такому рабочему процессу нам не нужно заново заниматься оснасткой (риггингом) пожилой версии персонажа, потому что в ней используется та же система скелета. Это гораздо важнее в движке. Подобная система ускоряет загрузку и выгрузку ресурсов, потому что мы загружаем/выгружаем только нужное нам.
Итак, сначала мы изменяем базовый меш и опускаем некоторые части лица к земле, как это делает при старении мать-гравитация. Нос, щёки, брови, уши. Но мы не слишком увлекаемся, потому что модель имеет те же лицевые кости, что и модель молодого персонажа. (То есть при слишком сильном изменении базового меша могут возникнуть проблемы.)
Только деформация меша
Затем мы наносим скульптингом крупные морщины и детали в каком-нибудь ПО для скульптинга. Например, вы можете воспользоваться бесплатным Scupltris. Затем мы запекаем их в текстуру, называющуюся картой нормалей. Почему? Потому что она даёт нам показанный ниже результат без добавления лишних треугольников в модель. (Чтобы ваш PC смог справиться с её обработкой.) Также мы создаём карту нормалей некоторых деталей на основании текстуры кожи, а затем смешиваем их вместе.
Меш плюс карта нормалей
Наконец, мы добавляем морщины на albedo-текстуру (текстуру с базовым цветом). Мы сделали снимки нескольких пожилых людей, а затем добавили к модели морщины с помощью смешения в Photoshop.
Меш плюс карта нормалей крупных деталей и albedo-текстурой старой кожи
Итак, в результате в коже нашей модели пожилого персонажа используется карта нормалей деталей и albedo-текстура. Мы также подготавливаем текстуру подповерхностного рассеяния (subsurface scattering, эффект просвечивания света сквозь кожу) и specular-карту, но в том, что вы видите на экране, используются только albedo и карта нормалей (смешанные в одну карта нормалей крупных деталей + карта нормалей деталей).
Здесь мы можем видеть следующие части:
2. Карту нормалей крупных деталей, основанную на вылепленных деталях модели.
3. Карту нормалей крупных деталей, смешанную с деталями кожи, созданными из albedo-текстуры.
Пожилой персонаж выглядит гораздо лучше в движке Unity 3D, где мы используем подходящие шейдеры:
А вот соединённые в Photoshop две версии персонажа (размещённые в движке в одном месте)
4. Сканирование для персонажей настоящей одежды.
Итак, мы добрались почти до конца, но чтобы добиться финального внешнего вида персонажа, предстоит ещё многое сделать.
Мы отсканировали множество разной одежды. Техника сканирования похожа на сканирование лица или других объектов, но теперь это можно делать медленно, обычно одежда не движется (ветер или пробегающие мимо кошки бывают очень надоедливыми, особенно когда даже небольшое перемещение может испортить часы работы).
Мы не смогли подобрать советов или готовых решений по правильному сканированию одежды, потому вот наши советы о том, что нужно и чего нельзя делать:
— Самое важное — закрепить конструкцию, чтобы одежда была неподвижной; ещё лучше расположить одежду в устойчивой T-позе. Что это значит? Это поза с широко расставленными руками, стандартная позиция для персонажей игр, к которым применяется анимация. Также в такой позе лучше всего сканировать одежду.
Для этого мы купили манекен. Нам не удалось сразу найти манекен в T-позе, поэтому съёмка под руками была очень сложной, а ещё больше работы требовалось на совмещение 3D-моделей отсканированной одежды с руками, опущенными вдоль тел персонажей. Изначально система выглядела так:
Наш первый манекен с опущенными вниз руками
… поэтому мы модифицировали его, чтобы он поднял руки. Мы сделали новые руки из ПВХ-трубы. Вот как теперь выглядит наш «трубонекен» в T-позе:
У этого манекена руки сделаны из ПВХ и он поставлен в T-позу
Мы можем снимать эту трубу, чтобы упростить одевание манекена.
Ну ладно, это отлично, но зачем на нашем пластмассовом друге эти чёрные точки?
Это потому, что поверхность очень блестящая, а скрипты сопоставления точек в фотограмметрии очень не любят блестящих вещей, но обожают точки и характерные особенности, поэтому мы нанесли маркером так много точек. Это позволило нам лучше сопоставлять позиции фотографий в ПО, чтобы получать более качественные сканы одежды.
Вот как выглядит на нём одежда, в данном случае меховая (в T-позе):
— Второй по важности аспект при создании одежды с помощью фотограмметрии — не забывать делать снимки под руками и снизу одежды. Вот сколько фотографий нам пришлось сделать, чтобы создать достаточно хороший скан этой одежды:
Здесь можно увидеть облако точек сканирования:
— Некоторые виды одежды очень сложно сканировать, например, с длинным мехом или из очень блестящих материалов, поэтому иногда проще их не сканировать, а создавать вручную.
Например для улучшения внешнего вида этого меха мы создали дополнительные элементы меха с альфа-каналом прозрачности. Это аналогично тому, что мы делали с волосами персонажей.
Красная часть — это элементы меха, созданные вручную с альфа-каналом
Вот как это выглядит без текстуры
— Некоторые типы объектов сканировать проще, например, эта матовая юбка выглядит очень хорошо, потому что сделана из матового материала. Также здесь мы использовали HDR-снимки, чтобы получить больше информации в тенях и засветах, но hdr-фотограмметрия занимает кучу времени. Почему? Потому что каждый снимок нужно делать со штатива, иначе фотографии будут размытыми. Теперь представьте уровень раздражения, когда спустя час работы одна из наших кошек просто прыгнула на этот мех. Нам пришлось всё начинать с начала.
Выглядит хорошо, правда? В целом чем больше времени ты тратишь на скан, тем лучше результат получаешь, и меньше занимаешься постобработкой.
— Ещё одни элементы, которые лучше делать вручную, а не сканировать — это пояса. Мы создавали их вручную. Мы сделали так, чтобы текстуры зацикливались, чтобы даже при небольшом разрешении текстур качество в игре было высоким.
— Венок тоже делался аналогично волосам, с использованием прозрачности. Он ещё не готов, но его видно на скриншотах:
Ну, на этом пока всё об одежде.
5. Соединение всего в игровом движке.
Ранее я говорил, что мы используем движок Unity 3D. Расскажу о том, какие шейдеры и настройки мы использовали, для того чтобы модель выглядела как на скриншотах.
Для всех элементов персонажей мы сейчас используем бесплатный Alloy Shader. Мы выбрали его, потому что в нём есть всё необходимое нам, особенно опция растворения для каждой вариации шейдера и многие другие опции в сегментах. Вы можете использовать любой другой шейдер, но мы пользуемся Alloy (кроме того, он бесплатен).
Различное положение света даёт интересные эффекты
— Кожа: для этой части персонажей мы используем шейдер кожи с эффектом подповерхностного рассеяния и передачей света. Что такое эффект подповерхностного рассеяния? Это симуляция фактора прохождения освещения сквозь кожу. Посмотрите на сделанные нами снимки:
Вот как выглядит подповерхностное рассеяние на руке в реальном мире
Как видите, освещение (если оно достаточно сильное) проходит сквозь кожу.
Это придаёт очень естественный внешний вид, особенно при слабом освещении. Можно увидеть, как этот эффект ведёт себя в The End of the Sun на примере этого gif и показанных выше скриншотов. (Учтите, что пока у модели даже нет specular-текстуры и Subsurface-карты, поэтому на финальном этапе она будет выглядеть немного лучше.)
— Глаза: как известно, глаза — зеркало души. И это правда — очень сложно придать персонажу естественный вид, не сделав его глаза идеальными. Глаз — это не просто сфера. Он плоский там, где находится радужная оболочка, а зрачок даже ещё ниже. Именно поэтому мы используем шейдер Parallax. Это поверхность, создающая иллюзию того, что глубже есть что-то ещё, и она даёт очень хорошие результаты!
Глаза с дополнительной прозрачной сферой большего размера для эффекта дальнего отражения
Глаза без этой сферы.
Более того, теперь мы можем управлять расширением зрачков, и в катсценах это создаёт очень естественный вид (немного пугает, когда зрачок максимально расширен, но для фэнтезийных целей этот эффект всё равно полезен).
— И последнее: поскольку мы используем один скелет для всех версий одежды и тел, то можем без всяких проблем превратить молодого персонажа в пожилого или поменять его одежду. Это создаёт отличные возможности по созданию кинематографических сцен, а также замечательно оптимизирует игру.
Вот так мы можем смешивать элементы созданного таким образом персонажа.
— Для одежды мы используем двухсторонний шейдер, чтобы можно было видеть её с обеих сторон.
— Для волос мы используем специальный двусторонний шейдер с гладкими прозрачными краями.
6. Окончательные результаты
Под катом представлена полная галерея того, как выглядит финальная версия персонажа в движке Unity 3D: (но он по-прежнему находится в разработке)
Объемные модели из фотографий
Обычные снимки, как бы ни были они хороши, никогда не дадут возможности наглядно представить себе демонстрируемые объекты, так как показанный на них, например, товар нельзя повернуть и увидеть с обратной стороны. Иное дело — объемные представления объектов — модели, которые позволяют рассмотреть предмет со всех сторон. Такие объемные модели незаменимы для демонстрации товаров, предлагаемых компаниями в интерактивных каталогах продукции, публикуемых на web-сайтах, в Интернет-магазинах или прилагаемых к корпоративным презентациям — здесь модели позволяют покупателю получить наиболее полную информацию о товаре. Не менее часто интерактивные объемные модели применяются в энциклопедиях и обучающих программах, где обеспечивают наглядное представление того или иного предмета, состояния, вещества и т.п. Однако на этом список областей, где применяются 3D-модели, конечно, не исчерпывается, — они необходимы при разработке различных строительных объектов, проведении реставрационных работ, создании новых моделей автомобилей и самолетов и совершенно незаменимы в компьютерных играх и анимациях.
В большинстве случаев объемные модели строятся с нуля в соответствующих программах для 3D-моделирования. Данный способ создания очень трудоемок и требует немалых знаний, поскольку требуется построить каркасное представление модели, затем на цифровой каркас наложить специально созданные материалы и на последнем этапе создать иллюзию объемности путем манипуляций с тенями и светом. Гораздо быстрее и проще создавать модели не с чистого листа, а на основе фотографий при помощи особых программных средств, которые могут выполнить часть операций автоматически, анализируя представленную на снимках двумерную информацию и создавая возможный вариант объемной модели — это позволяет существенно ускорить процесс разработки. Правда, таким способом можно построить не любую модель, но для ряда направлений данный вариант генерации моделей открывает весьма широкие перспективы.
Классы программ для создания объемных моделей из фотографий
Теоретически существует два подхода, обеспечивающих получение объемных моделей объектов на основе обычных двумерных снимков. Первый позволяет создавать так называемые псевдотрехмерные модели — им присуща иллюзия объемности, но в действительности они не являются трехмерными. Данный подход в большинстве случаев реализуется путем сшивания фотографий специальными программами-сшивателями в 360-градусные панорамы и актуально применяется при создании круговых обзоров, когда поворот объекта вокруг своей оси позволяет получить достаточно полное представление о его внешнем виде. Круговые обзоры широко используются в Интернете, где придают интерактивность web-страницам, и совершенно незаменимы в интерактивных каталогах, а также применяются в интерактивных презентациях, энциклопедиях, образовательных программах и т.п.
Второй подход обеспечивает создание настоящих трехмерных моделей, которые можно экспортировать в популярные 3D-форматы и в дальнейшем продолжить их обработку в программах трехмерного моделирования. При желании такие модели обычно могут быть экспортированы в Java Applet для просмотра в Интернет-браузерах.
В обоих случаях основой моделей является набор фотографий (количество снимков, как правило, не меньше восьми и зависит от используемого ПО и желаемого результата), а процесс их создания можно разделить на два этапа: непосредственно фотосъемка объекта и генерация модели. Съемка объекта для модели представляет собой очень трудоемкий и крайне ответственный процесс, так как от ее результатов напрямую будет зависеть качество модели. Для получения высококачественных моделей следует придерживаться ряда правил:
Псевдотрехмерные модели теоретически могут быть получены в любом пакете для создания виртуальных туров из панорамных фотографий, так как представляют собой особый вариант виртуального тура, в ходе которого осуществляется вращение 360-градусной панорамы. Однако удобнее и быстрее получить их в более узкоспециализированных приложениях, таких как 360 Degrees Of Freedom 360.3D, 3D Photo Builder Professional, Easypano Modelweaver и т.п. Генерация псевдотрехмерных моделей в их среде — процесс достаточно быстрый, простой и не требующий какой-то специальной подготовки. Более того, в таких пакетах могут быть предусмотрены те или иные возможности автоматизации процесса, что актуально, так как число моделей, например для интерактивных каталогов, достаточно велико.
Настоящие трехмерные модели создаются совершенно иным способом: с помощью особых встроенных алгоритмов приложения преобразуют двумерную информацию, содержащуюся в фотографиях, в точно рассчитанные трехмерные точки, линии и плоскости, генерируют полигональную модель, а затем осуществляют ее текстурирование. При этом далеко не все операции проводятся программами в полностью автоматическом режиме — нередко требуется подключение пользователя, которому, возможно, придется поучаствовать в том или ином этапе моделирования — в маскировании и удалении фона, формировании каркаса модели и/или ее текстурировании. Поэтому данный процесс быстрым не назовешь, хотя в целом времени на генерацию 3D-модели таким способом требуется на порядок меньше, чем при обычном трехмерном моделировании. Среди решений подобного рода наиболее интересными нам представляются пакеты 3D Software Object Modeller, PhotoModeler, D Sculptor и REALVIZ ImageModeler.
Программы для создания псевдотрехмерных моделей
360 Degrees Of Freedom 360.3D
Разработчик: 360 Degrees Of Freedom
Цена: 360.3D Lite — 69 долл., 360.3D Project — 199 долл.
Работа под управлением: Windows 98/Me/NT/2000/XP
Профессиональный пакет 360.3D продается отдельно либо в составе пакета 360 Degrees Of Freedom Developer Suite и предназначен для генерации интерактивных псевдотрехмерных моделей объектов, незаменимых для демонстрации товаров, предлагаемых компаниями в интерактивных каталогах продукции. Пакет отличается интуитивно понятным, аскетичным и в то же время удобным интерфейсом, видоизменяющимся в зависимости от установленного уровня работы с программой («новичок», «профессионал» и «разработчик»), а подробная документация, дополненная полезными примерами, позволит потратить на его освоение минимум времени. Это в совокупности с простотой и удобством работы, а также широкими возможностями в плане индивидуализации результата позволяет считать приложение 360.3D одним из лучших в своем классе.
Основой круговых обзоров являются фотографии в формате jpg, полученные с любой стандартной цифровой камеры, — число снимков обычно колеблется в интервале от 8 до 14. Процесс разработки обзора на их основе предполагает создание нового проекта, импорт снимков в проект, корректировку параметров обзора и генерацию трехмерной модели объекта, при этом сшивание отдельных снимков производится полностью автоматически. Полученные трехмерные иллюстрации просматриваются в Интернет-браузере при наличии Java-аплета. Они позволяют получить полное представление о демонстрируемых товарах, причем не только за счет автоматического вращения моделей, но и благодаря наличию у пользователя возможности управлять моделью с помощью мыши (вариант интерактивности определяется установленной схемой): например, перетаскивание мыши по горизонтали может приводить к вращению объекта, а по вертикали — к его масштабированию.
Пакет представлен в двух редакциях — 360.3D Lite и 360.3D Project. Вторая отличается большей функциональностью: позволяет использовать эффекты (растворение, динамическое освещение/затемнение, сепия, изменение прозрачности и др.), а также расширять степень интерактивности обзоров за счет более тонкого управления событиями.
3D Photo Builder Professional 2.2
Работа под управлением: Windows 98/Me/2000/XP/2003 Server
3D Photo Builder Professional — удобное решение для генерации интерактивных круговых обзоров, формируемых на основе серий снятых в разных ракурсах фотографий. Пакет отличается дружественным и удобным в работе интерфейсом и требует минимума усилий, специальных знаний и времени на создание обзора (все действия выполняются под руководством мастеров) и в то же время обеспечивает получение профессиональных результатов. Кроме того, его можно настроить на работу в пакетном режиме. Все это позволяет считать данное приложение эффективным инструментом для обеспечения наглядного представления товаров в интерактивных каталогах продукции посредством круговых обзоров.
3D Photo Builder Professional может работать с любыми камерами и поддерживает широкий набор разнообразных инструментов для хранения, редактирования, предварительного просмотра, экспорта и публикации изображений в Интернете. Использование интеллектуального алгоритма сшивания фотографий в автоматическом режиме, дополненное ручной коррекцией и настройкой параметров представления обзора (размера экрана, фона, скорости вращения и пр.), а также возможностью предварительного просмотра обзора, позволяет добиваться профессионального качества создаваемых псевдотрехмерных изображений. Встроенный графический редактор дает возможность осуществлять цветовую коррекцию, искажение и обрезку исходных изображений, а работа в режиме Web Designer позволяет внедрить в обзоры гиперссылки. Широкий диапазон форматов импорта и экспорта обеспечивает импорт снимков со сканеров, камер и TWAIN-источников и экспорт полученных круговых обзоров в форматы Flash, QTVR, AVI, EXE и др. Кроме того, в программе предусмотрены сохранение изображений в виде zip-архивов, анимационных gif’ов, скринсейверов, а также HTML-файлов и загрузка на ftp-сервер при помощи специального встроенного модуля web-загрузки.
Easypano Modelweaver 2.0
Работа под управлением: Windows 9х/Me/2000/XP
Пакет Easypano Modelweaver представляет собой инструмент для быстрого создания круговых обзоров, в котором удачно сочетаются широкие функциональные возможности, простота и удобство работы. Он предназначен для профессионалов, но благодаря дружественному интерфейсу программы и подробной справочной системе с ней смогут работать и новички.
Easypano Modelweaver совместим с широким диапазоном камер и позволяет применять основные графические форматы (jpg, gif и png). Кроме того, программа может извлекать изображения из видеофайлов и также использовать их в качестве основы для обзора. Импортированные тем или иным способом снимки вставляются в проект, затем для них определяется базовая точка (уникальная точка, присутствующая на всех фотографиях), задаются параметры обзора и осуществляется автоматическое сшивание снимков в 360-градусную панораму, а затем генерируется обзор. Созданные круговые обзоры обычно экспортируются в Java Applet и просматриваются в Интернет-браузере, а также могут сохраняться в формате QTVR, например в случае включения их в интерактивные презентации, распространяемые на компакт-дисках. Особенности просмотра полностью настраиваются разработчиком: можно задать размеры окна просмотра, изменить дизайн панели управления, определить список отображаемых кнопок, задать функциональные клавиши, добавить логотип и гиперссылку, установить допустимые границы изменения скорости вращения и т.д. Выбор максимально возможного набора кнопок позволяет пользователю при просмотре не только управлять поворотом демонстрируемого объекта, но и изменять его масштаб и регулировать скорость вращения.
Real2Virtual3D 3.12
Цена: персональная лицензия — 95 долл., коммерческая лицензия — 180 долл.
Работа под управлением: Win9x/Me/2000/NT/XP
Пакет Real2Virtual3D предназначен для создания псевдотрехмерных иллюстраций, основой которых могут служить как цифровые фотографии (поддерживаются все камеры), так и отсканированные изображения или рисунки. Возможно создание объемной иллюстрации даже из одной фотографии, хотя полноценный круговой обзор предполагает использование серии фотографий, снятых с различных ракурсов.
Пакет Real2Virtual3D компактен, отличается дружественным интерфейсом, удобен в работе и практически не требует времени на освоение. Создание объемной иллюстрации в нем предполагает выполнение трех этапов: импорт исходных изображений (bmp, jpg), последовательное задание опорных точек, ограничивающих вращаемый в обзоре предмет на всех снимках (для достижения наилучших результатов точки должны быть размещены на всех ключевых участках изображений), а затем автоматическая генерация кругового обзора. Для публикации в web дополнительно производится экспорт в VRML-формат (в процессе экспорта изображения сжимаются, что обеспечивает их быструю загрузку в web). Просмотр объемных иллюстраций может осуществляться как встроенными средствами Интернет-браузера, так и в специальном просмотрщике Real2Virtual Viewer, входящем в поставку. Созданные интерактивные изображения могут не только вращаться, но и просматриваться с разной степенью масштабирования, так что покупатели смогут получить более полное представление о внешнем виде товара.
Photovista 3D Objects 1.5
Способ распространения: shareware (демонстрационная версия отсутствует)
Работа под управлением: Windows 95/98/2000/NT 4.0/XP
Photovista 3D Objects продается отдельно либо в составе пакета Reality Studio и обеспечивает быстрое создание компактных круговых обзоров для web-сайтов, которые просматриваются в любом Интернет-браузере и интерактивны, что позволяет пользователям управлять вращением демонстрируемых объектов и масштабировать их при помощи мыши.
Основу обзоров составляют фотографии, снятые с разных точек обзора и сохраненные на диске в форматах jpeg или bmp, импортированные с цифровой камеры или извлеченные из avi- или QuickTime-файлов. Снимки загружаются в проект и сшиваются в 360-градусную панораму, которая затем автоматически преобразуется в круговой обзор, — при этом программа самостоятельно удаляет фон, маскируя области снимков, относящиеся к объекту. Встроенные инструменты редактирования позволяют добиться более точного маскирования объекта (если результаты автоматического маскирования оказались недостаточно хороши) и обеспечивают контроль над наклоном изображений, модуль Frame Adjust позволяет регулировать положение осей X и Y на отдельных снимках, а модуль Image Stabilization избавит от проблемы колебаний трехмерного объекта при вращении, вызываемых неверным центрированием при съемке. Круговые обзоры сохраняются в VRML-формат для просмотра их в web, а также могут быть экспортированы в собственный формат программ Reality Studio и/или сохранены в avi-файлах.
Программы для создания трехмерных моделей
3D Software Object Modeller
Разработчик: Creative Dimension Software Ltd
Работа под управлением: Windows 2000(Service Pack 4)/XP
Пакет 3D Software Object Modeller (или 3DSOM Pro) — профессиональное решение для быстрого создания трехмерных моделей реальных объектов по фотографиям. Модели могут применяться в интерактивных каталогах, трехмерных компьютерных играх, мультимедийных презентациях и пр. Кроме того, пакет может представлять интерес для музеев (демонстрация старинных предметов утвари, представителей вымершей фауны и пр.) и может оказаться полезным в процессе моделирования одежды и ювелирных украшений (демонстрация образцов изделий) и т.п. 3D Software Object Modeller использует усовершенствованную технологию 3DSOM 1.0, разработанную Canon, обеспечивает гораздо более быстрый путь создания моделей, чем классические пакеты для 3D-моделирования, и не требует серьезной технической подготовки, а потому позиционируется в качестве альтернативного инструмента для трехмерного моделирования. Пакет ориентирован на 3D-дизайнеров, web-дизайнеров и фотографов и позволяет моделировать разнообразные типы объектов, за исключением прозрачных и отраженных объектов, а также объектов с глубокими отверстиями.
Для получения трехмерной модели объекта необходимо иметь порядка 20 его фотографий (в форматах jpeg, png, ppm или bmp), сделанных обычной цифровой камерой в разных ракурсах. Обязательным условием съемки является помещение объекта в центр специального калибровочного стенда, представляющего собой обычный белый лист бумаги со специальной маркировкой. Полученные снимки загружаются в программу, которая автоматически маскирует все изображения, отделяя объект от фона, — недостатки автоматического маскирования (они вполне возможны, если съемка производилась не в идеальных условиях: не совсем однотонный фон, неравномерное освещение и др.) могут быть легко исправлены при помощи целого набора ручных и полуавтоматических маскирующих инструментов. Затем программа самостоятельно генерирует каркас модели, а специальные инструменты позволяют при необходимости вручную откорректировать окончательную геометрию, после чего создаются текстурные материалы и осуществляется текстуризация модели — на этой стадии можно также вмешаться в процесс и видоизменить автоматически созданные материалы и принципы их наложения. По окончании модель либо экспортируется в один из 3D-форматов для дальнейшей обработки в пакетах для 3D-моделирования, либо в Java Applet, если предполагается ее использование в Интернете.
PhotoModeler 5.2
Разработчик: Eos Systems, Inc.
Способ распространения: shareware (демонстрационная версия программы — http://www.photomodeler.com/demo01.html)
Цена: определяется вариантом лицензирования
Работа под управлением: Windows 2000/NT 4.0(sp6+)/XP
Одно из наиболее известных в мире приложений в сфере фотограмметрического ПО — пакет PhotoModeler — предназначен для получения трехмерных моделей-эскизов на основе фотографий. Он хорошо зарекомендовал себя в самых разных областях компьютерного моделирования: механике, архитектуре и реставрации зданий, археологии и антропологии, видео и мультипликации, судебной экспертизе, машиностроении и др. Например, при реставрации зданий с его помощью можно по сохранившимся рисункам в 3D-модели воссоздать облик архитектурного сооружения, а в судебной практике данное приложение очень активно используется для воссоздания картины места происшествия. Пакет позволяет работать с любым количеством фотографий, полученных при съемке самыми разными камерами, в том числе и одновременно в одном проекте. При необходимости можно создать модель даже по одной-единственной фотографии, что не редкость в археологии и антропологии (при недостатке исходного материала), хотя качество, конечно, будет хуже. Если в ходе работы над проектом появился новый исходный материал, то в любой момент можно добавить новые снимки. Результат работы программы зависит от множества факторов: разрешения и числа исходных фотографий, углов между ними, числа опорных точек и четкости описания камер.
Создание трехмерной модели в PhotoModeler — операция трудоемкая в силу того, что многие действия приходится выполнять вручную, и осуществляется в несколько этапов. Вначале необходимо получить и отсканировать фотографии. Идеальный вариант — наличие такого числа фотографий, чтобы каждая большая отдельная плоскость объекта была запечатлена не менее чем с двух разных точек. Затем определяются параметры камеры, при этом допускается использование разных камер для различных снимков, определяются размеры объекта, для которого создается 3D-модель, и задается местоположение каждой из камер. После этого также вручную расставляются ключевые опорные точки и устанавливается тип связи между отдельными группами точек в виде линий или плоскостей. На последнем этапе на основе опорных точек, линий и плоскостей программа генерирует трехмерную модель, которую можно будет экспортировать в CAD-программу. Оценить полученный результат позволяет модуль 3D Viewer, благодаря которому несложно рассматривать и вращать любые модели.
PhotoModeler поддерживает импорт изображений в форматах bmp, cal, jpg, mac, pcd, pct, pcx, png, ppm, psd, rbg, sgi, tga и tif и экспорт в форматы dxf (2D и 3D), 3ds, Wavefront Obj, vrml (1&2), iges, raw, 3dm и stl. Дружественный интерфейс в совокупности с возможностью использования мастера проектов позволяет сравнительно быстро разобраться с принципами работы программы, хотя работа в ней менее трудоемкой, конечно, не становится. В освоении программы помогут подробный Help и серия мультимедийных уроков, входящих в комплект поставки.
D Sculptor 2.0
Разработчик: D Vision Works Limited
Цена: Standard — 500 евро, Professional — 900 евро
Работа под управлением: Windows 95/98/Me/NT/2000/XP
Пакет D Sculptor позволяет быстро создавать текстурированные 3D-модели объектов реального мира на основе обычных фотографий. По сравнению с аналогичными программами исходные объекты могут иметь сложную структуру (например, сложные органические формы), процесс разработки осуществляется гораздо быстрее, а технология создания модели напоминает работу в двумерных графических пакетах, что упрощает процесс освоения программы. Поэтому D Sculptor было бы удобно иметь в списке графических решений тем дизайнерам, которые работают преимущественно в 2D-пакетах, но иногда нуждаются и в трехмерных моделях. По замыслу разработчиков, D Sculptor больше подходит для генерации 3D-моделей для каталогов продукции и Интернет-приложений, а также в ряде случаев может применяться для создания моделей для компьютерных игр.
Создание трехмерной модели осуществляется в пять шагов. Сначала нужно сфотографировать объект с разных ракурсов — при съемке объект должен располагаться в центре специальной плоскости с круговой маркировкой, а число снимков должно быть не менее восьми — и загрузить jpg-изображения в проект. На втором этапе D Sculptor анализирует снимки и самостоятельно обнаруживает маркеры. Затем при помощи стандартных инструментов создания выделенных областей требуется вручную маскировать объект в каждой фотографии, тем самым разграничив для программы области снимка, относящиеся к модели и расположенные вне ее. По окончании следует выбрать команду Generate Model, и программа создаст модель. Количество полигонов в модели можно изменять в интерактивном режиме, что весьма удобно, так как для Интернета требуются модели с небольшим числом полигонов, в то время как для работы в 3D-приложениях, наоборот, необходимо создание высококачественных многополигональных моделей. На финише модель экспортируется в один из распространенных 3D-форматов (например, для дальнейшего редактирования в 3D Studio) или в Java Applet для просмотра в Интернет-браузере. D Sculptor также поддерживает формат Macromedia’s Shockwave для совместимости с Macromedia Director 8.5 и выше.
Пакет представлен в двух редакциях — Standard и Professional, профессиональная редакция обеспечивает более высокую точность моделирования благодаря наличию возможности разделения модели на подобъекты.
RealViz ImageModeler 4.0
Способ распространения: shareware (демонстрационная версия отсутствует)
Работа под управлением: Windows 2000(SP2)/XP, Mac OS X 10.2
RealViz ImageModeler — известное решение для создания 3D-моделей по фотографиям. Пакет ориентирован преимущественно на 3D-дизайнеров и может оказаться полезным в самых разных сферах: для моделирования архитектурных сооружений, создания трехмерных круговых обзоров для web, подготовки фотореалистических фонов как основы для дальнейшей дизайнерской работы, а также для создания анимации и спецэффектов. Кроме того, RealViz ImageModeler может применяться для точного распознавания 3D-объема и последующего размещения в этом объеме других трехмерных моделей.
Для создания модели требуется серия фотографий, снятых в разных ракурсах вокруг объекта и сохраненных в одном из форматов: tga, sgi, png, jpg, pict, pgm, ppm или cin. Снимки импортируются в проект, и программа автоматически осуществляет их калибровку, определяя параметры камеры (положение, длину фокуса и пр.), и устанавливает систему координат. На следующей стадии вручную выставляются калибровочные маркеры (они необходимы для определения опорных точек, по которым производится расчет полигонов) и осуществляется автоматическое построение каркасной модели — при этом окончательная доводка геометрии выполняется вручную при помощи стандартных инструментов полигонального редактирования. Затем производится текстурирование модели — текстуры автоматически извлекаются из фотографий и полученные материалы присваиваются отдельным подобъектам, при этом пользователь может изменить параметры проецирования средствами встроенного UV Mapping Editor. Созданная модель экспортируется в 3D-форматы для дальнейшей обработки в пакетах 3D Studio Max, Lightwave 3D, Maya, SOFTIMAGE I XSI, Macromedia Shockwave 3D и др. или в VRML-формат для публикации в web.
Получение морфируемой 3D-модели лица на основе фотографии в произвольном ракурсе
Привет, Хабр! Представляю вашему вниманию перевод статьи «Learning 3D Face Morphable Model Out of 2D Images».
Трёхмерная морфируемая модель лица (3D Morphable Model, далее 3DMM) — это статистическая модель структуры и текстуры лица, которая используются компьютерном зрении, компьютерной графике, при анализе человеческого поведения и в пластической хирургии.
Неповторимость каждой черты лица делает моделирование человеческого лица нетривиальной задачей. 3DMM создётся для получения модели лица в пространстве явных соответствий. Это означает поточечное соответствие между полученной моделью и другими моделями, позволяющими выполнять морфирование. Кроме того, в 3DMM должны быть отражены трансформации низкого уровня, такие как отличия мужского лица от женского, нейтрального выражения лица от улыбки.
Исследователи из Университета Мичигана предлагают новейший метод получения 3DMM лица, основанный на глубоком обучении. Используя высокую эффективность глубоких нейронных сетей для осуществления нелинейных отображений, их метод позволяет получить 3DMM на основе 2D изображения, снятого в произвольной обстановке.
Более ранние подходы
Обычно 3DMM получают с помощью набора 3D сканов лиц и набора 2D изображений этих же лиц. Общепринятый подход заключается в использовании редукции размерностей при обучении с учителем, которая выполняется с помощью применения анализа главных составляющих (Principal Component Analysis – PCA) на тренировочном наборе данных, состоящем из 3D сканов лиц и соответствующих 2D изображений. При использовании линейных моделей, таких как PCA, нелинейные трансформации и лицевые вариации не могут быть отражены в 3DMM. Более того, для моделирования точных 3D текстур лиц необходимо большое количество «3D информации». Таким образом, использование данного подхода оказывается неэффективным.
Предлагаемый метод
Идея предлагаемого метода заключается в использовании глубоких нейронных сетей или, более конкретно, свёрточных нейросетей (которые лучше подходят для рассматриваемой задачи и менее затратны в плане времени вычислений, чем многослойные перцептроны) для получения 3DMM. Кодирующая нейросеть (энкодер) принимает на вход изображение лица и генерирует параметры текстуры и альбедо лица, с помощью которых две декодирующих нейросети (декодеры) оценивают текстуру и альбедо.
Как было указано ранее, линейная 3DMM имеет ряд проблем, таких как необходимость наличия 3D сканов лиц, невозможность использования изображений, снятых в произвольном ракурсе и ограниченная точность представления из-за использования линейной PCA. В свою очередь, предлагаемый метод позволяет получить нелинейную 3DMM модель на основе 2D изображений лиц высокого разрешения, снятых с произвольного ракурса.
Планарное представление
В своём подходе, исследователи используют развёрнутую 2D карту лица для представления его текстуры и альбедо. Они утверждают, что учёт пространственной информации играет важную роль, так как они применяют свёрточные нейронные сети, а фронтальные изображения лица содержат мало информации о боковых сторонах. Именно поэтому их выбор пал на планарное преставление.
Три различных представления альбедо. (а) – 3D представление, (в) – альбедо как 2D фронтальное изображение лица, (с) – планарное представление.
Планарное представление. x, y, z и суммарное представление текстуры.
Архитектура нейросети
Исследователи спроектировали нейросеть, которая, принимая на вход изображение, кодирует его в вектора текстуры, альбедо и освещения. Закодированные скрытые вектора для альбедо и текстуры декодируются с использованием двух декодеров, в качестве которых используются свёрточные нейросети. На выходе декодеры выдают блики лица, его альбедо и 3D текстуру лица. С использованием этих параметров, дифференцируемый рендеринг-слой генерирует модель лица посредством совмещения 3D текстуры, альбедо, освещения и параметров расположения камеры, полученных энкодером. Архитектура представлена на схеме ниже.
Архитектура предлагаемого метода для получения нелинейной 3DMM
Получаемая устойчивая нелинейная 3DMM может быть использована для 2D наложения лиц и решения проблемы трёхмерной реконструкции лиц.
Сравнение с другими методами
Рассматриваемый метод был приведён в сравнение с другими методами на примере следующих задач: 2D наложение, 3D реконструкция и редактирование лиц. Предлагаемый метод превосходит другие современные подходы для решения этих задач. Результаты сравнения представлены ниже.
2D наложение лица
Одно из приложений метода — наложение лиц, что должно существенно улучшить анализ лиц в ряде задач (к примеру, распознавание лиц). Наложение лиц – непростая задача, но рассматриваемый метод показывает высокие результаты при её решении.
Результаты 2D наложения лиц. Невидимые пометки отмечены красным. Рассматриваемый метод отражает необычные позы, освещение и выражение лица.
3D реконструкция лица
Количественное сравнение результатов 3D реконструкции
Результаты 3D реконструкции в сравнении с методом Sela и др. Предлагаемый метод сохраняет волосы на лице и другие особенности лица намного лучше, чем этот метод.
Результаты 3D реконструкции в сравнении с VRN от Jackson и др. на примере известного датасета CelebA.
Результаты 3D реконструкции в сравнении с методом Tewari и др. Как видно, предлагаемый метод решает проблему сжимания лица при наличии различных текстур (таких как волосы на лице).
Редактирование лица
Обсуждаемый метод разбивает изображение лица на отдельные элементы и позволяет изменять лицо с помощью манипуляций над ними. Результаты работы данного метода при редактировании лиц были оценены на примере таких задач, как изменение освещения и добавление дополнительных элементов лица.
Результаты добавления бороды. Первая колонка содержит исходные изображения, последующие – разные степени изменения бороды.
Сравнение с методом Shu и др. (вторая строка). Как видно, предлагаемый метод даёт более реалистичные изображения, и кроме того, лучше сохраняется идентичность лица.
Вывод
Предлагаемый метод, предположительно, получит широкое распространение, так как он позволяет получить точную и устойчивую 3DMM. Хотя 3DMM была широко распространена с момента своего создания, до появления рассматриваемого метода не существовало эффективного получения этой модели с помощью 2D изображений с произвольного ракурса.
Предлагаемый метод использует глубокие нейронные сети в качестве аппроксиматора для устойчивого моделирования человеческих лиц со всеми их особенностями. Столь необычный способ получения 3DMM позволяет проводить манипуляции с изображением и может быть использован во многих задачах, некоторые из которых были представлены статье.
Облачная фотограмметрия, или Делаем 3D-модель по фотографии
Всё же фотограмметрией данный метод можно назвать с некоторой натяжкой. В чём заключается его идея? Всё очень просто. Мы делаем некоторое количество фотографий одного и того же объекта, причём так, чтобы изображения с двух разных точек съёмки немного пересекались. На основании этих данных можно построить трёхмерную модель снимаемого объекта. Если делать это вручную, то можно получить близкий к идеальному результат. Однако времени на это уйдёт очень много. По-хорошему надо учитывать и множество других факторов: угол наклона и позицию камеры, искажения изображения из-за несовершенства оптики и так далее.
Прикинув объём ручной работы, многие сразу теряют всякий интерес к подобным затеям. Но не всё так плохо. В мире софта уже давно есть программы, которые заметно облегчают этот процесс или как минимум автоматизируют ряд действий. Но и у них есть пара заметных недостатков. Во-первых, для любительских экспериментов стоят они больно много. Во-вторых, эти программы порой требуют значительных вычислительных мощностей. Что же делать? Решение очень простое — воспользоваться специализированными сайтами или, если хотите, облачными сервисами.
Такой подход разом избавляет нас от массы трудностей. Остаётся только сделать подходящие фотографии или снять видео, залить все это на сервер, а на выходе получить приемлемый результат. Недостатки этого метода очевидны: мы не можем контролировать процесс создания 3D-модели и нам приходится ждать, пока обрабатываются исходные данные. Впрочем, для апробирования методики можно с этим смириться. Тем более что рассматриваемые нами сервисы совершенно бесплатны.
В принципе, их (советов или требований) не так уж много. Надо избегать прозрачных или блестящих поверхностей и бликов. Не рекомендуется попадание в кадр повторяющихся текстур. Также объект всегда должен быть неподвижным — надо самому перемещаться с камерой вокруг него. Опять-таки кадры должны хоть немного перекрываться. Ну и надо следить за освещением. Желательно чтобы оно было достаточным (без шумов в кадре) и более-менее равномерным. Использование вспышки не рекомендуется. Использовать ли зеркалку или простую мыльницу, а то и вовсе камеру в смартфоне — не так уж принципиально. Лишь бы кадры не были размытыми, а снимаемый объект оставался в фокусе. И ещё один нюанс: особого смысла делать фотографии с полным разрешением в десяток-другой мегапикселей смысла нет. Достаточно будет 3-4 мегапикселей. Важнее, чтобы объект занимал по возможности большую часть кадра. И ещё, ни в коем случае не используйте телескопические или fish-eye объективы!
В любом случае всё «приходит с опытом». Придётся отснять не один десяток фотографий, прежде чем получится достойная модель. Потренируйтесь сначала на каких-нибудь простых геометрических фигурах, расположенных на однородном фоне. Кстати, попытка воссоздать сложные поверхности вроде меха или волос практически наверняка будет провальной. А пока рассмотрим вкратце работу с программой. Тут всё очень просто. После запуска кликаем Create a new Photo Scene и выбираем фотографии, по которым будет строиться объект. Для начала стоит взять набор из 15-20 кадров, снятых с разных ракурсов, но под одним углом к поверхности, на которой стоит объект. Потом можно будет добавить к сцене и другие фото.
Нажимаем кнопку Compute Photo Scene, вводим имя и e-mail и соглашаемся с условиями использования сервиса. Обязательно вводите рабочий почтовый адрес, так как на него потом будут приходить уведомления и ссылки на готовые сцены. Впрочем, если у вас есть желание и время, то в следующем диалоге можно выбрать Wait вместо Email Me. Тогда программа свернётся и в фоне загрузит все фотографии на сервер, дождётся результата и снова активируется. В среднем загрузка файлов на сервер занимает несколько минут, а время выдачи готового результата составляет не более 10-15 минут. Если вы добавляете к сцене ещё несколько фотографий или меняете её, то все файлы заново заливаются на сервер и обсчитываются, что несколько раздражает.
Через некоторое время в 123D Catch будет загружена готовая сцена (в настройках можно задавать её качество, то есть детализацию). Эту сцену необходимо сохранить в небольшой 3dp-файл, который можно будет открыть и на другом ПК, так как фотографии и всё остальное всё равно будет загружено с серверов Autodesk. Готовую сцену можно экспортировать в некоторые популярные форматы (DWG, OBJ и другие). В идеальном случае сервис автоматически будет «сшивать» фотографии в 3D-модель. Но и ему свойственно ошибаться. Необработанные кадры помечаются иконкой с восклицательным знаком. Их можно удалить или же вручную откорректировать, кликнув правой кнопкой мыши и выбрав пункт Manual Stitch.
В открывшемся окне надо отметить одни и те же точки (желательно все четыре) на трёх выбранных фотографиях. После выбора точки на одной-двух фотографиях программа зачастую сама предлагает точку на третьей. Можно кликнуть по ней и точно спозиционировать её при большом увеличении. После корректировки модель снова отправится на обсчёт в облако. Помимо экспорта объекта можно сделать видеоролик, задав позиции камеры и задержку на каждой из них. Например, облёт вокруг модели или панораму (если вы снимали какую-нибудь площадь, находясь в её центре). Видео кодируется уже на клиентской машине, а не в облаке.
Теперь перейдём к двум другим бесплатным сервисам — Hypr3D и My3DScanner, которые отличаются от 123D Catch несколько менее детализированными 3D-моделями на выходе. Оба требуют обязательной регистрации и не предполагают какого-либо вмешательства в процесс рендеринга модели. То есть после загрузки фото или видео вам остаётся только ждать готового результата или, если не повезёт, сообщения об ошибке. Поэтому здесь гораздо важнее сразу же сделать хорошие исходные фотографии. По большому счёту рекомендации по съёмке остаются такими же, как и для 123D Catch. Но есть несколько важных нюансов. Просмотрите список наиболее частых ошибок с примерами того, как делать не надо.
Пример съёмки объекта для Hypr3D
Опять-таки не годятся прозрачные или бликующие, а также движущиеся объекты, нетекстурированный фон (или с повторяющейся структурой), объективы с сильными искажениями, очень однородный или движущийся фон, расфокусировка и смазанность в кадре, неровное и недостаточное освещение, сильный шум на фото и так далее. Съёмка также должна вестись при перемещении камеры вокруг объекта. В итоге должно получиться где-то от 30 до 60 кадров с одним и тем же углом наклона камеры. Короче говоря, здесь тоже придётся помучиться, прежде чем начнут получаться хорошие 3D-модели.
Перейдём к особенностям работы с указанными сервисами. Начнём с Hypr3D. Нажимаем кнопку Upload и переходим к загрузке исходных файлов. Выбираем нужные изображения или видео, вбиваем название и теги для нашего проекта и жмём Submit for processing. У этого сервиса один нюанс: он без проблем работает с видео, снятым на iPhone/iPod Touch (обычно хватает полуминутного ролика с «облётом» объекта), но для всех прочих требует наличия thm-файла. Впрочем, сервису удалось успешно скормить файлы MOV и 3GP, снятые смартфонами.
Обычно отрисовка модели на основе фотографий занимает не более получаса. А вот работа с видеофайлами идёт гораздо дольше, так как фактически они разбиваются на отдельные кадры, что само по себе занимает минимум 20-30 минут. Готовую модель можно просмотреть вместе с текстурами в виде полигональной сетки или облака точек. По умолчанию она выставляется на всеобщее обозрение посетителям сервиса. Сцены экспортируются в форматы DAE, PLY или STL. Последний сразу же можно отправить печататься на 3D-принтере. У Hypr3D есть также платные опции редактирования модели и подготовки её к 3D-печати, а также собственно создания модели из металла, пластика, керамики и других материалов.
My3DScanner генерирует субъективно менее качественные модели, чем Hypr3D. Тем не менее пользоваться им вполне можно. Начать создание проекта надо с выбора пункта My Studio → Create. Задаём имя и загружаем фото или видео, обязательно упакованные в архив. Время обработки зависит от загруженности сервиса. На видео, естественно, уходит больше времени. А вообще даже примерные сроки назвать очень трудно. Один из тестовых примеров обработался за 20 минут, а на другой ушло почти три часа.
Модели можно просматривать в любом браузере с поддержкой WebGL в виде нетекстурированного объекта или облака точек. Экспорт доступен только в форматы OBJ и PLY. У My3DScanner есть забавный глюк: он нередко вполне успешно создаёт неплохую модель отснятого объекта, но при этом накрывает его своеобразным «куполом», тянущимся с краёв подставки, на которой стоит сам объект. В целях экономии создатели сервиса хранят готовые модели в течение нескольких дней, а потом удаляют. Так что позаботьтесь о сохранении ваших «оцифровок» в более надёжном месте.
У всех трёх сервисов качество готовых моделей хоть и удовлетворительное, но всё равно требует ручной доработки. В основном придётся «отрезать» лишние детали или подложку. По крайней мере большую часть работы по оцифровке объекта берёт на себя автоматика. После экспериментов с «облачными» сервисами можно потренироваться работать в standalone-приложениях вроде 3DSom (Strata Foto 3D CX), iModeller, PhotoModeller и других. Возни с ними больше, но и результат гораздо более впечатляющий. Ну а потом можно и вовсе окунуться в мир настоящего 3D-моделирования. Но это уже совсем другая история. Удачи!
* Внесена в перечень общественных объединений и религиозных организаций, в отношении которых судом принято вступившее в законную силу решение о ликвидации или запрете деятельности по основаниям, предусмотренным Федеральным законом от 25.07.2002 № 114-ФЗ «О противодействии экстремистской деятельности».
Трехмерная фотограмметрия, или От фотографии к 3D-модели
Анна Завтур
Директор по работе
с корпоративными заказчиками компании КРОК
Надежда Гришина
Руководитель направления информационного моделирования компании КРОК
Юрий Чалый
Системный инженер
департамента информационных технологий компании КРОК
В последнее время метод аэрофотосъемки — получения фото с высоты, в том числе и с помощью беспилотных летательных аппаратов (БЛА) — набирает популярность как в архитектурных и строительных, так и в жилищно-коммунальных проектах.
В данной статье мы постарались проанализировать несколько программных комплексов, которые обрабатывают фотографии и строят по ним трехмерную модель. Кроме того, рассмотрели технологию обработки фото, а также методологию работы с программным комплексом и конкретные примеры моделей реально существующих объектов как зарубежных специалистов, так и отечественных, в частности опыт компании КРОК.
Введение
В наше время трехмерные технологии стали весьма востребованы в самых разных областях деятельности. 3Dмоделирование является неотъемлемой частью таких сфер, как наука, промышленность, медицина, кинематограф и т.д.
Фотограмметрия родилась через 13 лет после изобретения фотографии. В 1852 году французский инженер Эмме Лосседа для создания плана местности получил первые перспективные снимки Парижа. Съемка была проведена с воздушного шара.
В наши дни под фотограмметрией [1] подразумевается научнотехническая дисциплина, занимающаяся определением формы, размеров, положения и иных характеристик объектов по их фотоизображениям. Метод получения фотоизображений может быть разнообразнейшим. От аэрофотосъемки с помощью дрона до наземной съемки с использованием автомобиля или даже ручная съемка на планшет или телефон.
Обзор существующих программных продуктов
В настоящее время на рынке присутствует довольно большое количество продуктов для создания трехмерной модели по фотографиям. В результате проведенных исследований были выбраны наиболее соответствующие нашим задачам продукты: PhotoScan (Agisoft), Pix4Dmapper (Pix4D), ContexCapture (Bentley Systems).
PhotoScan — это отечественный продукт, широко используемый специалистами, работающими с компьютерной графикой и профессиональными дизайнерами. Бюджетный и эффективный, PhotoScan является одним из ведущих решений для «полупрофессионального» рынка. Войти в перечень профессиональных решений продукту пока не позволяют такие недостатки, как слабые возможности масштабирования и низкая производительность.
Рис. 1. Результаты съемки после обработки Photoscan
Pix4Dmapper — разработанный в Швейцарии продукт, который сразу же стал использоваться для аэрофотосъемки с БЛА. Pix4Dmapper позиционируется как ведущее решение для работы с ортофотопланами, облаками точек и цифровыми моделями местности (ЦММ) на средних и малых проектах. К его плюсам можно отнести возможность редактирования ортофотоплана, детализацию модели, использование Pix4D большинством производителей БЛА в аппаратной связке с ПО дрона. Из недостатков: низкая производительность, ограниченные возможности масштабирования и взаимодействия с моделью.
ContexCapture — продукт французской фирмы Acute3D, которую в 2015 году поглотила компания Bentley Systems [2]. Продукт характеризуется как решение для автоматического и высокоточного построения 3Dмоделей на основе простых фотографий, получаемых с помощью любого устройства — от смартфона до специализированных камер и сканеров. Решение обладает неограниченной масштабируемостью — от предмета до города. Точность представления ограничена только параметрами фотографий. Также важным преимуществом является возможность генерации не объемного облака точек, а трехмерного массива, который обладает свойствами геометрической модели. Решение выделяется своими промышленными характеристиками. К недостаткам можно отнести относительно слабые возможности по созданию интерьеров.
В итоге мы имеем три уникальных продукта, у каждого из которых есть свой набор как достоинств, так и недостатков.
Опыт зарубежных специалистов
Независимым экспертом [3] было проведено сравнение Pix4D и Agisoft. Для опыта использовался беспилотник DJI Phantom 2 и камера GoPro4. Следуя инструкциям на сайте поддержки Pix4D, была создана траектория полета дрона, настроены скорость и высота полета. Период съемки был установлен равным двум секундам.
Рис. 2. Результаты съемки после обработки Pix4Dmapper
В результате полета было сделано около 200 фотографий. После загрузки полученного массива фотографий в выбранные программные продукты были получены следующие результаты (рис. 1 и 2).
Видно, что качество моделей оказалось примерно одинаковым.Но было замечено, что у продукта Pix4D больше возможностей по работе с моделью, например, есть возможность изменения настроек в ее визуальном представлении (контраста, яркости, теплового баланса и пр.) или управления камерой в просмотрщике модели (включая свободное перемещение камеры во все стороны для «облета» модели, а не только вращение вокруг оси).
Следующий опыт [4] был проведен с объектами, для которых важна детализация. Для данных целей выбрали PhotoScan и ContexCapture. Были отобраны несколько скульптур и сделано 28 фотографий. Сборка производилась на рабочей станции со следующими параметрами:
В результате работы программных комплексов были получены результаты, показанные на рис. 3.
Рис. 3. PhotoScan (слева) и ContexCapture
Рис. 4. ContexCapture (слева) и PhotoScan
Большим преимуществом ContexCapture оказалось время сборки. В обоих случаях PhotoScan потребовалось 3 ч, чтобы собрать модель, в то время как ContexCapture справился за 45 мин. Также было установлено, что ContexCapture повышает разрешение в областях, где были сняты крупные планы, в отличие от PhotoScan.
Еще пример со сборкой более сложных и объемных моделей (рис. 4).
И в этом случае разница во времени оказалась заметной. PhotoScan — час, ContexCapture — 36 мин.
Личный опыт
Перед специалистами КРОК стояла задача получить трехмерный объект офисного здания компании КРОК в кратчайшие сроки. Полученные фото здания со всех сторон были обработаны с помощью ContexCapture. В результате была получена 3Dмодель, которую мы выгрузили в голографический стол для демонстрации. Модель практически не отличается от реального объекта и представляет собой масштабированную копию здания и его окружения (рис. 5).
Рис. 5. Модель здания КРОК в формате виртуальной голограммы
В итоге вся работа заняла меньше одного рабочего дня. На создание эскиза модели вручную в 3Dредакторах понадобилось бы порядка 2030 ч работы. Данная модель пока еще не может заменить проработанную модель, созданную инженером вручную, так как технология выдает много ошибок или неточностей изображения в макете. Однако эта технология идеальна для оперативного принятия решений и ситуаций, когда необходимо быстро получить вариант «грубой» визуализации.
Технологию создания 3Dмодели на основе цифровых фотографий планируется использовать на объектах, по которым нет актуальной технической документации, а также для получения актуальной информации о текущем состоянии строительных площадок. В частности, данная технология уже применялась для получения моделей: транспортной развязки для дальнейшей реконструкции объекта, зданий и сооружений для контроля этапов строительства.
Описание технологии
В данном пункте представлено, как работают современные программные продукты по трехмерной фотограмметрии.
Информация о каждой фотографии записывается в специальный файл: высота, угол поворота камеры, данные долготы и широты. Программа использует технологии машинного зрения и фотограмметрии для нахождения общих точек на многих фотографиях. В результате каждому пикселю на фотографии находится цветовое соответствие на других фотографиях (рис. 6).
Рис. 6. Пример поиска ключевых точек
Каждое соответствие становится ключевой точкой [5]. Если ключевая точка найдена на трех фотографиях и более, программа строит эту точку в пространстве. Чем больше таких точек, тем лучше определяются координаты точки в пространстве. Следовательно, чем больше пересечений между фотографиями, тем точнее будет модель. Пересечение от 60 до 80% является оптимальным.
Пространственные координаты каждой точки вычисляются методом триангуляции: от каждой точки съемки к выбранной точке автоматически проводится линия зрения, и их пересечение дает искомое значение (рис. 7).
Рис. 7. Ключевые точки относительно модели
Кроме того, в фотограмметрии применяются алгоритмы, целью которых является минимизирование суммы квадратов множества ошибок. Обычно для решения используют алгоритм Левенберга — Марквардта (или метод связок), основанный на решении нелинейных уравнений методом наименьших квадратов.
В процессе обработки фотографий создается расширенное облако точек (совокупность всех 3Dточек), которое используется для генерирования поверхности, составленной из полигонов. В заключение вычисляется разрешение и определяется, какие пиксели на фотографии соответствуют какому полигону. Для этого 3Dмодель развертывается в плоскость и затем пространственное положение точки ставится в соответствие оригинальной фотографии для задания цвета.
Перспективы развития и будущее отрасли
Как и у всякой инновационной отрасли, у трехмерной фотограмметрии есть огромный потенциал для развития: строительство, социальнокультурная сфера, компьютерные игры.
В данный момент мониторинг процесса строительства — весьма актуальная проблема. Уже несколько лет 3Dмодель объекта строительства используют для отображения прогресса стройки. Например, готовая в срок часть объекта на модели отображается зеленым, находящаяся в процессе — желтым, к строительству которой еще не приступили — серым (или скрыта вовсе), а просроченная — красным. Однако эти данные могут быть необъективны, так как не показывают непосредственно строительную площадку, а определить общий прогресс по фотографиям, как правило, довольно тяжело.
Фотограмметрия предлагает инновационное решение этой проблемы. Используется БЛА, который по заданной траектории облетает строительную площадку и производит аэрофотосъемку объекта. Далее массив фотографий выгружается в один из программных комплексов и производится сборка актуальной модели. Установив период облета, будь то неделя или месяц, удается отследить объективный прогресс строительства, который можно использовать для отчетов начальству. С помощью дополнительного ПО можно даже сравнивать эти две модели и подсвечивать разницу в них.
Социальнокультурная сфера — это другая область инновационного применения фотограмметрии. Сейчас в музеях и выставочных центрах во всем мире наиболее популярна технология виртуального тура [6]. Это набор сферических панорам, соединенных между собой ссылками для перехода. У нее определенно есть свои плюсы — это дешево, быстро и просто. Однако и минусов тоже предостаточно: медленная работа, неподвижные точки обзора и визуальные недочеты. К тому же этим уже никого не удивишь.
С помощью фотограмметрии можно создать интерактивный трехмерный тур в виртуальной реальности. Фотореалистичность, универсальность, интерактивность — отличие колоссальное. Цифровой камерой делается массив фотографий, например, скульптуры и комнаты, в которой она находится. Далее этот массив загружается в программные продукты, и после доработки специалистами на выходе мы имеем трехмерную комнату со скульптурой, которую можно буквально обойти вокруг и посмотреть со всех ракурсов.
Рис. 8. 3D-модели макетов для компьютерной игры Rustclad
Дополнительные коммерческие возможности этой технологии также гораздо шире своего аналога: тур на сайте, мобильное приложение, выездные экспозиции, создание минидемотура на входе и т.д.
Раньше фотограмметрия применялась преимущественно в геологии, топографии и археологических раскопках. Недавно ее начали применять в киноиндустрии, а сейчас с помощью этой техники создается компьютерная игра Rustclad [7]. Работа над трехмерным квестом только начата. Разработчики опубликовали официальный анонс и видеоролик с демонстрацией того, как они используют фотограмметрию для конструирования игрового мира, создавая цифровые 3Dмодели из сделанных вручную макетов (рис. 8).
Вывод
В публикации представлена лишь малая часть, крупица информации о перспективах развития данной области. Но даже этого достаточно для понимания огромного потенциала трехмерной фотограмметрии. Технология обладает обширными перспективами использования в проектах проектирования, строительства и эксплуатации объектов, таких как дороги, офисные и промышленные здания, памятники архитектуры и пр.
Как конвертировать 2D-фото в 3D-модель 3 простых способа
Последнее обновление 15 ноября 2021 г. by Питер Вуд
Если у вас есть особенный питомец или любимый человек, вы можете создать 3D-модель? Вы можете использовать только одну фотографию для преобразования в 3D-модель. Если у вас есть серия изображений, вы можете создать 3D-модель с этими фотографиями для получения более подробной информации. Давайте найдем как превратить 2D-изображение в 3D-модель для печати возможно из следующей статьи.
WidsMob ImageConvert
Поддержка импорта различных форматов изображений, включая JPG, JPEG, PNG, BMP, TIFF и известный формат RAW от Nikon, Canon, Sony и т. Д., А также пакетное преобразование их в широко используемые файлы JPG, TIFF, PNG и BMP.
Часть 1: Как конвертировать 2D-фото в 3D-модель онлайн
Когда вы получаете фото в 3D конвертер, вам нужно выбрать самую важную картинку. Если вы хотите использовать профессиональную 2D-фотографию в 3D-модель, вам нужно сделать несколько фотографий с разных ракурсов. Что касается Smoothie-3D, вы можете брать материал только сбоку, что значительно упрощает моделирование. Когда вы копируете одну сторону вещи, вы можете соответственно объединить их в 3D-модель.
Часть 2: Как превратить 2D-изображение в 3D-модель
Сфотографируйте для примера белку. Его сняли сбоку и использовали как лучший образец для преобразования фото в 3D-модель. Когда вы входите в Smoothie-3D, вы должны сначала создать учетную запись и войти в систему. После этого вы можете следовать процедуре создания 3D-модели из фотографии.
Шаг 1: Нажмите Фото товара меню для Добавить фото белки к программе онлайн. Если вы добавите неправильное изображение, вы можете Удалить это из программы.
Шаг 2: Вы можете использовать стандартный инструмент для рисования контуров и получить контур белки в разных частях. Просто повторите это, если у вас нет точного очертания белки.
Шаг 3: Поверните контурную часть и удалите выбранную часть, чтобы создать 3D-модель из фотографии. Если вас не устраивает размер, измените его размер.
Шаг 4: После этого вы можете объединить разные 3D модели в единое целое. Внесите любые изменения, чтобы удалить ненужную часть, чтобы соответственно превратить фотографию в 3D-модель.
Шаг 5: Экспорт 3D-модели в Sketchfab, Shapeways, i.materialise, Thingiverse или другое решение для прямого преобразования фотографии в 3D-модель для печати или в 3D-модель.
Это лучший подарок для ваших друзей или семьи. Если у вас все еще есть какие-либо вопросы по созданию 3D-модели, вы также можете обратиться к следующему руководству, чтобы получить 3D-модель из фотографии. Чтобы заказать 3D-модель, вы также можете обратиться за помощью к некоторым поставщикам онлайн-услуг.
Часть 3. Преобразование нескольких 2D-фотографий в 3D-модель в Windows 10/8/7
Шаг 1: Загрузите несколько фотографий в 3D-модель, а затем используйте метод выравнивания изображений для объединения разных изображений.
Шаг 2: После этого вам также понадобится фотография сбоку, чтобы использовать 3D-маскировку для создания модели.
Шаг 3: Использование 2D-маски несколько раз для удаления ненужной части из модели.
Шаг 4: Генерация облака точек также требуется для детального анализа точек для построения модели из фотографий.
Шаг 5: Наконец, вы можете уточнить поверхность модели и определить текстуру по фотографиям.
Если у вас есть какие-либо вопросы по преобразованию нескольких фотографий в 3D-модель, вы также можете найти более подробную информацию в следующем видеоуроке соответственно.
Заключение
Преобразование фотографии в 3D-модель часто используется в бизнесе как преобразованная фотография в PDF. Когда вы освоите эти навыки, это может стать большим подспорьем в вашей работе. Если у вас есть какие-либо вопросы по созданию 3D-модели из фотографий, вы можете свободно поделиться с нами своей информацией.
3d моделирование лица человека по фотографиям.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
В последнее время очень популярна услуга создания 3D-модели человека по фотографиям для её последующей печати в виде гипсополимерной 3D-статуэтки. Самым непростым и высокохудожественным этапом в этой услуге является моделирование лица. В данной статье мы вам поэтапно расскажем, на что стоит обращать внимание 3D-моделлерам при создании 3D-лиц, какие при этом бывают сложности и как их избежать.
1. Конструкция черепа
При создании портрета очень важно учитывать конструкцию черепа, так как кость является единственной недеформируемой частью головы (за исключением движения нижней челюсти).
Мышечные ткани, жир и кожа, деформируются в зависимости от эмоций на лице.
Очень важно при создании экстремальных (в плане деформации) эмоций не потерять наличие конструкции черепа. При «потере черепа» лицо может выглядеть неестественно, хотя при этом и может быть согласовано клиентом.
Для начала определим такое понятие как Лицевой индекс.
Лицевой индекс помогает более точно установить пропорции соотношений между шириной скул и длины лица, чтобы избежать ошибки узких лиц.
В среднем высоту головы от подбородка до макушки можно взять за 22-23 сантиметра (оно может меняться в зависимости от формы черепа). А за среднюю ширину головы 16 см (расстояние измеряемое между точками эурион). Как правило, расстояние между точками эурион является самым широким на черепе.
Неверную конструкции головы выдает ощущение диспропорций лица, дисгармония масс, излишняя карикатурность. Наиболее это заметным становится при просмотре головы с экстремальных ракурсов, с углов с которых обычно никто никогда не фотографирует.
Как пример, с нижнего ракурса, голова кажется вытянутой и узкой. Лобные массы кажутся сильно выставленными вперед, контур нижней челюсти пропадает. Подбородок кажется непропорциональным по отношению к низу лица.
Однако ощущения некорректной анатомии и фактические нарушения конструкции лица могут совершенно некоррелировать между собой.
Например, на ниже приведённом примере, может казаться, что лоб сильно выставлен вперед, однако ошибка не во лбу, а в некорректной постановке скул и в ширине головы.
Лицо может казаться яйцеобразным не из-за ширины щек, а из-за отсутствия конструкций нижней челюсти и неверной постановки ширины точек черепа эурион (точек над ухом).
Изменение угла источников света и добавление перспективы, очень помогают определить нарушения в конструкции лица.
Рассматривание других лиц и их сравнение со «средним» лицом помогает быстрее выделить конкретные уникальные отличия моделируемого лица от среднестатистического лица.
3. Объективное лицо и искажения объективного лица.
Предположим, есть некое объективное лицо, характерное конкретному периоду жизни человека, с конкретной эмоцией, которое необходимо создать. Объективное лицо, это то самое «истинное лицо» или же, то лицо которое мы получим при трехмерном сканировании. Но художник воспринимает это лицо только через фотографии. И это восприятие может быть в разной степени коррелировать с объективным лицом. Заказчик же, видел владельца лица воочию, и воспринимает лицо с этих же фотографий совершенно по-другому, в его голове возникает совершенно другая база образов отличная от базы образов художника. Мы думаем, что это и является проблемой между ожиданиями клиента и поисками проделанными художником. Поэтому для создания наиболее объективного портрета нужно отбросить как можно больше субъективных или искажающих факторов.
Вот примерный перечень искажающих восприятие факторов.
3.1. Угол обзора камеры очень сильно влияет на воспринимаемую форму лица.
Чем больше угол обзора, тем сильнее вытягивается лицо. Все что ближе к камере становится крупнее, все что дальше от камеры, меньше и уходит как бы во внутрь. Такие фотографии чаще всего получаются при съёмке лица вблизи камеры и при создании селфи. Чем дальше сфотографирован человек, тем меньше в его лице перспективных искажений и тем сильнее перспектива стремится к фотографии.
3.2. Сжатие изображения.
Чем сильнее сжато фото, тем недостовернее воспринимается форма лица. Как правило, фотографии большого разрешения читаются лучше, и мозгу не нужно прилагать дополнительные усилия для распознавания черт лица. С клиентом же ситуация состоит по-другому. Клиент даже в сильно сжатой фотографии низкого разрешения увидит своего друга, любимого, коллегу. Все это связано с механизмом распознавания образов. При просмотре «пиксельного» фото, у клиента в голове, уже есть библиотека образов связанная с этим конкретным человеком и он с легкостью по некачественному фото может описать его конкретные черты. Однако настоящим источником информации клиента является не фото, а его голова. Желательно меньше ориентироваться на некачественные фото, так как они могут в голове 3D-художника посеять сомнения об объективном лице.
3.3. Качество и углы освещения, ракурс.
Это те самые искажения, которые применяются профессиональными фотографами для преображения фотографируемой модели. Не все лица, красивы со всех ракурсов и не на все лица хорошо падает свет. Именно этого и стараются избежать, когда фотографируют. Фотографии человека, присланные клиентом, всегда чуть более привлекательные, чем объективная реальность и менее привлекательные, чем профессиональная фотосессия. Но для создания верной формы головы, для отображения всех черт лица, нужно увидеть все стороны лица. Поэтому наличие как можно большего количества фотографий и их анализ, создание подобных фотосклеек, помогут построить в голове образ объективной головы.
Наличие разных ракурсов позволит соотнести позиции тех или иных черт и масс лица в пространстве.
3.4. Заграждающие факторы.
Тут все просто. Очки, падающие тени на лице, портят восприятие лица. В глазах клиента, лицо с заграждающими факторами воспринимается абсолютно так же как и объективное лицо, а в глазах художника это полная неопределенность.
Тот случай, когда все присланные фото только в фас и анфас. Наш мозг заточен под распознавание образов. Поэтому сделав поиск лица лишь только по анфасам, мы можем сказать, похоже, лицо или нет, и то не с полной уверенностью, так как присутствуют другие виды искажений. Клиент же знает, как выглядит объективное лицо, и несхожесть сразу распознает. Единственный вариант решения проблемы — это сделать как можно больше поисков и отправить клиенту, в надежде, что он сможет описать профиль либо найти дополнительные материалы по лицу.
Эмоции очень сильно могут изменить восприятие объективного лица. Особенно в тех случаях, когда требуется конкретная эмоция, а на присланных фото она совершенно другая. В таких случаях лучше опираться на конструкцию лица, на костные структуры. Например, при открытой улыбке, мягкие массы лица очень сильно меняются и меняют восприятие лица, нежели чем на лице без эмоций. Однако костные массы, при этом остаются неизменными. Для создания улыбок надо опираться на анатомические материалы, сканы и экорше лиц с улыбками. И соотносить динамику деформаций лиц в примере с динамикой на конкретном объективном лице. Особенно в тех случаях, когда улыбка есть только в анфас.
Зачастую присылаемые фотографии сделаны в разные периоды жизни человека. Надо учитывать, что форма головы, лица, его черт меняется из года в год. Кроме того, помимо изменения мягких мышечных и кожных масс, меняются также и костные массы. А значит, с возрастом меняется и конструкция черепа. В итоге, более молодые лица воспринимаются иначе, чем более возрастные и тут нужен общий анализ фотографий. Какие черты сильнее сохраняются с возрастом, по какому принципу меняется лицо с возрастом. Зачастую, молодые лица могут сбивать художника с толку при моделировании состарившегося лица.
Использование фильтров и макияжа, еще один способ уйти от объективной реальности и исказить визуальное восприятие лица. Как правило, лица девушек на фото и в жизни две совершенно разные стихии. Девушки хотят выглядеть привлекательнее, чем они есть на самом деле. В таких случаях похожая конструкция лица и гладкая упругая кожа уже сделают большой вклад в портретное сходство. Однако порой бывает тяжело определить конструкцию лица на «зафотошопленных» фото. Также надо учитывать и то, что объективные формы могут не такими, какими они кажутся на фотографии, и придётся искать любые зацепки в других ракурсах. Сильно бликующая кожа тоже портит восприятие формы лица, в этом случае с фотографией можно поработать в фотошопе и заглушить мешающие блики.
3.8. Метод наложения фотографии на модель.
Этот метод используется для быстрого поиска формы лица, однако при неправильном использовании этого метода, можно сильно исказить лицо. Для того чтобы избежать подобных искажений, нужно правильно выставить перспективу и ракурс. Найти точки опоры и оси лица. Одна из таких вспомогательных осей, это линия между основанием носа и мочкой уха. Угол поворота анфас-профиль можно ровнять по линии глаз. При этом нужно обязательно учитывать перспективные искажения. Так как два фото при разных полях зрения и углах обзора (например, профиль и полуанфас) при наложении никогда не сведут модель в единый объективный образ.
Негативная сторона такого метода ещё и в том, что лицо может сойтись с фото, даже может быть в некотором проценте случаев согласовано, но фактически в печати будет выглядеть совершенно иначе и расходиться с объективным лицом. Например, в печати лицо может быть более узким. Такие ошибки возникают при недостаточном количестве сведений фотографий с моделью, либо при неверном соотнесение углов лица на фото и угла модели. В идеале лицо должно сходиться с фото как минимум в 4-5 разных ракурсах.
В процессе создания портрета художник привыкает к лицу. Из-за этого, некоторые уникальные особенности лица, воспринимаются им уже не так уникально, либо художник начинает принижать значение некоторые особенностей лица, дабы подчеркнуть его незначительные особенности. Проблема заключается в том, что когда мы первый раз видим лицо какого-то человека, то мы его воспринимаем, основываясь на своем опыте увиденных нами лиц. Наш мозг устроен так, что он склонен подчеркивать и запоминать различия или особенности лица, по сравнению с ранее увиденными лицами. Это требует минимум энергии для запоминания. При долгой же работе с лицом, мы принимаем все особенности этого лица как само собой разумеющееся и не отходящее от среднего лица. Это накладывает искажения на восприятие лица. Несмотря на все это, лицо увиденное в первый раз на фотографии, также может быть изначально неправильно прочитано и воспринято, но это уже совокупность всех вышеописанных проблем восприятия. Желательно делать перерывы при моделировании лица, отвлекаться, рассматривать другие лица. Этот простой метод помогает начать заново, свежо воспринимать создаваемое лицо.
3D-модель по фотографии: от А до Я
324 2.3601851851852 5
Создание 3D-модели объекта по фотографиям относится к дисциплине фотограмметрии. Существует два больших направления в фотограмметрии:
фототопография, которая помогает составлять карты и планы местности;
прикладная фотограмметрия, которая нужна в строительстве, архитектуре и криминалистике.
Для производства также используют 3D-моделирование по фотографии. С помощью набора фото можно произвести точную 3D-модель и создать копию объекта.
Изначально фотограмметрия использовалась только для воссоздания ландшафтов и построения карт. Сегодня она работает лучше, так как мощные цифровые камеры позволяют получить качественное изображение объекта, что упрощает процесс 3D-моделирования.
3D-объект из фотографий — статуэтка по фото
3D-моделирование по фотографии: техники
Основная причина использования этого метода — отсутствие чертежей или самого объекта рядом с 3D-моделлером. Эта технология полезна тем, что позволяет моделировать большие объекты, не снимая замеры. Также она подходит для территорий или объектов, находиться на которых человеку небезопасно.
3D-моделирование по фотографии также используют археологи, чтобы презентовать результаты раскопок.
3D-модель фигурки по фото
Сделать 3D-модель по фотографии: применение в кино и играх
Сфера развлечений — еще одна область, где применяется построение 3D-модели по фотографии. В случае с кинофильмами моделирование нужно для спецэффектов и комбинирования кадров. Для игр и мультфильмов нужны люди-прототипы.
На основе их фотографий рисуют персонажей, это добавляет им реалистичности и гармонизирует персонажа. Так, прототипом джина из «Алладина» стал Робин Уильямс, а характерная внешность злой королевы из белоснежки — заслуга Джоан Кроуфорд, звезды первой величины эпохи Золотого Голливуда.
В прошлом, чтобы придумать мультипликационному или игровому герою характеристики живого человека, нужен был художник. Сегодня в этом помогут специальные программы, о них расскажем ниже. А если вам нужен полностью новый персонаж, обратитесь в KLONA: у нас есть подразделение аниматоров.
Изготовление 3D-модели по фотографии: пример Disney
Разработка 3D-модели по фото: услуги прототипирования
В случае, если у заказчика есть фотографии готового изделия, копия или вариация которого нужна, 3D-модель можно изготовить по ним. Важно, что если деталь сложная, то нужно много фото с разных ракурсов. Конечно же, если есть возможность предоставить 3D-моделлеру само изделие, а не фото, лучше так и сделать.
3D-модель по фотографии: промдизайн
Создание 3D-модели по фотографии поможет быстро сориентироваться и оценить сроки разработки реальной модели. Для прикидки перед основным моделированием это хороший вариант. Однако это не подходит для сложных изделий с большим количеством неровностей, углов или для дизайнерских предметов. В подобных случаях проще будет создать 3D-модель с нуля.
Построение 3D-модели по фотографии: правила
Для получения качественной и точной 3D-модели нужно придерживаться определенных правил.
Делайте фотографию в фокусе. Удобнее всего выполнить это условие, если объект расположить на вращающейся платформе. Камеру нужно поставить недалеко и расположить ее на штативе. Так объект всегда будет в центре, и можно будет поймать все нужные углы. Важно, что способ подходит только для небольших объектов.
Большой объект может не получится вращать. Если платформу для автомобиля найти еще реально, то вращать жилое здание не получится, если вы не Халк, конечно же. Поэтому придется вращаться вокруг объекта, держа всегда одинаковую дистанцию, с какой бы стороны ни велась съемка. Если все это вызывает затруднения, то можно вызвать фотографа компании KLONA, и он сделает снимки вместо вас. Также, если фотографировать совсем не получается, можно снять замеры с изделия.
Фотокамеру нужно позиционировать в вертикальной и горизонтальной плоскости, поэтому штатив должен быть с уровнем.
Обязательными являются как минимум 3 фотографии предмета: нужен вид сбоку, спереди и сверху. Необязательным, но желательным, является фото в полупрофиль.
Построение 3D-модели по фото: дополнительные рекомендации
Результат будет лучше, если поместить объект на однотонном фоне.
Фон с маркировкой — калиброванный стенд, он поможет получить более точную 3D-модель.
Высота и ширина всех изображений не должны отличаться.
Важно пронумеровать все изображения, разместив их последовательно.
Создание 3D-модели по фотографии: обзор программного обеспечения
В этом разделе мы расскажем о программах, которые помогут превратить набор фотографий в 3D-модель, однако важно помнить, что они любительские и используются для малобюджетных проектов. И если вам нужна качественная 3D-модель, с помощью которой нужно изготовить партию изделий, обратитесь в студию КЛОНА. С нами вы быстрее получите требуемый результат.
CrazyTalk — программа для создания лицевой анимации. В нее встроена технология 3D Head Creation, что повышает точность полученных моделей. Также она позволяет имитировать движение губ, что увеличивает реалистичность.
3D-моделирование и лицевая анимация по фотографии
FaceGen — программа для моделирования лиц в игровой анимации. Среди полезных функций — ползунок, который позволяет видоизменять полученное изображение. Вы имели дело с таким, если хоть раз создавали персонажа в игре Sims.
Headshop — программа для моделирования лиц по портретным фотографиям. Кроме загрузки фото потребуется отметить на них опорные точки, и лишь потом приступить к моделированию.
Strata Foto 3D — программа, которая превращает фотографии в 3D-модели. Её главным преимуществом является возможность импортировать и экспортировать изображения в Photoshop. В отличие от предыдущих примеров, Starta в основном используется для интернет-магазинов и приложений.
3D-объект из фотографий: Starta
360.3D — более функциональная программа, для которой потребуется от 4 до 8 фотографий изделия. В программном обеспечении предусмотрено 3 уровня работы в зависимости от навыков моделлера. Она подходит для профессиональных разработчиков и для начинающих специалистов, нужно только выбрать свой уровень подготовки. 360.3D лучше всего подходит для создания виртуальных туров. Среди функций — возможность настроить фон, выставить свет и добавить анимационные эффекты.
123В — наиболее простая в применении программа,так как для работы с ней подойдут фото не только с профессиональной камеры, а и изображения, полученные с помощью телевизионной камеры или планшета. Она популярна среди новичков и тех, кто пользуется трехмерным редактором Autodesk, так как 123В выпустили ее создатели.
3D-моделирование по фотографии: главные моменты
Для того чтобы 3D-модель получилась, потребуются снимки высокого качества и правильно выставленный кадр. Если это не вариант, подумайте о других опциях.
В любом случае потребуется редактирование полученной 3D-модели, а для сложных моделей этот процесс может затянуться.
Если внутри модели есть детали или что-то, что нужно отразить, то придется моделировать вручную.
3D-модели, полученные после фотомоделирования, могут значительно отличаться габаритами от исходного предмета.
3D-моделирование по фотографии: преимущества
Позволяет создать 3D-модель габаритного объекта.
Дает возможность моделировать существующие объекты, не сталкиваясь с ними вживую.
Позволяет не проводить замеры предмета.
Сделать 3D-модель по фотографии можно, не имея чертежей.
Разрешает не обращать внимания на внутреннее устройство объекта.
Подходит для 3D-моделирования лиц и используется при разработке малобюджетных игр и анимации.
Также используется для создания виртуальных туров по салонам, гостиницам и торговым центрам, демонстрации товаров в онлайн-магазинах.
Является хорошим способом, если нужно один раз напечатать 3D-модель объекта и важен сам факт ее наличия, а не качество.
3D-модель по фотографии — быстрый и относительно простой способ создания модели, так как программное обеспечение позволяет частично автоматизировать процесс. Если ваши требования совпадают с одним из пунктов списка, стоит заказать 3D-моделирование по фотографии в KLONA. Расскажите нам о своей задаче, и менеджеры вам помогут.
3D-реконструкция лиц по фотографии и их анимация с помощью видео. Лекция в Яндексе
В фильме «Миссия невыполнима 3» был показан процесс создания знаменитых шпионских масок, благодаря которым одни персонажи становятся неотличимы от других. По сюжету, сначала требовалось сфотографировать того, в кого герой хотел превратиться, с нескольких ракурсов. В 2018 году простую 3D-модель лица можно пусть и не напечатать, но, по крайней мере, создать в цифровом виде — причём на основе всего одной фотографии. Научный сотрудник VisionLabs подробно описал процесс на мероприятии Яндекса «Мир глазами роботов» из серии Data&Science — с детализацией до конкретных методов и формул.
— Добрый день. Меня зовут Николай, я работаю в компании VisionLabs, которая занимается компьютерным зрением. Наш основной профиль — распознавание лиц, но также у нас есть технологии, которые применимы в дополненной и виртуальной реальности. В частности, у нас есть технология построения 3D-лица по одному фото, и сегодня я буду рассказывать о ней.
Начнем с рассказа о том, что это такое. На слайде вы видите исходную фотографию Джека Ма и 3D-модель, построенную по этой фотографии в двух вариациях: с текстурой и без текстуры, просто геометрию. Это задача, которую мы решаем.
Также мы хотим иметь возможность анимировать эту модель, менять направление взгляда, выражение лица, добавлять мимику и т. д.
Приложение находится в разных областях. Самое очевидное — игры, в том числе VR. Ткже можно делать виртуальные примерочные — примерять очки, бороды и прически. Можно делать 3D-печать, потому что некоторым людям интересны персонализированные аксессуары под их лицо. И можно делать лица для роботов: как печатать, так и показывать на каком-нибудь дисплее на роботе.
Я начну с рассказа о том, как вообще можно генерировать 3D-лица, и потом мы перейдем к задаче 3D-реконструкции как обратной задаче генерации. После этого мы остановимся на анимации и перейдем к челледжам, которые возникают в этой области.
Что такое задача генерации лиц? Нам хотелось бы иметь некоторый способ генерировать трехмерные лица, различающиеся формой и выражением. Здесь два ряда с примерами. Первый ряд показывает лица, отличающиеся формой, принадлежащие как будто разным людям. А снизу одно и то же лицо, имеющее разное выражение.
Один из способов решения задачи генерации — деформируемые модели. Крайнее левое лицо на слайде — некая усредненная модель, к которой мы можем применять деформации с помощью настраивания ползунков. Здесь представлено три ползунка. В верхнем ряду идут лица в сторону увеличения интенсивности ползунка, в нижнем ряду — в сторону уменьшения. Таким образом, мы будем иметь несколько настраиваемых параметров. Устанавливая их, можно придавать лицам разные формы.
Примером деформируемой модели является знаменитая Basel Face Model, построенная из сканов лиц. Чтобы построить деформируемую модель, нужно для начала взять несколько людей, привезти их в специальную лабораторию и отснять их лица специальным оборудованием, переведя их в 3D. Потом на основе этого можно делать новые лица.
Как это устроено математически? Мы можем представить трехмерную модель лица как вектор в 3n-мерном пространстве. Здесь n — количество вершин в модели, каждой вершине соответствует три координаты в 3D, и таким образом мы получаем 3n-координаты.
Если мы имеем набор сканов, то каждый скан представлен таким вектором, и мы имеем набор из n таких векторов.
Далее мы можем строить новые лица как линейные комбинации векторов из нашей базы. При этом нам хотелось бы, чтобы коэффициенты были какие-то осмысленные. Очевидным образом они не могут быть совсем произвольными, и я скоро покажу почему. Одним из ограничений можно установить, чтобы все коэффициенты лежали в промежутке от 0 до 1. Это нужно делать, потому что если коэффициенты будут совсем произвольными, то лица будут получаться неправдоподобные.
Здесь хотелось бы придать параметрам какой-то вероятностный смысл. То есть мы хотим смотреть на набор параметров и понимать, правдоподобное получится лицо или нет. Этим мы хотим добиться того, чтобы искаженным лицам соответствовали низкие вероятности.
Вот как это можно сделать. Мы можем применить метод главных компонент к набору сканов. На выходе мы получим усредненное лицо S0, получим матрицу V, набор главных компонент, а также получим вариации данных вдоль главных компонент. Тогда мы сможем по-новому взглянуть на генерацию лиц, мы будем представлять лица как некоторое усредненное лицо, плюс матрица главных компонент, умноженная на вектор параметров.
Значение параметров — это те самые интенсивности ползунков, о которых я говорил на одном из ранних слайдов. А также мы можем приписать вектору параметров некоторое вероятностное значение. В частности мы можем договориться, чтобы этот вектор был гауссовским.
Таким образом у нас получается метод, который позволяет генерировать 3D-лица, и эта генерация управляется следующими параметрами. Как на предыдущем слайде, мы имеем два набора параметров, два вектора α id и α exp, они такие, как на предыдущем слайде, но α id отвечает за форму лица, а α exp будет отвечать за эмоцию.
Также появляется новый вектор T — вектор текстуры. Он имеет такую же размерность, как вектор формы, и каждой вершине в этом векторе соответствуют три RGB-значения. Аналогичным образом вектор текстуры генерируется с помощью вектора параметров β. Здесь не формализованы параметры, которые будут отвечать за освещение лица и за его положение, но они также существуют.
Вот примеры лиц, которые можно генерировать с помощью деформированной модели. Обратите внимание, что они различаются формой, цветом кожи, а также прорисованы в разных условиях освещения.
Теперь мы можем перейти к 3D-реконструкции. Это называется обратной задачей, потому что мы хотим подобрать такие параметры для деформируемой модели, чтобы то лицо, которое мы из нее нарисуем, было как можно больше похоже на оригинал. Этот слайд отличается от первого тем, что здесь справа лицо является полностью синтетическим. Если на первом слайде наша текстура была взята из фотографии, то здесь текстура была взята из деформируемой модели.
На выходе мы будем иметь все параметры, на слайде представлены α id и α exp, а также будем иметь освещение, параметры текстуры и т. д.
Мы говорили, что хотим добиться того, чтобы генерируемая модель была похожа на фотографию. Эта похожесть определяется с помощью функции энергии. Здесь мы просто берем попиксельную разность изображений в тех пикселях, где мы считаем, что лицо видно. Например, если лицо будет повернуто, то возникнут перекрытия. Например, часть скулы будет закрыта носом. И матрица видимости M такое перекрытие должна отобразить.
По сути, 3D-реконструкция заключается в минимизации этой функции энергии. Но чтобы эту задачу минимизации решить, было бы хорошо иметь инициализацию и регуляризацию. Регуляризация нужна по понятной причине, как мы говорили, что если мы не будем регуляризировать параметры и делать их совсем уж произвольными, то могут получиться искаженные лица. Инициализация нужна, потому что задача в целом сложная, у нее есть локальные минимумы, и с ними не хочется иметь дела.
Как можно делать инициализацию? Для этого можно использовать 68 ключевых точек лица. Начиная с 2013-2014 года появилось очень много алгоритмов, которые позволяют с довольно хорошей точностью детектировать 68 точек, и сейчас они приближаются к сатурации своей точности. Поэтому мы имеем способ надежно детектировать 68 точек лица.
Мы можем добавить в нашу функцию энергии новое слагаемое, которое будет говорить о том, что мы хотим, чтобы проекции таких же 68 точек модели совпадали с ключевыми точками лица. Мы размечаем эти точки на модели, потом модель как-то деформируем, крутим, проецируя точки, и следим за тем, чтобы положения точек совпадали. На левой фотографии точки двух цветов, фиолетового и желтого. Одни точки были детектированы алгоритмом, а другие — спроецированы из модели. Справа разметка точек на модели, но для точек по краю лица размечена не одна точка, а целая линия. Это сделано, потому что когда лицо поворачивается, разметка этих точек должна измениться, и точка выбирается с линией.
Вот слагаемое, о котором я говорил, оно представляет собой покоординатную разность двух векторов, которые описывают ключевые точки лица и ключевые точки, спроецированные из модели.
Вернемся к регуляризации и рассмотрим всю задачу с позиции Байесовского вывода. Вероятность того, что вектор α равен чему-то заданному при известном изображении пропорциональна произведению вероятности наблюдать изображение при заданном α, помноженная на вероятность α. Если мы возьмем отрицательный логарифм от этого выражения, который мы должны будем свести к минимуму, то мы увидим, что слагаемое, отвечающее за регуляризацию, здесь будет иметь конкретный вид. В частности это второе слагаемое. Вспоминая, что ранее мы сделали предположение, что вектор α гауссовский, мы увидим, что слагаемое, отвечающее за регуляризацию, это сумма квадратов параметров, приведенных к вариациям вдоль главных компонент.
Итак, мы можем выписать полную функцию энергии, содержащую в себе три слагаемых. Первое слагаемое отвечает за текстуру, за разность пикселей между генерируемым изображением и целевым изображением. Второе слагаемое отвечает за ключевые точки, и третье отвечает за регуляризацию.
Коэффициенты при слагаемых в процессе минимизации не оптимизируются, они просто заданы.
Здесь функция энергии представлена как функция всех параметров. α id — параметры формы лица, α exp — параметры выражения, β — параметры текстуры, р — прочие параметры, о которых мы поговрили, но не формализовали их, это параметры положения и освещения.
Остановимся на таком замечании. Эту функцию энергии можно упростить. Из нее можно выбросить слагаемое, которое отвечает за текстуру, и использовать только информацию, передаваемую 68 точками. И это позволит построить какую-то 3D-модель. Однако обратите внимание на профиль модели. Слева представлена модель, построенная только по ключевым точкам. Справа представлена модель с использованием текстуры при построение. Обратите внимание, что справа профиль получается более соответствующий центральной фотографии, которая представляет фронтальный вид лица.
Анимация при имеющемся алгоритме построения 3D-модели лица работает достаточно просто. Вспомним, что при построении 3D-модели мы получаем два вектора параметров, один отвечает за форму, другой — за выражение. Эти векторы параметров у пользователя и у аватара всегда будут свои. У пользователя один вектор параметров формы, у аватара он другой. Однако мы можем сделать так, чтобы векторы, отвечающие за выражение, у них стали одинаковы. Мы возьмем параметры, отвечающие за выражение лица пользователя, и просто подставим их в модель аватара. Таким образом мы перенесем выражение лица пользователя на аватар.
Поговорим о двух челеджах в этой области: скорость работы и ограниченность деформируемой модели.
Скорость работы — действительно проблема. Минимизация полной функции энергии очень вычислительноемкая задача. В частности, она может занимать от 20 до 40, в среднем 30 секунд. Это достаточно долго. Если мы будем строить трехмерную модель только по ключевым точкам, получится гораздо быстрее, но от этого пострадает качество.
Как с этой проблемой можно бороться? Можно использовать больше ресурсов, некоторые люди решают эту задачу на GPU. Можно использовать только ключевые точки, но при этом пострадает качество. И можно использовать методы машинного обучения.
Посмотрим по порядку. Вот работа 2016 года, в которой переносится выражение лица пользователя на некоторое заданное видео, вы можете управлять видео с помощью вашего лица. Здесь построение 3D-модели производится в реальном времени с использованием GPU.
Вот методы, которые используют машинное обучение. Идея в том, что мы можем сначала взять большую базу лиц, для каждого лица долгим, но точным алгоритмом построить 3D-модели, каждую модель представить как набор параметров, и дальше обучить сетку эти параметры предсказывать. В частности, в этой работе 2016 года используется ResNet, который на вход берет изображение, а на выход дает параметры модели.
Трехмерную модель можно представлять и по-другому. В этой работе 2017 года 3D-модель представляется не как набор параметров, а как набор вокселей. Сеть предсказывает воксели, превращая картинку в некоторое трехмерное представление. Стоит заметить, что возможны варианты обучения сети, для которых 3D-модели вообще не требуются.
Это работает следующим образом. Здесь наиболее важная часть — слой, который может взять на вход параметры деформируемой модели и срендерить картинку. Он обладает таким замечательный свойством, что через него можно делать обратное распространение ошибки. Сеть принимает на вход изображение, предсказывает параметры, скармливает эти параметры слою, который рендерит изображение, сравнивает это изображение с входным, получает ошибку, делает обратное распространение ошибки и продолжает обучаться. Таким образом сеть учится предсказывать параметры трехмерной модели, имея в качестве обучающих данных только картинки. И это очень интересно.
Мы много говорили о точности — в частности, что она страдает, если мы выбрасываем какие-то слагаемые из функции энергии. Давайте формализуем, что это значит, как можно оценить точность 3D-реконструкции лица. Для этого нужна база ground truth сканов, полученных с помощью специального оборудования, с помощью методов, относительно которых есть какие-то гарантии точности. Если такая база есть, то мы можем наши реконструируемые модели сравнивать с ground truth. Это делается просто: мы считаем среднее расстояние от вершин нашей модели, которую мы построили, до вершин в ground truth, и нормируем на размер скана. Это нужно делать, потому что лица бывают разные, какие-то больше, какие-то меньше, и на маленьком лице ошибка была бы меньше, просто потому что само лицо меньше. Поэтому нужна нормировка.
Я хотел бы рассказать про нашу работу, она будет на воркшопах, есть ECCV. Мы делаем похожие вещи, мы обучаем MobileNet предсказывать параметры деформируемой модели. В качестве обучающих данных мы используем 3D-модели, построенные для фотографий из датасета 300W. Оцениваем точность на базе сканов BU4DFE.
Вот что получается. Мы сравниваем два наших алгоритма с state of the art. Желтая кривая на этом графике — алгоритм, который занимает 30 секунд и заключается в минимизации полной функции энергии. Здесь по оси Х — ошибка, о которой мы только что говорили, среднее расстояние между вершинами. По оси Y — доля изображений, на которых эта ошибка меньше, чем та, что на оси X. На этом графике чем выше кривая, тем лучше. Следующая кривая — наша сеть, основанная на архитектуре MobileNet. Далее три работы, о которых мы говорили. Сеть, предсказывающая параметры, и сеть, предсказывающая воксель.
Также мы сравнивали нашу сеть с аналогами в терминах размера модели и скорости работы. Здесь получается выигрыш, поскольку мы используем MobileNet, достаточно легкий.
Второй челендж — ограниченность деформируемой модели.
Обратите внимание на левое лицо, посмотрите на крылья носа. Здесь тени на крыльях носа. Границы теней не совпадают с границами носа на фотографии, таким образом получается дефект. Причиной этого может быть то, что деформируемая модель в принципе не способна построить нос требуемой формы, потому что эта деформируемая модель была получена из сканов всего 200 лиц. Нам хотелось бы, чтобы нос все-таки был правильный, как на правой фотографии. Таким образом, нам нужно за рамки деформируемой модели как-то выйти.
Это можно делать с помощью непараметрической деформации меша. Вот три задачи, которые мы хотели бы решить: модифицировать локальную часть лица, например нос, потом ее встроить в исходную модель лица, да еще и так, чтобы все остальное оставить неизменным.
Это можно делать следующим образом. Вернемся к обозначению меша как вектора в 3n-мерном пространстве и посмотрим на оператор усреднения. Это оператор, который в S с шапкой заменяет каждую вершину на среднее ее соседей. Соседи вершины — это те, что соединены с ней ребром.
Мы определим некоторую функцию энергии, описывающую положение вершины относительно ее соседей. Мы хотим, чтобы положение вершины относительно ее соседей оставалось неизменным или хотя бы менялось не сильно. Но при этом мы будем как-то модифицировать S. Эта функция энергии называется внутренней, потому что также будет присутствовать некоторое внешнее слагаемое, которое будет говорить о том, что, например, нос должен принять заданную форму.
Такие техники применялись, например, в работе 2015 года. Они делали 3D-реконструкцию лиц по нескольким фотографиям. Делали несколько фотографий с телефона, получали облако точек, а дальше адаптировали модель лица к этому облаку с помощью непараметрической модификации.
За рамки деформируемой модели можно выйти и другим способом. Остановимся на действии оператора сглаживания. Здесь для простоты представлен двумерный меш, к которому был применен этот оператор. На модели слева есть много деталей, на модели справа эти детали были сглажены. А можем ли мы что-то сделать, чтобы детали добавить, а не убрать?
Для ответа мы можем посмотреть на базис векторов оператора сглаживания. Оператор сглаживания модифицирует коэффициенты меша в разложении по этому базису.
Обязательно ли решать задачу таким образом? Можно делать и по-другому: просто модифицировать эти коэффициенты каким-то внешним образом. Давайте просто возьмем несколько первых векторов оператора сглаживания и добавим его в нашу деформируемую модель как новый набор ползунков. Такая техника действительно позволяет получить улучшения, так делается в работе 2016 года. На этом мой доклад завершается, всем спасибо.
Источники информации:
- http://habr.com/ru/post/435842/
- http://compress.ru/article.aspx?id=16596
- http://habr.com/ru/post/423543/
- http://3dnews.ru/624259
- http://sapr.ru/article/25136
- http://ru.widsmob.com/how-to/convert-photo-to-3d.html
- http://3dtoday.ru/blogs/3dklon/3d-modelirovanie-litsa-cheloveka-po-fotografiyam
- http://klona.ru/blog/3d-modelirovanie/3d-model-po-fotografii-ot-a-do-ya
- http://habr.com/ru/company/yandex/blog/421353/