So erstellen Sie ein 3D-Modell Ihres Kopfes mit Blender und einer RealSense-Kamera

Ich bin sehr gespannt auf die Sensibilisierung des Computers: Eine Idee, bei der intelligente Dinge die Umgebung wahrnehmen, verbunden werden und dann zu einer Erweiterung des Benutzers werden. Als ein Intel Software-Evangelist (und ein bekennender Hobby-Programmierer) habe ich das Glück, diese Möglichkeiten mit der innovativen Technologie von Intel ausprobieren zu können. Zuvor hatte ich über das 3D-Scannen der Welt um Sie herum in Echtzeit und das Einfügen eines virtuellen Objekts darin geschrieben. In diesem Lernprogramm möchte ich jedoch erklären, wie das Gegenteil erreicht werden kann, indem Sie sich selbst 3D-Scans durchführen und diesen Scan dann der virtuellen Welt hinzufügen.

Genauer gesagt werden wir:

  1. Scannen Sie Ihren Kopf mit einer RealSense-Kamera und dem SDK.
  2. Konvertieren Sie die 3D-Datei vom OBJ-Format in das PLY-Format (zur Bearbeitung in Blender).
  3. Konvertieren Sie die Vertexfarben in eine UV-Texturkarte.
  4. Bearbeiten Sie das 3D-Netz, um ihm einen niedrigeren Scheitelpunkt und eine niedrigere Poly-Anzahl zu geben.

Am Ende erhalten Sie ein farbiges 3D-Netz Ihres Kopfes, das in Unity verwendet werden kann. (Im nächsten Tutorial werden wir sehen, wie man dies tatsächlich in Unity einführt und wozu man es in einem Spiel verwenden könnte.)

Du wirst brauchen:

  • Eine Intel RealSense-Kamera (oder Computer mit integrierter RealSense-Kamera)
  • Ein Computer mit einem Intel Core Prozessor der vierten Generation (oder besser)
  • Das RealSense-SDK (das kostenlos heruntergeladen werden kann)
  • MeshLab (kostenlos)
  • Mixer (kostenlos)

Scannen Sie Ihren Kopf

Wechseln Sie nach der Installation des SDK zur Charm-Leiste (in Windows 8) oder zum Startmenü (in Windows 7 oder 10) und suchen Sie nach RealSense SDK-Beispielbrowser. Suchen Sie es in der Liste, klicken Sie mit der rechten Maustaste darauf und wählen Sie Führen Sie als Administrator aus.

Im Beispielbrowser finden Sie einen Abschnitt namens Häufige Beispiele. Dies sind Beispiele, die sowohl für die Front- als auch für die Rückseite der RealSense-Kameras geeignet sind. Finden Sie das aufgerufene Beispiel 3D-Scan (C ++).

So scannen Sie Ihren Kopf

  • Wählen Lauf von dem 3D-Scan (C ++) Abschnitt des Beispielbrowsers.
  • Stellen Sie Ihren Kopf vor die Kamera und Sie sehen ihn in der Ansicht des Scanners. Halten Sie es still, bis das zweite Fenster erscheint.
  • Sobald sich das zweite Fenster öffnet, beginnen Sie, sich in eine Richtung zu drehen (langsam), kehren Sie dann um und versuchen Sie, den ganzen Weg zu gehen. 
  • Sobald Sie eine vollständige Schleife gemacht haben, kippen Sie Ihren Kopf nach hinten und dann nach vorne. In den letzten Sekunden. Halten Sie Ihre Augen gerade über die Kamera gerichtet, damit sich Ihre Augen in einer statischen Position befinden.
  • Wenn der Scan abgeschlossen ist, wird ein Browser geöffnet, in dem Sie das Modell verschieben und drehen können. Das Modell wird in Ihrem gespeichert Unterlagen Ordner als 3Dscan.obj.
  • Sie können das Beispiel beliebig oft wiederholen, um einen Scan zu erhalten, mit dem Sie zufrieden sind.

Tipps zum Scannen

  • Das Beispiel dient dazu, ein starres 3D-Objekt im Weltraum zu verfolgen, wenn es vor der Kamera rotiert. Das bedeutet, dass Sie es von mehreren Seiten scannen können.
  • Wenn sich ein Teil des Objekts dreht und sich ein anderer Teil noch befindet, wird der Tracking-Algorithmus verwirrt und Sie erhalten einen schlechten Scan. Drehen Sie also beim Scannen des Kopfes nicht nur Ihren Hals, um zu scannen. Drehen Sie stattdessen Ihren gesamten Torso.
  • Sie können nach vorne kippen, zurückkippen, nach links drehen, nach rechts drehen und umdrehen. In der Praxis ist es möglich, ein Objekt aus allen Winkeln zu scannen.
  • Sie sollten in einem Bereich mit gleichmäßiger Beleuchtung scannen. Vermeiden Sie Schatten und Spiegelungen, da diese in Ihre 3D-Textur eingebettet werden.

Umwandlung in das PLY-Format

Das OBJ-Format ist das Standardformat, das Sie beim Scannen erhalten. Um es in Blender (und später Unity) zu verwenden, konvertieren wir es mit einem kostenlosen Tool namens MeshLab in das PLY-Format. Laden Sie MeshLab herunter, installieren Sie es und führen Sie es aus, falls Sie dies noch nicht getan haben.

Von dem Datei Menü auswählen Einführen. Finden Sie das 3Dscan.obj Datei, die Sie im vorherigen Abschnitt erstellt haben.

Nachdem Sie Ihr Objekt importiert haben, befindet es sich möglicherweise auf seiner Seite. Sie können mit der linken Maustaste auf den unteren Rand des Objekts klicken und es nach oben ziehen, um das Objekt zu drehen und zu untersuchen. 

Sie sollten das mit Farbe strukturierte Netz sehen. Die Farbinformationen werden als gespeichert Scheitelpunktfarben, Dies bedeutet, dass jeder Scheitelpunkt mit den von der RGB-Kamera beim Scannen des Kopfs erhaltenen Pixeln farbig ist. 

Klicken Datei> Netz exportieren als. Wählen Sie im angezeigten Dialogfeld Stanford-Polygon-Dateiformat (* .ply) von dem Dateien des Types Dropdown-Liste:

Speichern Sie das resultierende PLY an einem Ort, an dem Sie es später finden können.

Konvertieren von Vertex-Farben in eine UV-Texturkarte

Die Idee hierbei ist, die 3D-Datei in Blender zu importieren, eine Kopie davon zu erstellen, die Kopie zu bereinigen und die Scheitelpunktfarben als eine UV-Karte für die neue doppelte Version abzubilden.

Laden Sie Blender herunter, installieren Sie ihn und führen Sie ihn aus, falls noch nicht geschehen.

Importieren Sie das Objekt in Blender

Erstellen Sie ein neues Projekt in Blender, und wählen Sie aus Importieren> Stanford (.ply), Wählen Sie dann die PLY-Datei aus, die Sie gerade aus MeshLab exportiert haben:

Nach dem Import sehen Sie, dass die Texturen nicht sichtbar sind:

Wenn Sie jedoch zu wechseln Textur sehen Sie, dass die RGB-Farben des Scans jetzt dem Textur-Modus zugeordnet sind:

In diesem Menü wechseln Sie zu Textur Aussicht.

Um die Farben richtig zu sehen, schalten Sie den Ansichtsmodus erneut um - diesmal auf Material. Wählen Sie im rechten Bedienfeld die Option Materialien Symbol und erstellen Sie ein neues Material. 

Legen Sie im Panel-Editor fest Schattierung zu Schattenlos, und in der Optionen, anschalten Vertex-Farbanstrich. Dadurch werden die Scheitelpunktfarben erfolgreich auf das Material des Objekts festgelegt.

Nun, das ist noch kein funktionsfähiges Netz für uns. Es ist voll von Löchern, es ist grob und die Anzahl der Polys ist viel höher als wir es uns wünschen, wenn wir es in einem Spiel verwenden wollen.

Wir müssen eine Version dieses Netzes erstellen, die wir bereinigen können, diese vertex-farbige Textur jedoch als UV-Karte abbilden. Diese Version ist die Version, die wir in Unity integrieren werden.

Erstellen Sie ein Duplikat des Netzes

Wählen Objekt> Objekte duplizieren und schlagen Eingeben. Bewegen Sie die Maus nicht.

Als nächstes auswählen Objekt> In Ebene verschieben, und wähle dann das Quadrat rechts von der aktuellen Ebene (das zweite Quadrat von links in der oberen Reihe).

Gehe zum Asset Browser und benennen Sie Ihre Maschen um. Nennen Sie einen Original Mesh und der andere Zweites Mesh. Dies hilft Ihnen, sie voneinander zu unterscheiden.

Reduzieren Sie die Poly-Anzahl des Duplikats

Wählen Sie das zweite Netz aus, wählen Sie die relevante Ebene aus und wechseln Sie den Anzeigemodus von Material zu Solide.

Klicken Sie dann im rechten Bedienfeld auf das Symbol, das wie ein Schraubenschlüssel aussieht, um einen Modifikator hinzuzufügen. Wir werden die Poly-Anzahl dieses Gitters reduzieren und es aufräumen.

Wählen Extras> Remesh. Stellen Sie in diesem Dialog das ein Oktober Baum zwischen 7 und 8. einstellen Modus zu Glatt, und einschalten Glatte Schattierung. Dadurch verlieren Sie die Materialzuordnung:

Klicken Sich bewerben. Sie haben jetzt ein saubereres Mesh, auf das Sie den Scheitelpunkt und die UV-Karte anwenden können.

Wenden Sie den Scheitelpunkt und die UV-Karte an

Gehen in Bearbeiten Modus für dieses zweite Mesh. Klicken Wählen Sie> Alle auswählen.

Erstellen Sie ein neues Fenster und setzen Sie es auf UV / Bildeditor Modus, um die UV-Karte zu sehen.

In dem 3D Fenster auswählen Mesh> UV Unwrap> Intelligentes UV-Projekt.

In dem UV-Karte Fenster auswählen Neu eine Textur erzeugen Abschalten Alpha. Benennen Sie die Textur mit dem Namen, den Sie Ihrem endgültigen Modell geben möchten.

Wechseln zu Objekt Modus. Sie sehen ein schwarzes Modell und eine schwarze UV-Karte. Das ist okay!

Wählen Sie nun beide Ebenen mit aus Verschiebung-Klicken Sie auf sie, um beide sichtbar zu machen.

Wählen Sie beide Ebenen aus… … Und Ihr Ansichtsfenster wird so aussehen.

In dem Asset Browser, Wählen Sie das ursprüngliche Netz aus. Klicken Sie auf das Kamerasymbol.

In dem Backen Abschnitt einschalten Ausgewählt zu aktiv. Stelle sicher das Backen Sie zu Vertex Color ist ausgeschaltet.

In dem Szene Abschnitt, Set Farbmanagement zu Keiner.

In dem Asset Wählen Sie im Menü Original Mesh. Halten Sie dann gedrückt Verschiebung und wählen Sie das zweite Netz aus. (Sie müssen dies in dieser Reihenfolge tun.) Stellen Sie sicher, dass beide Ebenen mit dem Auge und den Kamerasymbolen sichtbar sind.

Klicken Sie auf das Kamerasymbol. In dem Backen klicken Sie auf Backen.

Sie sollten jetzt eine Textur haben. Um dies zu sehen, deaktivieren Sie die erste Ebene, sodass Sie die Ebene nur mit dem zweiten Netz sehen. Wähle aus Textur Ansicht und Sie sehen Ihr Netz mit Ihrer UV-Karte strukturiert. 

Sie werden einige Funkeln bemerken, bei denen das Bild die fehlenden Bereiche Ihres Netzes ausfüllt:

Sie können zu wechseln Textur malen Modus, um diese aufzuräumen. Sie können jetzt auch zu wechseln Skulptur Modus, um fehlende Bereiche auszufüllen sowie um Objekte zu bereinigen oder um Features zu ergänzen. 

Exportieren Sie das Mesh

Wenn Sie Ihr Netz aufgeräumt haben, können Sie es für den Export vorbereiten:

  1. Stellen Sie sicher, dass die UV-Karte den gleichen Namen wie das Netz hat und sich in demselben Verzeichnis befindet wie das Netz.
  2. Gehe zum UV-Karte Fenster auswählen Bild> Speichern unter, und navigieren Sie zu dem Verzeichnis, in dem Sie das Netz speichern.
  3. Wählen Datei> Export nach .FBX, und geben Sie den gleichen Namen ein, den Sie der UV-Karte gegeben haben.

Ihr Modell ist vollständig!

Fazit

Sie haben im Kopf gescannt, die Polycount-Anzahl reduziert, das Modell aufgeräumt und als 3D-Modell exportiert, das Sie für andere Anwendungen verwenden können. In einem zukünftigen Lernprogramm werden wir dieses 3D-Netz in Unity importieren und sehen, wie es in Spielen verwendet werden kann.

Das Intel® Software Innovator-Programm unterstützt innovative unabhängige Entwickler, die die Fähigkeit besitzen, zukunftsweisende Projekte zu erstellen und zu demonstrieren. Innovatoren nutzen Vortrags- und Demo-Möglichkeiten bei Branchenveranstaltungen und Entwicklertreffen.

Intel® Developer Zone Bietet Tools und Anleitungen zur plattformübergreifenden App-Entwicklung, Plattform- und Technologiedaten, Codebeispiele und Expertenwissen, um Entwicklern bei der Innovation und dem Erfolg zu helfen. Treten Sie unseren Communitys für Internet der DingeAndroid*Intel® RealSense ™ -Technologie, Moderner CodeSpieleentwickler und Windows * Laden Sie Tools herunter, greifen Sie auf Entwicklungskits zu, tauschen Sie sich mit gleichgesinnten Entwicklern aus und nehmen Sie an Hackathons, Wettbewerben, Roadshows und lokalen Veranstaltungen teil.