Hoe maak je een 3D-model van je hoofd met behulp van Blender en een RealSense-camera

Ik ben erg enthousiast over sensatie van computergebruik: een idee waarbij slimme dingen de omgeving waarnemen, verbonden zijn en vervolgens een verlengstuk van de gebruiker worden. Asan Intel Software evangelist (en een zelfverklaarde hobbyist coder), ik ben gelukkig genoeg om te gaan experimenteren met deze mogelijkheden met behulp van Intel's geavanceerde technologie. Eerder had ik geschreven over het in realtime 3D-scannen van de wereld om je heen en een virtueel object erin zetten; echter, in deze tutorial wil ik uitleggen hoe je het omgekeerde doet, door jezelf 3D te scannen en vervolgens die scan aan de virtuele wereld toe te voegen.

Meer specifiek zullen we:

  1. Scan je hoofd met een RealSense-camera en de SDK.
  2. Converteer het 3D-bestand van het OBJ-formaat naar het PLY-formaat (voor bewerking in Blender).
  3. Converteer de vertex-kleuren naar een UV-structuurkaart.
  4. Bewerk het 3D-net om het een lager hoekpunt en poly-aantal te geven.

We eindigen met een 3D, gekleurd netwerk van je hoofd, klaar om te gebruiken in Unity. (In de volgende tutorial zullen we zien hoe je dit daadwerkelijk in Unity kunt krijgen, en waar je dit voor kunt gebruiken in een game.)

Je zal nodig hebben:

  • Een Intel RealSense-camera (of een computer met geïntegreerde RealSense-camera)
  • Een computer met een Intel Core 4e generatie processor (of beter)
  • De RealSense SDK (die gratis te downloaden is)
  • MeshLab (gratis)
  • Blender (gratis)

Je hoofd scannen

Na het installeren van de SDK gaat u naar de Charm Bar (in Windows 8) of het Startmenu (in Windows 7 of 10) en zoekt u naar RealSense SDK voorbeeldbrowser. Zoek het in de lijst, klik er met de rechtermuisknop op en selecteer Als administrator uitvoeren.

In de voorbeeldbrowser vindt u een sectie genaamd Veelvoorkomende monsters. Dit zijn voorbeelden die zowel aan de voorzijde- als aan de achterzijde gerichte RealSense-camera's kunnen gebruiken. Zoek het monster met de naam 3D-scan (C ++).

Hoe je je hoofd scant

  • kiezen Rennen van de 3D-scan (C ++) gedeelte van de voorbeeldbrowser.
  • Plaats je hoofd voor de camera en je ziet het in de weergave van de scanner. Houd het stil totdat het tweede venster verschijnt.
  • Zodra het tweede venster verschijnt, begint u in één richting (langzaam) te draaien, draait u de richting om en probeert u helemaal opnieuw. 
  • Als je eenmaal een volledige lus hebt gemaakt, kantel je je hoofd naar achteren en vervolgens vooruit en houd je het stil. Voor de laatste paar seconden. houd je ogen recht naar voren gericht over de camera, zodat je ogen in een statische positie komen te staan.
  • Wanneer de scan is voltooid, wordt er een browser geopend waarmee u het model kunt slepen en draaien. Het model wordt opgeslagen in uw documenten map als 3Dscan.obj.
  • U kunt het voorbeeld zo vaak herhalen als u maar wilt om een ​​scan te krijgen waar u tevreden over bent.

Tips voor scannen

  • Het voorbeeld is ontworpen om een ​​stijf 3D-object in de ruimte te volgen terwijl het voor de camera draait. Dit betekent dat u het vanaf meerdere kanten kunt scannen.
  • Als een deel van het object roteert en een ander deel stil is, zal dit het trackingalgoritme verwarren en krijg je een slechte scan. Dus, bij het scannen van je hoofd, draai niet alleen je nek om te scannen; draai in plaats daarvan je hele romp.
  • Je kunt voorover kantelen, achteruit kantelen, naar links draaien, naar rechts draaien en ronddraaien. Met oefenen is het mogelijk om een ​​object vanuit alle hoeken te scannen.
  • U moet in een gebied scannen met gelijkmatige belichting. Vermijd schaduwen en spiegelende reflecties, omdat ze in je 3D-structuur worden gebakken.

Converteren naar PLY-indeling

Het OBJ-formaat is het standaardformaat dat u van de scan krijgt. Om het te gebruiken in Blender (en later Unity), zullen we het naar PLY-formaat converteren met behulp van een gratis tool genaamd MeshLab. Dus download, installeer en voer MeshLab uit, als je dat nog niet hebt gedaan.

Van de het dossier menu, selecteer Importeren. Vind de 3Dscan.obj bestand dat u in het vorige gedeelte hebt gemaakt.

Nadat u uw object hebt geïmporteerd, staat het mogelijk op zijn kant. U kunt met de linkermuisknop klikken op de onderkant van het object en omhoog slepen om het object te draaien en het te bekijken. 

Je zou het net getextureerd met kleur moeten zien. De kleurinformatie wordt opgeslagen als vertex kleuren, wat betekent dat elke vertex gekleurd is met de pixels verkregen van de RGB-camera toen hij je hoofd scande. 

Klik Bestand> Mesh exporteren als. Selecteer in het dialoogvenster dat verschijnt Stanford Polygon Bestandsformaat (* .ply) van de Bestanden van type laten vallen:

Bewaar de resulterende PLY ergens waar u het later kunt vinden.

Vertex-kleuren omzetten in een UV-textuurkaart

Het idee hier is om het 3D-bestand naar Blender te importeren, er een kopie van te maken, de kopie op te ruimen en de vertex-kleuren als een UV-kaart in kaart te brengen voor de nieuwe duplicaatversie.

Download, installeer en voer Blender uit, als u dat nog niet hebt gedaan.

Importeer het object naar blender

Maak een nieuw project in Blender, selecteer Importeren> Stanford (.ply), selecteer vervolgens het PLY-bestand dat u net vanuit MeshLab hebt geëxporteerd:

Na het importeren ziet u dat de texturen niet zichtbaar zijn:

Als u echter overschakelt naar structuur weergave, ziet u dat de RGB-kleuren van de scan nu zijn toegewezen aan de modus Textuur:

Gebruik dit menu om over te schakelen naar structuur uitzicht.

Om de kleuren goed te zien, schakelt u de weergavemodus opnieuw in - deze keer naar Materiaal. Selecteer in het rechterdeelvenster de materialen pictogram en maak vervolgens een nieuw materiaal. 

In de paneeleditor instellen shading naar shadeless, en in de opties, aanzetten Vertex Color Paint. Hiermee worden de vertex-kleuren met succes ingesteld op het materiaal van het object.

Dit is voor ons nog geen werkbare mesh. Het zit vol met gaten, het is ruw, en de poly-telling is veel hoger dan we zouden willen, als we het in een spel gaan gebruiken.

We moeten een versie van deze mesh maken die we kunnen opruimen, maar deze vertex-gekleurde textuur in kaart brengen als een UV-kaart. Die versie is de versie die we Unity zullen brengen.

Maak een duplicaat van de mesh

kiezen Object> Dubbele objecten en druk op invoeren. Beweeg uw muis niet.

Selecteer vervolgens Object> Verplaats naar laag, en selecteer vervolgens het vierkant rechts van de huidige laag (het tweede vierkant links in de bovenste rij).

Ga naar de Activabrowser en hernoem uw netten. Geef een naam Originele mesh en de andere Tweede Maas. Dit zal je helpen om ze uit elkaar te houden.

Verklein de Poly Count van het duplicaat

Selecteer de tweede mesh, selecteer de relevante laag en schakel de weergavemodus uit Materiaal naar Solide.

Klik vervolgens vanuit het rechterdeelvenster op het pictogram dat op een sleutel lijkt om een ​​wijziging toe te voegen. We gaan het polygehalte van deze mesh verminderen en opruimen.

kiezen Hulpmiddelen> Remesh. Stel in dit dialoogvenster de Oct Tree naar tussen 7 en 8. set mode naar Glad, en schakel aan Smooth Shading. Hierdoor verlies je de materiaaltoewijzing:

Klik Van toepassing zijn. Je hebt nu een schoner netwerk waarop je de vertex en UV-kaart kunt toepassen.

Breng de Vertex en UV-kaart aan

Ga in Bewerk modus op dit tweede net. Klik Selecteer> Alles selecteren.

Maak een nieuw venster en stel het in UV / afbeeldingseditor modus om de UV-kaart te bekijken.

In de 3D venster, selecteer Mesh> UV Unwrap> Smart UV Project.

In de UV-kaart venster, selecteer nieuwe om een ​​textuur te maken. Uitschakelen Alpha. Noem de textuur de naam die u aan uw uiteindelijke model wilt geven.

Overschakelen naar Voorwerp modus. Je ziet een zwart model en een zwarte UV-kaart. Dat is goed!

Selecteer nu beide lagen met Verschuiving-erop klikken om ze allebei zichtbaar te maken.

Selecteer beide lagen ... ... en uw weergavepaneel zal er als volgt uitzien.

In de Activabrowser, selecteer de originele mesh. Klik op het camerapictogram.

In de Bakken sectie, inschakelen Geselecteerd om actief te zijn. Zeker weten dat Bak naar Vertex Color is uitgeschakeld.

In de Tafereel sectie, instellen Kleurbeheer naar Geen.

In de aanwinst menu, selecteert u de Original Mesh. Houd vervolgens ingedrukt Verschuiving en selecteer de tweede mesh. (U moet het in die volgorde doen.) Zorg ervoor dat beide lagen zichtbaar zijn met het oog en de camerapictogrammen.

Klik op het camerapictogram. In de Bakken sectie, klik Bakken.

Je zou nu een textuur in kaart moeten hebben. Om dit te zien, schakelt u de eerste laag uit, zodat u alleen de laag met de tweede mesh ziet. Selecteer de structuur bekijken en je zult je mesh getextureerd zien met je UV-kaart. 

Je zult wat funkiness opmerken waarbij de afbeelding ontbrekende delen van je mesh bevat:

U kunt overschakelen naar Textuurverf modus om die op te ruimen. U kunt nu ook overschakelen naar Beeldhouwen modus om ontbrekende gebieden in te vullen, evenals om op te ruimen of functies aan uw mesh toe te voegen. 

Exporteer het gaas

Nadat je je mesh hebt opgeruimd, kun je je klaarmaken om het te exporteren:

  1. Zorg ervoor dat de UV-map dezelfde naam heeft als de mesh en zich in dezelfde directory bevindt als de mesh.
  2. Ga naar de UV-kaart venster, selecteer Afbeelding> Opslaan als, en navigeer naar de map waar je de mesh opslaat.
  3. kiezen Bestand> Exporteren naar .FBX, en voer dezelfde naam in die u de UV-kaart heeft gegeven.

Je model is voltooid!

Conclusie

U hebt in uw hoofd gescand, de polycount verminderd, het model opgeruimd en geëxporteerd als een 3D-model dat klaar is om in andere toepassingen te worden gebruikt. In een toekomstige zelfstudie importeren we dit 3D-net in Unity en kijken we hoe het in games kan worden gebruikt.

Het Intel® Software Innovator-programma ondersteunt innovatieve onafhankelijke ontwikkelaars die in staat zijn om toekomstgerichte projecten te creëren en te demonstreren. Vernieuwers profiteren van sprekerschap en demomogelijkheden tijdens evenementen en bijeenkomsten voor ontwikkelaars.

Intel® Developer Zone biedt tools en how-to-informatie voor platformonafhankelijke app-ontwikkeling, platform- en technologie-informatie, codevoorbeelden en peer-expertise om ontwikkelaars te helpen innoveren en slagen. Word lid van onze community voor de internet van dingenAndroid *Intel® RealSense ™ -technologie, Moderne codeGame ontwikkelaar en Ramen* om gereedschappen te downloaden, toegang te krijgen tot ontwikkelkits, ideeën uit te wisselen met gelijkgestemde ontwikkelaars en deel te nemen aan hackathons, wedstrijden, roadshows en lokale evenementen.