Хобрук: Ваш путь к мастерству в программировании

iOS - 2D-изображение превращается в 3D

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

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

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

введите здесь описание изображения

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

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

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

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


  • зачем закрывать этот вопрос? что не так? 21.01.2012
  • @rob хорошо, это широко, потому что я понятия не имею, с чего начать. это было место, где такие обсуждения происходили еще год назад. В наши дни ревностная умеренность уменьшила удовольствие. 21.01.2012
  • @Srikar Получили ли вы какие-либо окончательные решения ваших вопросов? 07.09.2012
  • @ Шрикар Мне нужны подобные вещи. Есть ли для этого какие-либо веб-API? Есть ли у вас какие-либо предложения сделать это будет высоко оценен. 07.09.2012
  • @IOSCODER вы прочитали ответы? чего именно вы пытаетесь достичь? 08.09.2012
  • @Srikar Моя основная цель: преобразовать 2D-изображение в 3D в ios. Я ищу любой API, который будет конвертировать 2D в 3D означает, что если я загружу 2D-изображение в этот API, он вернет мне 3D-изображение в качестве вывода. Да, я их читал, но у меня нет времени изучать opengles. Я хочу, есть ли какое-нибудь быстрое решение? Любая помощь? 08.09.2012
  • @ Шрикар. Большое спасибо! Ваш пост дает мне надежду перейти к приложению, как морфо. Как люди предложили здесь, я отслеживаю все пункты (учебники lamarche), загрузку модели, blender2.64a, экспорт модели в obj или .h. Все было нормально, но теперь чувствую себя как в ловушке. нет идеи двигаться дальше, так как еще много чего нужно сделать, 3d анимация. Скорее загрузка 3D-модели в порядке, как они анимируют модель? поделись опытом, как ты до этого дошел? как далеко вы закончили. Заранее спасибо, если какой-либо пункт очень важен. 18.11.2012
  • @Srikar Вы сделали это приложение? можете ли вы дать свои очки на нем. Я собираюсь начать новый, как то же самое. И любые дополнительные указатели, кроме приведенных ниже ответов, были бы замечательными. 28.02.2013
  • @Srikar Я начинаю награду, чтобы получить за это еще несколько очков. Мне нужно преобразовать 2D-изображение в 3D-лицо. Мне нужно сделать это в openglES. Любые советы или фрагменты кода были бы замечательными. 28.02.2013
  • Не сбрасывайте со счетов айфоны. Это буквально суперкомпьютер: более мощный, чем многие ноутбуки и настольные компьютеры, представленные сегодня на рынке. iPhone 5 может вычислять около 32 гигафлопс, а PS2 — только около 6 гигафлопс. PS3 получает около 100, а средний компьютер — около 7! 07.03.2013
  • @SrikarAppalaraju Я прошел через все, что упоминалось в этом вопросе и ответах. Не могли бы вы помочь мне с этим stackoverflow.com/questions/47413657/ Я хочу визуализировать 3D-модель (рисовать многоугольники) поверх ориентиров лица . Спасибо за ваше время. Ждем вашего драгоценного времени. 22.11.2017
  • @2vision2 Привет, ты решил эту проблему? Если вы нашли решение для преобразования 2D-изображения в 3D-лицо на iOS, не могли бы вы поделиться каким-нибудь простым демонстрационным проектом, как это сделать? Я буду так благодарен за любую помощь. 10.03.2019

Ответы:


1

Это широкий вопрос, но я могу указать вам правильное направление того, как работает 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

07.03.2012
  • как мне создать общую 3D-модель человеческой головы? Опенгл ЕС? Есть много фреймворков поверх этого, верно? какой использовать? 07.03.2012
  • также я думаю, что знаю, как было сделано это приложение. Сначала создайте общую 3D-модель головы человека. Затем, когда он делает 2D-фотографию и оборачивает ее вокруг этой 3D-модели. Вуаля у вас есть приложение. Если этот поток правильный, то не могли бы вы попытаться ответить на мой вопрос выше? о том, как мне создать общую 3D-модель человеческой головы? И как можно наложить 2D-изображение на 3D-модель? спасибо... 07.03.2012
  • Хорошо прочитайте туториалы Lamarche, в конце он расскажет, как сделать модель в Blender. Мы используем блендер, но наш художник занимается моделированием, так как у меня есть 3-летние художественные навыки с порошковыми красками. Но прочитайте то, что Ламарш показывает вам, как экспортировать файл .OBJ и импортировать его. НО НЕ *** пытайтесь бежать, прежде чем вы сможете ходить с этим материалом, мне потребовалось много времени, чтобы справиться с этим, и я ругал себя за попытку поторопиться. Так я получу награду? 07.03.2012
  • о круто, понял. не беспокойтесь. Сама ссылка выше. спасибо 07.03.2012
  • @Sirkar Как у вас дела с уроками Ламарша? Я выиграл очки? 08.03.2012
  • хотя у @anticyclop было несколько хороших моментов, вы получили награду, поскольку дали правильные указатели и помогли мне со ссылками .. 08.03.2012
  • @Dev2rights, у вас есть пример кода с рендерингом фотографий с камеры в 3D-модель? 07.10.2016

  • 2

    По-моему, вот как они это делают. Просто мои мысли, не видел приложение в реале.

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

    21.01.2012
  • Это должно быть так, как они это делают, потому что техника совсем не сложная. Фактически, наложение текстуры (нажмите на ссылку, чтобы увидеть код) — преобразование плоского 2D-изображения в 3D-модель — это один из самых основных методов 3D-графики, который невероятно оптимизирован на аппаратном уровне, что делает его очень недорогой. Это настолько просто, что я бы предположил, что они свернули свои собственные, поэтому вы не получите ответа в духе Use the FaceMapping lib. Это все равно, что просить библиотеку выполнять сложение целых чисел. 08.03.2012
  • @Matt Это показывает, как работает OpenGL, а не как работает OpenGLES, обратите внимание, что приведенный ниже ответ более точен, чем вы могли бы сделать это на iOS, что было исходным вопросом. 08.03.2012

  • 3

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

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

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

    08.03.2012
  • Если это возможно в opengles, не могли бы вы предоставить мне API в opengl для этого? 26.03.2013
  • сделать это напрямую в OpenGL ES не так просто, и вам нужно реализовать несколько вещей, но вы можете начать с чтения об этом, здесь вы можете найти руководство для iphone 26.03.2013
  • Спасибо... из туториала я узнал, что и как делать наложение текстур... Итак, достаточно ли в морфо наложения текстур? Если возможно, не могли бы вы предоставить мне больше информации для начала? 27.03.2013
  • Я хотел бы сделать то же самое, что и морфо.. Как мне быть? Любая помощь.. Спасибо 21.03.2014

  • 4

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

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

    21.01.2012
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..