2012-01-21 21 views
17

Stavo controllando questa fantastica app chiamata Morfo. Secondo la loro descrizione del prodotto -iOS - Immagine 2D trasformata in 3d

Usa Morfo di trasformare rapidamente una foto del volto di un amico in un parlare, ballare, personaggio 3D pazzo! Una volta catturato, puoi fare in modo che il tuo amico dica tutto ciò che vuoi con una voce stupida, rock out, truccarsi, sport un paio di enormi occhi verdi per gatti, improvvisamente guadagnare 300 libbre e altro ancora.

Quindi, se si prende una normale immagine 2D di steve jobs & alimentarlo a questa applicazione che converte in un modello 3D di quell'immagine & l'utente può interagire con esso.

enter image description here

Le mie domande sono le seguenti -

  1. Come stanno facendo questo?
  2. Come è possibile in iPad?
  3. Non è computazionalmente intensivo il rendering e la conversione di immagini 2D in 3D?

Eventuali puntatori, collegamenti a siti Web o librerie in objectiveC che fanno questo è molto apprezzato.

UPDATE: questa demo di this product here mostra come morfo, utilizza un meccanismo di modello per eseguire la conversione. Ad esempio, dopo aver alimentato un'immagine 2D, è necessario impostare i limiti del viso, dove si trovano gli occhi, dimensione & lunghezza delle labbra. poi si spegne per convertirlo in un modello 3D. Come viene eseguita questa parte? Quali strutture o librerie potrebbero usare?

+0

perché vicino a questa domanda? Cosa c'è che non va? –

+0

Troppo ampio, secondo me. –

+5

@rob bene il suo ampio perché non ho idea da dove iniziare. questo era un posto in cui tali discussioni si verificavano fino a un anno fa. Oggigiorno una zelante moderazione ha ridotto il divertimento. –

risposta

9

A mio parere, c'è come lo fanno. Solo i miei pensieri, non ho visto l'applicazione nella vita reale.

Hanno un modello 3D di testa umana. Quando fai clic su determinati punti sull'immagine 2D, regolano i punti corrispondenti nel modello 3D, quindi rappresenta le caratteristiche di un viso specifico come la distanza tra gli occhi, la larghezza delle labbra e così via. Successivamente, la texture dell'immagine 2D viene applicata al modello 3D utilizzando i punti di controllo, quindi abbiamo un modello 3D strutturato della testa umana. Dato che la nostra percezione è in grado di ricostruire una forma 3D da immagini 2D (diciamo, guardando la foto 2D e ancora immaginando una persona 3D), non è necessario ricostruire accuratamente la forma 3D, la texture farà il lavoro.

+2

Questo deve essere come lo stanno facendo, perché la tecnica non è affatto difficile. Infatti, [texture mapping] (http://www.gamedev.net/page/resources/_/technical/opengl/opengl-texture-mapping-an-introduction-r947) (clicca sul link per il codice) - mappatura da un'immagine bidimensionale 2D a un modello 3D - è una delle tecniche grafiche 3D più basilari ed è incredibilmente ottimizzata nell'hardware per renderlo _molto_ economico. È così semplice, suppongo che abbiano fatto da soli, motivo per cui non si ottiene una risposta sulla falsariga di "Use the FaceMapping lib". È come chiedere a una biblioteca di aggiungere un numero intero. – Matt

+0

@Matt Questo mostra come OpenGL non funziona come funziona OpenGLES, nota che la risposta sotto è più definitiva a "come lo faresti su iOS" che era la domanda originale. – Dev2rights

1

Non è computazionalmente intenso eseguire il rendering e convertire l'immagine 2D in 3D?

Apple sta affondando miliardi di dollari nello sviluppo di chipset personalizzati, e i modelli recenti hanno prestazioni impressionanti, considerando la durata della batteria e la bassa temperatura operativa (senza ventole).

14

Questa è una domanda ampia ma posso indicarti la direzione giusta di come funziona il rendering 3D, credetemi, questo è un argomento enorme con decenni di lavoro alle spalle e molto da mettere qui. Non sei sicuro di quanto sei veloce con le tecniche di rendering 3D, quindi ti darò un'idea di base della texturing e ti indicherò un buon set di tutorial.

  1. Come stanno facendo questo?
    L'idea è che nel rendering 3D, i modelli 3D possono essere strutturati con un'immagine 2D nota come una mappa texture. Si utilizza un'immagine 2D e si avvolge attorno a un modello 3d, sia che si tratti di un semplice primitivo come una sfera di un cubo o più avanzato come la teiera classica o il modello di una testa umana e.t.c. Una trama può essere presa da qualsiasi luogo, ho usato il feed della fotocamera in passato per tessere le mesh con il video dal flusso della fotocamera, ho usato le foto dalla fotocamera, ecco come si fa. Ecco come viene reso il volto al modello 3D.

  2. È efficiente?
    Su iOS e sulla maggior parte dei dispositivi mobili il rendering 3D utilizza l'accelerazione hardware che utilizza OpenGLES. Per quanto riguarda la tua domanda questo è molto veloce a seconda di come si implementa il codice di rendering.

Il modo in cui utilizza la mappatura (modello rotazione scala nel video), come citato da anticyclope consente di effettuare la consistenza adatta un modello e anche posizionare gli occhi che fanno parte di lì il rendering del codice.

Quindi, se si vuole prendere questo vi consiglio di leggere Jeff Lamarche Tutorial "da zero" come primer:

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

Secondo a che ho letto circa 4 libri su OpenGLES, per design generale e specifiche per piattaforme. Vi consiglio questo libro:

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

+0

come potrei creare un modello 3D generico di una testa umana? OpenGL ES? Ci sono molti framework su questo giusto? quale usare? –

+0

anche io penso di sapere come è stata fatta quell'app. Per prima cosa costruisci un generico modello di testa umana 3D. Poi quando prende una foto 2D e la avvolge attorno a questo modello 3D. Voilà hai l'app. Se questo flusso è corretto, puoi provare a rispondere alla mia domanda precedente? su come dovrei creare un modello 3D generico di una testa umana? e come si può avvolgere un'immagine 2D sul modello 3D? grazie ... –

+1

Ben leggendo i tutorial di Lamarche, alla fine spiega come creare un modello in Blender. Usiamo il frullatore, ma il nostro artista fa la modellazione come ho le abilità artistiche di 3 anni con vernici a polvere. Ma leggi le cose di Lamarche che ti mostra come esportare un file .OBJ e importarlo. MA NON FACCIO *** prova a correre prima che tu possa camminare con questa roba, mi ci è voluto molto tempo per farcela e mi sono buttato a calci per cercare di affrettarlo. Quindi ricevo la taglia? – Dev2rights

4

C'è un problema nel rendering di immagini 3D, chiamato UV mapping, prende il modello 3D e definisce un insieme di archi, e questo crea un'immagine che viene utilizzato per generare diversi trame al modello.

Ora se si nota in Morfo, si definisce il bordo della testa, occhi, bocca e naso. con queste informazioni il Morfo sa come posizionare la trama sul modello che ha definito.

il processo di caricamento una texture su un modello non è molto complesso e questo può essere fatto su qualsiasi dispositivo che ha il supporto di alcune tecnologie come OpenGL

+1

Se è possibile in opengles puoi per favore fornitemi le API in opengl per realizzare questo? – 2vision2

+0

farlo direttamente in OpenGL ES non è così semplice, e devi implementare diverse cose, ma puoi iniziare leggendo a riguardo, [qui] (http://iphonedevelopment.blogspot.com/2009/05/opengl-es- from-ground-up-part-6_25.html) puoi trovare un tutorial per iphone – rkmax

+0

Grazie ... dal tutorial, ho avuto modo di sapere cosa e come fare il mapping delle texture ... Quindi, in morfo c'è solo la mappatura delle texture abbastanza? Se possibile, puoi fornire ulteriori informazioni per iniziare? – 2vision2

Problemi correlati