Hur man gör en 3D-modell av ditt huvud med hjälp av Blender och en RealSense-kamera

Jag är väldigt exalterad över sensibilisering av databehandling: en idé där smarta saker känner miljön, är anslutna, blir sedan en förlängning av användaren. Asan Intel Software evangelist (och en självförtrogen hobbyistkodare) har jag turen att experimentera med dessa möjligheter med Intels avancerade teknik. Tidigare hade jag skrivit om 3D-skanning av världen runt dig i realtid och sätta ett virtuellt objekt i det; men i denna handledning vill jag förklara hur man gör det omtalade, genom 3D-skanning själv och lägger till den genomsökningen i den virtuella världen.

Mer specifikt kommer vi att

  1. Skanna huvudet med en RealSense-kamera och SDK.
  2. Konvertera 3D-filen från OBJ-format till PLY-format (för redigering i Blender).
  3. Konvertera vertexfärgerna till en UV-texturkarta.
  4. Redigera 3D-nätet för att ge det ett lägre toppunkt och polyantal.

Vi kommer att sluta med ett 3D-färgat nät i ditt huvud, redo att användas i Unity. (I nästa handledning ser vi hur man faktiskt får detta till Unity, och vad du kan använda detta för i ett spel.)

Du kommer behöva:

  • En Intel RealSense-kamera (eller dator med integrerad RealSense-kamera)
  • En dator med en Intel Core 4th genprocessor (eller bättre)
  • RealSense SDK (som är gratis att hämta)
  • MeshLab (gratis)
  • Blender (gratis)

Skannar ditt huvud

När du har installerat SDK: n, gå till Charm Bar (i Windows 8) eller Start-menyn (i Windows 7 eller 10) och sök efter RealSense SDK Sample Browser. Hitta den i listan, högerklicka på den och välj Kör som administratör.

I proverwebbläsaren hittar du ett avsnitt som heter Vanliga prov. Dessa är prover som kommer att fungera på både RealSense-kamerorna som är framåtvända och bakåtvända. Hitta det samtal som heter 3D-skanning (C ++).

Hur man skannar huvudet

  • Välj Springa från 3D-skanning (C ++) del av provwebbläsaren.
  • Sätt huvudet framför kameran och du kommer se det i skannerns vy. Håll den kvar tills det andra fönstret dyker upp.
  • När det andra fönstret dyker upp, börja rotera i en riktning (långsamt), sedan omvänd riktning och försök att gå hela vägen. 
  • När du har gjort en full loop runt, tippa huvudet tillbaka och sedan framåt, och håll sedan kvar. Under de senaste sekunderna. håll ögonen framåt strax över kameran, så att dina ögon blir satt i en statisk position.
  • När skanningen är klar kommer en webbläsare att öppnas, så att du kan dra och rotera modellen runt. Modellen sparas i din Dokument mapp som 3Dscan.obj.
  • Du kan ompröva provet så många gånger som du vill ha en skanning som du är nöjd med.

Tips för skanning

  • Provet är utformat för att spåra ett styvt 3D-objekt i rymden när det roterar framför kameran. Det betyder att du kan skanna den från flera sidor.
  • Om en del av objektet roterar och en annan del fortfarande är, kommer den att förvirra spårningsalgoritmen och du kommer sluta med en dålig skanning. Så, när du skannar ditt huvud, gör inte bara nacken för att skanna; i stället rotera hela din torso.
  • Du kan spola framåt, tipsa tillbaka, rotera åt vänster, rotera åt höger och vänd dig om. Med praktiken är det möjligt att skanna ett objekt från alla vinklar.
  • Du ska skanna i ett område med jämn belysning. Undvik skuggor och spegla reflektioner, eftersom de kommer att bli bakade i din 3D-struktur.

Konvertera till PLY-format

OBJ-formatet är det standardformat du får från skanningen. För att använda det i Blender (och senare Unity) konverterar vi det till PLY-format med ett gratis verktyg som heter MeshLab. Så, ladda ner, installera och kör MeshLab, om du inte redan har det.

Från Fil meny, välj Importera. Hitta 3Dscan.obj fil du skapade i föregående avsnitt.

När du har importerat ditt objekt kan det vara på sin sida. Du kan vänsterklicka längst ner på objektet och dra upp för att rotera objektet och undersöka det. 

Du bör se nätet texturerat med färg. Färginformationen lagras som vertikala färger, vilket innebär att varje vertex är färgad med pixlarna som erhållits från RGB-kameran när den skannade huvudet. 

Klick File> Export Mesh As. I dialogrutan som visas väljer du Stanford Polygon File Format (* .ply) från Typfiler falla ner:

Spara den resulterande PLY någonstans kan du hitta den senare.

Konvertera vertexfärger till en UV-texturkarta

Tanken här är att importera 3D-filen till Blender, kopiera den, städa upp kopian och kartlägga vertexfärgerna som en UV-karta för den nya dubbla versionen.

Hämta, installera och kör Blender, om du inte redan har det.

Importera objektet till blender

Skapa ett nytt projekt i Blender, välj Importera> Stanford (.ply), välj sedan PLY-filen som du just exporterat från MeshLab:

Efter att ha importerat det ser du att texturerna inte är synliga:

Men om du byter till Textur visa, kommer du att se att RGB-färgerna från skanningen nu är mappade till Texturläget:

Använd den här menyn för att växla till Textur se.

Om du vill se färgerna ordentligt byter du visningsläge igen - den här gången till Material. På den högra panelen väljer du material ikonen och skapa sedan ett nytt material. 

I panelredigeraren ställer du in Skuggning till Shadeless, och i alternativ, sätta på Vertex Färgfärg. Detta ställer framgångsrikt de vertikala färgerna till objektets material.

Nu är detta ännu inte ett fungerande nät för oss. Det är fullt av hål, det är grovt, och polyantalet är mycket högre än vad vi skulle vilja ha om vi ska använda det i ett spel.

Vi måste skapa en version av detta nät som vi kan städa upp, men kartlägg den här vertexfärgade konsistensen som en UV-karta. Den versionen är den version som vi kommer att ta med i Unity.

Skapa en kopia av nätet

Välj Objekt> Dubbla objekt och slå Stiga på. Flytta inte musen.

Välj sedan Objekt> Flytta till lager, och välj sedan rutan till höger om det aktuella lagret (den andra rutan från vänster i den övre raden).

Gå till Asset Browser och byt namn på dina maskor. Namn en Original Mesh och den andra Second Mesh. Detta hjälper dig att berätta för dem.

Reducera duplikatets polygrafik

Välj Second Mesh, välj det aktuella lagret och välj visningsläge från Material till Fast.

Sedan, från den högra panelen, klicka på ikonen som ser ut som en skiftnyckel för att lägga till en modifierare. Vi kommer att minska polyantalet på detta nät och rengöra det.

Välj Verktyg> Remesh. I den här dialogrutan anger du Okt träd till mellan 7 och 8. Uppsättning Läge till Slät, och sätt på Glatt skuggning. Detta kommer att leda till att du förlorar materialmappningen:

Klick Tillämpa. Du har nu en renare Mesh som du kan använda vertex- och UV-kartan på.

Applicera Vertex och UV Map

Gå in i Redigera läge på detta Second Mesh. Klick Välj> Välj alla.

Skapa ett nytt fönster och sätt det till UV / Bildredigerare läge för att se UV-kartan.

I 3D fönster, välj Mesh> UV Unwrap> Smart UV Project.

I UV-karta fönster, välj Ny för att skapa en textur. Stäng av Alfa. Namn texturen det namn du vill ge din slutliga modell.

Byta till Objekt läge. Du kommer att se en svart modell och en svart UV-karta. Det är okej!

Välj nu båda lagren av Flytta-klicka på dem för att göra dem båda synliga.

Välj båda lagren ... ... och din vy kommer att se ut så här.

I Asset Browser, välj Original Mesh. Klicka på kamerans ikon.

I Baka sektionen, sätt på Valda till Aktiv. Se till att Baka till Vertex Color är avstängd.

I Scen sektion, set Färghantering till Ingen.

I Tillgång meny, välj Original Mesh. Håll sedan ned Flytta och välj Second Mesh. (Du måste göra det i den ordningen.) Se till att båda lagren är synliga med ögon- och kamerans ikoner.

Klicka på kamerans ikon. I Baka avsnittet, klicka Baka.

Du borde nu ha en textur kartladdad. För att se detta, stäng av det första lagret så att du bara ser lagret med det andra nätet. Välj Textur visa och du kommer att se din mask texturerad med din UV-karta. 

Du kommer att märka lite funkiness där bilden fyllde i saknade områden i ditt nät:

Du kan växla till Texturfärg läge för att rengöra dem. Du kan nu också byta till Skulptera läge för att fylla i saknade områden, samt att städa upp eller lägga till funktioner i ditt nät. 

Exportera Mesh

När du har rengjort nätet kan du göra dig redo att exportera det:

  1. Se till att UV-kartan heter samma som nätet och ligger i samma katalog som nätet.
  2. Gå till UV-karta fönster, välj Bild> Spara som, och navigera till katalogen där du ska spara nätet.
  3. Välj Fil> Exportera till .FBX, och ange samma namn som du gav UV-kartan.

Din modell är komplett!

Slutsats

Du har skannat i ditt huvud, minskat polykoncentrationen, rengjort modellen och exporterat den som en 3D-modell som är redo att användas i andra applikationer. I en framtida handledning importerar vi detta 3D-nät i Unity och tittar på hur det kan användas i spel.

Intel® Software Innovator-programmet stöder innovativa oberoende utvecklare som visar förmåga att skapa och visa framåtblickande projekt. Innovatörer utnyttjar högtalarskap och demo möjligheter vid branschhändelser och utvecklare sammankomster.

Intel® Developer Zone erbjuder verktyg och information om plattformsutveckling, plattforms- och teknikinformation, kodprover och peer-kompetens för att hjälpa utvecklare att uppfinna och lyckas. Gå med i våra samhällen för Internet av sakerandroid *Intel® RealSense ™ -teknologi, Modern kodSpel Dev och Windows * ladda ner verktyg, få tillgång till dev-kit, dela idéer med likasinnade utvecklare och delta i hackatoner, tävlingar, roadshows och lokala evenemang.