Come creare un modello 3D della tua testa con Blender e una fotocamera RealSense

Sono molto entusiasta della sensazionalizzazione del computing: un'idea in cui le cose intelligenti percepiscono l'ambiente, sono connesse, quindi diventano un'estensione dell'utente. Asan Intel Software evangelist (e un programmatore di hobbyist confessato), sono abbastanza fortunato da poter sperimentare queste possibilità utilizzando la tecnologia all'avanguardia di Intel. In precedenza, avevo scritto sulla scansione 3D del mondo intorno a te in tempo reale e inserendovi un oggetto virtuale; tuttavia, in questo tutorial, vorrei spiegare come eseguire l'inverso, eseguendo la scansione 3D e aggiungendo la scansione al mondo virtuale.

Più specificamente, noi:

  1. Scansiona la tua testa usando una fotocamera RealSense e l'SDK.
  2. Convertire il file 3D dal formato OBJ al formato PLY (per la modifica in Blender).
  3. Converti i colori dei vertici in una mappa texture UV.
  4. Modifica la mesh 3D per dargli un vertice inferiore e un numero di poligoni.

Finiremo con una maglia colorata 3D della tua testa, pronta per l'uso in Unity. (Nel prossimo tutorial vedremo come realizzarlo in Unity e in cosa potresti utilizzarlo in un gioco.)

Avrai bisogno:

  • Una fotocamera Intel RealSense (o un computer con fotocamera RealSense integrata)
  • Un computer con un processore Intel Core 4th gen (o migliore)
  • RealSense SDK (che è scaricabile gratuitamente)
  • MeshLab (gratuito)
  • Blender (gratuito)

Scansione della testa

Dopo aver installato l'SDK, vai su Charm Bar (in Windows 8) o Start Menu (in Windows 7 o 10) e cerca Browser campione SDK RealSense. Trovalo nell'elenco, fai clic con il pulsante destro del mouse e seleziona Esegui come amministratore.

Nel Sample Browser troverai una sezione chiamata Campioni comuni. Questi sono esempi che funzioneranno su entrambe le fotocamere RealSense rivolte verso il fronte e sul retro. Trova l'esempio chiamato Scansione 3D (C ++).

Come scansionare la testa

  • Selezionare Correre dal Scansione 3D (C ++) sezione del browser di esempio.
  • Metti la testa davanti alla videocamera e la vedrai nella vista dello scanner. Tenerlo fermo finché non viene visualizzata la seconda finestra.
  • Una volta che la seconda finestra si apre, inizia a ruotare in una direzione (lentamente), quindi invertire la direzione e prova ad andare tutto intorno. 
  • Una volta fatto un giro completo, inclina la testa all'indietro e poi in avanti, quindi tieni ferma. Per gli ultimi secondi. tieni gli occhi davanti alla cinepresa, in modo che i tuoi occhi si fissino in una posizione statica.
  • Al termine della scansione, verrà aperto un browser che consente di trascinare e ruotare il modello. Il modello verrà salvato sul tuo Documenti cartella come 3Dscan.obj.
  • Puoi rieseguire il campione tutte le volte che vuoi per ottenere una scansione di cui sei soddisfatto.

Suggerimenti per la scansione

  • Il campione è progettato per tracciare un oggetto 3D rigido nello spazio mentre ruota davanti alla telecamera. Ciò significa che puoi scansionarlo da più lati.
  • Se una parte dell'oggetto ruota e un'altra parte è ferma, confonderà l'algoritmo di tracciamento e finirai con una scansione errata. Quindi, quando si scansiona la testa, non limitarsi a girare il collo per eseguire la scansione; invece, ruota l'intero busto.
  • Puoi ribaltare in avanti, ribaltare, ruotare a sinistra, ruotare a destra e girare intorno. Con la pratica, è possibile scansionare un oggetto da tutti gli angoli.
  • Dovresti eseguire la scansione in un'area con illuminazione uniforme. Evita le ombre e i riflessi speculari, dato che verranno infornati nella tua texture 3D.

Conversione in formato PLY

Il formato OBJ è il formato predefinito ottenuto dalla scansione. Per usarlo in Blender (e in seguito in Unity), lo convertiamo in formato PLY usando uno strumento gratuito chiamato MeshLab. Quindi, scarica, installa ed esegui MeshLab, se non lo hai già fatto.

Dal File menu, selezionare Importare. Trovare la 3Dscan.obj file creato nella sezione precedente.

Dopo aver importato il tuo oggetto, potrebbe essere dalla sua parte. Puoi fare clic con il tasto sinistro del mouse nella parte inferiore dell'oggetto e trascinare verso l'alto per ruotare l'oggetto ed esaminarlo. 

Dovresti vedere la trama con il colore. Le informazioni sul colore sono memorizzate come colori al vertice, il che significa che ogni vertice è colorato con i pixel ottenuti dalla telecamera RGB quando ha scansionato la tua testa. 

Clic File> Esporta mesh come. Nella finestra di dialogo che appare, selezionare Formato file Stanford Polygon (* .ply) dal File di tipo cadere in picchiata:

Salva il risultato PLY da qualche parte sarai in grado di trovarlo più tardi.

Convertire i colori dei vertici in una mappa di trama UV

L'idea qui è di importare il file 3D in Blender, crearne una copia, ripulire la copia e mappare i colori dei vertici come una mappa UV per la nuova versione duplicata.

Scarica, installa ed esegui Blender, se non lo hai già fatto.

Importa l'oggetto in Blender

Crea un nuovo progetto in Blender, seleziona Importa> Stanford (.ply), quindi seleziona il file PLY che hai appena esportato da MeshLab:

Dopo averlo importato, vedrai che le trame non sono visibili:

Tuttavia, se si passa a Struttura visualizza, vedrai che i colori RGB della scansione sono ora mappati alla modalità Texture:

Usa questo menu per passare a Struttura vista.

Per vedere correttamente i colori, cambia di nuovo la modalità di visualizzazione, questa volta Materiale. Nel riquadro di destra, seleziona il materiale icona, quindi creare un nuovo materiale. 

Nell'editor del pannello, impostare Ombreggiatura a shadeless, e nel Opzioni, accendere Vernice Colore Vertex. Questo imposta con successo i colori dei vertici sul materiale dell'oggetto.

Ora, questa non è ancora una rete lavorabile per noi. È pieno di buchi, è ruvido e il numero di poligoni è molto più alto di quello che vorremmo che fosse, se lo useremo in un gioco.

Abbiamo bisogno di creare una versione di questa mesh che possiamo pulire, ma mappare questa texture con i vertici come una mappa UV. Quella versione è la versione che porteremo in Unity.

Crea un duplicato della maglia

Selezionare Oggetto> Duplica oggetti e colpisci accedere. Non spostare il mouse.

Quindi, selezionare Oggetto> Sposta al livello, e quindi seleziona il quadrato a destra del livello corrente (il secondo quadrato da sinistra nella riga superiore).

Vai al Browser delle risorse e rinomina le tue mesh. Nome uno Maglia originale e l'altro Seconda maglia. Questo ti aiuterà a distinguerli.

Riduci il numero di poligoni del duplicato

Seleziona la seconda mesh, seleziona il livello pertinente e cambia la modalità di visualizzazione da Materiale a Solido.

Quindi, dal riquadro di destra, fai clic sull'icona che assomiglia a una chiave inglese per aggiungere un modificatore. Ridurremo il numero di poligoni di questa mesh e lo elimineremo.

Selezionare Strumenti> Remesh. In questa finestra di dialogo, imposta il Albero di ottobre tra 7 e 8. Impostato Modalità a Liscio, e accendi Ombreggiatura liscia. Questo ti farà perdere la mappatura del materiale:

Clic Applicare. Ora hai una mesh più pulita a cui puoi applicare il vertice e la mappa UV.

Applicare la Mappa Vertex e UV

Entra in modificare modalità su questa seconda mesh. Clic Seleziona> Seleziona tutto.

Crea una nuova finestra e impostala su UV / Image Editor modalità per vedere la mappa UV.

Nel 3D finestra, selezionare Mesh> UV Unwrap> Progetto Smart UV.

Nel Mappa UV finestra, selezionare Nuovo per creare una texture. Spegni Alfa. Assegna alla texture il nome che desideri assegnare al modello finale.

Passa a Oggetto modalità. Vedrai un modello nero e una mappa UV nera. Va bene!

Ora seleziona entrambi i livelli per Cambio-cliccandoli per renderli entrambi visibili.

Seleziona entrambi i livelli ... ... e il tuo riquadro di visualizzazione sarà simile a questo.

Nel Browser delle risorse, seleziona la mesh originale. Fai clic sull'icona della fotocamera.

Nel Infornare sezione, accendi Selezionato su attivo. Assicurati che Cuocia a Vertex Color è spento.

Nel Scena sezione, impostare Gestione del colore a Nessuna.

Nel Bene menu, selezionare la mesh originale. Quindi, tieni premuto Cambio e selezionare la seconda maglia. (Devi farlo in questo ordine.) Assicurati che entrambi i livelli siano visibili con le icone dell'occhio e della fotocamera.

Fai clic sull'icona della fotocamera. Nel Infornare sezione, fare clic Infornare.

Ora dovresti avere una texture mappata. Per vederlo, spegni il primo livello, quindi vedi solo il livello con la seconda mesh. Seleziona il Struttura guarda e vedrai la mesh con la tua mappa UV. 

Noterai qualche funkiness in cui l'immagine è piena di aree mancanti della mesh:

Puoi passare a Texture Paint modalità per ripulire quelli. Ora puoi anche passare a Scolpire modalità per riempire le aree mancanti, nonché per ripulire o aggiungere funzionalità alla mesh. 

Esporta la mesh

Dopo aver ripulito la mesh, puoi prepararti ad esportarla:

  1. Assicurati che la mappa UV sia identica alla mesh e si trovi nella stessa directory della mesh.
  2. Vai al Mappa UV finestra, selezionare Immagine> Salva come, e vai alla directory in cui salvi la mesh.
  3. Selezionare File> Esporta in .FBX, e inserisci lo stesso nome che hai dato alla mappa UV.

Il tuo modello è completo!

Conclusione

Hai scansionato la testa, ridotto il poligono, ripulito il modello ed esportato come un modello 3D pronto per l'uso in altre applicazioni. In un futuro tutorial, importeremo questa mesh 3D in Unity e osserveremo come potrebbe essere utilizzata nei giochi.

Il programma Intel® Software Innovator supporta sviluppatori indipendenti innovativi che mostrano la capacità di creare e dimostrare progetti lungimiranti. Gli innovatori sfruttano le opportunità di speakerhip e demo negli eventi del settore e nelle riunioni degli sviluppatori.

Intel® Developer Zone offre strumenti e istruzioni per lo sviluppo di app cross-platform, informazioni su piattaforma e tecnologia, esempi di codice e competenze peer per aiutare gli sviluppatori a innovare e avere successo. Unisciti alle nostre comunità per il Internet delle coseAndroid *Tecnologia Intel® RealSense ™, Codice modernoGame Dev e Finestre* per scaricare strumenti, accedere a kit di sviluppo, condividere idee con sviluppatori affini e partecipare a hackathon, concorsi, roadshow ed eventi locali.