iOS - 2d изображение превращается в 3d - PullRequest
17 голосов
/ 21 января 2012

Я проверял это классное приложение под названием Morfo . Согласно их описанию продукта -

Используйте Morfo, чтобы быстро превратить фотографию лица вашего друга в говорить, танцевать, безумный 3D персонаж! После захвата вы можете сделать друг скажи что хочешь глупым голосом, качайся, носи макияж, спортивные пары огромных зеленых кошачьих глаз, внезапно набирают 300 фунтов и больше.

Таким образом, если вы возьмете обычное 2D-изображение работы Стива и загрузите его в это приложение, оно преобразует его в 3D-модель этого изображения, и пользователь сможет взаимодействовать с ним.

enter image description here

Мои вопросы следующие -

  1. Как они это делают?
  2. Как это возможно в iPad?
  3. Разве это не требует больших вычислительных ресурсов для рендеринга и преобразования 2D-изображений в 3D?

Любые указатели, ссылки на веб-сайты или библиотеки в targetC, которые делают это, очень приветствуются.

ОБНОВЛЕНИЕ: эта демонстрация этот продукт здесь показывает, как morfo использует шаблонный механизм для преобразования. после подачи двумерного изображения необходимо установить границы лица, где расположены глаза, размер и длину губ. тогда это уходит, чтобы преобразовать это в трехмерную модель. Как эта часть сделана? Какие фреймворки или библиотеки они могут использовать?

Ответы [ 4 ]

14 голосов
/ 07 марта 2012

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

  1. Как они это делают?
    Идея состоит в том, что в 3D-рендеринге 3D-модели могут быть текстурированы с помощью 2D-изображения, известного как карта текстуры. Вы используете 2D-изображение и оборачиваете его вокруг 3d-модели, будь то простой примитив, такой как сфера куба, или более продвинутый, такой как классический чайник или модель человеческой головы и т. Д. Текстуру можно взять откуда угодно, в прошлом я использовал подачу камеры для текстурной сетки с видеоизображением из потока камеры, я использовал фотографии с камеры, как это делается. Так вот как лицо отображается в 3D-модели.

  2. Это эффективно?
    На iOS и большинстве мобильных устройств 3D-рендеринг использует аппаратное ускорение с использованием OpenGLES. Что касается вашего вопроса, это действительно быстро, в зависимости от того, как вы реализуете свой код рендеринга.

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

Так что, если вы хотите поднять это, я рекомендую прочитать учебник Джеффа Ламарша "с нуля" в качестве учебника для начинающих:

http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html

Во-вторых, я прочитал около 4 книг по OpenGLES для общего дизайна и специфики платформ. Я рекомендую эту книгу:

http://www.amazon.co.uk/iPhone-Programming-Developing-Graphical-Applications/dp/0596804822/ref=sr_1_1?ie=UTF8&qid=1331114559&sr=8-1

9 голосов
/ 21 января 2012

На мой взгляд, есть, как они это делают. Только мои мысли, не видел применения в реальной жизни.

У них есть 3D-модель головы человека. Когда вы нажимаете на определенные точки на 2D-изображении, они корректируют соответствующие точки в 3D-модели, поэтому она представляет особенности определенного лица, такие как расстояние между глазами, ширина губ и так далее. Затем текстура из 2D-изображения применяется к 3D-модели с использованием этих контрольных точек, поэтому у нас есть текстурированная 3D-модель головы человека. Учитывая тот факт, что наше восприятие способно реконструировать 3D-фигуру из 2D-изображений (скажем, мы смотрим на 2D-фотографию и все еще воображаем 3D-человека), нет необходимости точно восстанавливать 3D-фигуру, текстура будет работать.

4 голосов
/ 08 марта 2012

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

Теперь, если вы заметили в Morfo, вы определяете край головы, глаз, рта и носа.Имея эту информацию, Morfo знает, как поместить текстуру в определенную модель.

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

1 голос
/ 21 января 2012

Разве это не требует значительных вычислительных ресурсов для рендеринга и преобразования 2D-изображений в 3D?

Apple тратит миллиарды долларов на разработку пользовательских чипсетов, а последние модели обладают впечатляющей производительностью, учитываясрок службы батареи и низкая рабочая температура (без вентиляторов).

...