Die Welt der Mesh-Technologie: Virtuelle Objekte auf realen Oberflächen zum Leben erwecken

Die Welt der Mesh-Technologie ermöglicht es, virtuelle Objekte basierend auf realen Oberflächen zu erstellen und zu verdecken. Dies geschieht durch die Echtzeit-3D-Mesh-Rekonstruktion dessen, was Ihr Gerät sieht. Das Beispiel erlaubt es, Objekte basierend auf Oberflächentypen oder ihrer Ausrichtung zu instanziieren.

Dieses Beispiel verwendet die Welt der Mesh-Technologie, deren Fähigkeiten je nach Gerät variieren können. Werfen Sie einen Blick auf den World Mesh Guide, um mehr zu erfahren.

Die in diesem Beispiel verwendete Welt der Mesh-Technologie war zuvor auf Geräte mit LiDAR beschränkt. Seit Lens Studio 4.10 kann diese Funktion jedoch auf Geräten mit LiDAR und neueren Geräten mit ARKit oder ARCore verwendet werden. Dieses Beispiel enthält auch einen Fallback-Mechanismus für Geräte ohne Welt der Mesh-Technologie-Funktion.

Demonstration der Welt der Mesh-Technologie in Aktion, die das Platzieren virtueller Objekte auf realen Oberflächen ermöglicht.

Anleitung

Sie können die Linse wie jede andere Linse auf Ihr Gerät übertragen, aber Ihr Gerät muss die Welt der Mesh-Technologie unterstützen. Sie können in Lens Studio mithilfe des Interaktiven Vorschaumodus im Vorschaufenster eine Vorschau anzeigen, wie sie auf einem unterstützten Gerät aussehen würde.

Der interaktive Vorschaumodus in Lens Studio ermöglicht es Entwicklern zu sehen, wie ihre Linse auf Geräten mit Welt der Mesh-Technologie Unterstützung aussehen wird.

Einrichten des Beispiels

Hinzufügen des Beispiels

Suchen Sie im Asset-Bibliothek nach dem Asset World Mesh - Spawn On Surfaces und importieren Sie es in Ihr Projekt. Klicken Sie hier, um mehr darüber zu erfahren, wie Sie Assets in der Asset-Bibliothek verwenden.

Sobald Sie das Asset aus der Asset-Bibliothek importiert haben, finden Sie das Paket im Asset-Browser.

Das Asset “World Mesh – Spawn On Surfaces” wird im Asset-Browser in Lens Studio hervorgehoben.

Befolgen Sie die Anweisungen und ziehen Sie das Präfab World Mesh - Spawn On Surfaces__PLACE_IN_SCENE in die Szenenhierarchie, um ein neues Szenenobjekt zu erstellen.

Ein Präfab wird in die Szenenhierarchie in Lens Studio gezogen, um ein neues Szenenobjekt zu erstellen, das die Welt der Mesh-Technologie nutzt.

Einrichten der Szene

In Anlehnung an den Hinweis im Präfab (1. Add Device Tracking - World to [Camera Object]) müssen wir unserer Kamera Device Tracking hinzufügen, damit die Linse weiß, dass sie die Welt verfolgen soll.

Wählen Sie im Fenster Objects Camera aus. Klicken Sie dann im Fenster Inspector auf Add Component -> Device Tracking.

Das Hinzufügen der Komponente “Device Tracking” zur Kamera in Lens Studio, um die Weltverfolgung zu ermöglichen.

Wählen Sie dann World im Dropdown-Menü Device Tracking aus.

Erfahren Sie mehr im World Tracking Guide.

Schließlich werden wir unserem Spawner von dieser Komponente erzählen. Wählen Sie im Fenster Scene Hierarchy 2. WorldMesh Controller [Set Tracker Input] aus. Klicken Sie dann im Fenster Inspector auf das Feld Tracker und wählen Sie die neu hinzugefügte Komponente Device Tracking aus.

Den Device-Tracker im WorldMesh Controller in Lens Studio einstellen, um die Weltverfolgung zu gewährleisten.

Funktionsweise

Das Welt der Mesh-Technologie-Beispiel demonstriert zwei der wichtigsten Funktionen, die durch die Welt der Mesh-Technologie ermöglicht werden:

  • Welt der Mesh-Technologie: Ein Mesh, das automatisch generiert wird und die reale Welt repräsentiert. Sie können dies verwenden, um AR-Effekte basierend auf der realen Welt zu verdecken.
  • Hit-Test-Ergebnisse: Mithilfe der Raycasting- oder Hit-Test-Funktion können Sie Informationen über das Mesh erhalten, das an einem bestimmten Punkt getroffen wurde, sowie dessen Position und Normalenvektor. Auf Geräten mit LiDAR können Sie auch Informationen über den Typ der getroffenen Oberfläche erhalten. Erfahren Sie mehr darüber in der API-Dokumentation.
Weiterlesen >>  Bildung des Imparfait im Französischen: Eine umfassende Anleitung

Wie andere Linsen, bei denen sich der Benutzer bewegen können sollte, verwendet dieses Beispiel den World-Modus in der Device Tracking-Komponente, die sich im Objekt Camera befindet.

Sie können sehen, wie die Welt der Mesh-Technologie in diesem Beispiel aufgebaut wird, indem Sie das Objekt World mesh auswählen und dann sein Material von occluder in ein sichtbares ändern.

Die Welt der Mesh-Technologie wird in Lens Studio visualisiert, indem das Material von “Occluder” auf ein sichtbares Material geändert wird.

Eine dynamische Demonstration der Welt der Mesh-Technologie in Lens Studio, die zeigt, wie sich das Mesh in Echtzeit an die reale Umgebung anpasst.

Instanziieren von Objekten basierend auf den Informationen einer Oberfläche

Das Beispiel bietet zwei Möglichkeiten, um zu beschreiben, wo Ihre virtuellen Objekte instanziiert werden sollen: nach Oberflächentyp oder nach normaler Ausrichtung.

Nach Oberflächentyp werden semantische Informationen über die Oberfläche verwendet, auf der potenziell instanziiert wird. Dies ist nur auf Geräten mit LiDAR verfügbar. Sie können festlegen, dass ein virtuelles Objekt nur auf Folgendem erzeugt werden soll:

  • Wand
  • Boden
  • Decke
  • Tisch
  • Sitz
  • Fenster
  • Tür
  • Keine (der oben genannten Typen)

Wenn ein Gerät eine Oberfläche nicht semantisch beschreiben kann, wird standardmäßig None verwendet.

Das Beispiel bietet einen Typ All, der einen Spawner für jeden oben beschriebenen Typ hinzufügt, sodass Sie sicherstellen können, dass ein Objekt überall erzeugt wird. Dies ist nützlich, wenn Sie möchten, dass ein Objekt unabhängig davon erzeugt wird, ob der Oberflächentyp bekannt ist oder nicht.

Nach normaler Ausrichtung wird die Ausrichtung der erkannten Oberfläche verwendet, um zu bestimmen, was instanziiert werden soll. Mit anderen Worten, Sie können einem Objekt mitteilen, dass es nur auf Folgendem instanziiert werden soll:

  • Nach oben gerichtete Oberflächen (wie Tische und Böden)
  • Nach unten gerichtete Oberflächen (wie Decken)
  • Vertikale Oberflächen (wie Wände)

Sie können diese beiden Deskriptoren nach Bedarf kombinieren. Weitere Informationen finden Sie im Abschnitt Spawner-Setup unten.

Zum Beispiel können wir eines der Spawner-Setups auswählen und die Anzahl der Instanzen erhöhen.

Die Anzahl der Instanzen in einem Spawner-Setup in Lens Studio wird erhöht, um die Dichte der erzeugten Objekte zu steuern.

Dann können wir im Vorschaubereich sehen, wie wir auf Oberflächen mit dieser Einstellung instanziieren.

Die Auswirkungen der Erhöhung der Instanzanzahl in einem Spawner-Setup in Lens Studio, die zu einer dichteren Verteilung virtueller Objekte auf realen Oberflächen führt.

Szenenaufbau

Jedes Objekt, das wir erzeugen möchten, benötigt drei Dinge:

  • Die Render Mesh Visuals, die erzeugt werden sollen
  • Ein spezielles Graphmaterial für jedes Render Mesh Visual, das die Instanziierung ermöglicht
  • Ein SpawnerSetup-Skript, das konfiguriert, wie das Objekt erzeugt werden soll

Standardmäßig enthält das Beispiel mehrere Objekte und ihren entsprechenden Spawner für jeden Oberflächentyp.

  • Wüste: Sitztyp
  • Wolken: Wandtyp
  • Boot: Bodentyp
  • Wald: Tischtyp
  • Sterne: Deckentyp
  • Planeten: Kein Typ (Oberflächentypen, die wir nicht kennen)
  • Wolken: Alle vertikalen Oberflächen
  • Ebene: Alle nach unten gerichteten Oberflächen
  • Bäume: Alle nach oben gerichteten Oberflächen

Sie können mit der Interaktiven Vorschau spielen, um zu sehen, wie diese Objekte in Ihrer Szene instanziiert werden, als ob Sie sich auf einem Gerät mit LiDAR befänden. Die klassische Video- und Fotovorschau zeigt, wie die Linse auf Nicht-LiDAR-Geräten aussehen wird.

Sie können die Visuals unter dem Objekt Objects Presets und ihren SpawnerSetup unter dem Objekt Objects Controller finden.

Die Visuals und Spawner-Setups für verschiedene Objekte in der Szenenhierarchie in Lens Studio.

Jedes referenzierte Render Mesh Visual hat ein spezielles Graphmaterial. Da wir die Welt mit vielen dieser Objekte bevölkern, ist es effizienter, sie über ihr Material (Shader) zu instanziieren als mit zusätzlichen Szenenobjekten.

Weiterlesen >>  Gérondif Bildung: So einfach geht's im Französischen!

Diese Graphmaterialien sind insofern einzigartig, als ihre Frustum Culling mit der Option Extend mit einem großen Padding versehen ist, sodass sie nicht verschwinden, wenn Sie von ihrem Ursprung wegschauen (da die Instanziierung überall sein kann), und Parameter haben, die über das Skript übergeben werden und beschreiben, wo sie instanziiert werden sollen.

Die Parameter und Einstellungen eines speziellen Graphmaterials in Lens Studio, das für die Instanziierung mit der Welt der Mesh-Technologie verwendet wird.

Auf hoher Ebene weist das SpawnerSetup das spezielle Graphmaterial an, neue Kopien des Render Mesh Visual basierend auf dem Hit Test Result zu instanziieren.

Erzeugen Ihres eigenen Objekts

Hinzufügen Ihrer Assets

Sie können Ihr eigenes 3D-Objekt importieren, indem Sie es in das Szenenfenster von Lens Studio ziehen. Ziehen Sie sie dann unter die Objekte Objects Presets im Fenster Scene Hierarchy.

Eine Demonstration, wie ein 3D-Objekt in das Szenenfenster von Lens Studio importiert wird.

Nachdem das Objekt importiert wurde, fügen Sie das Mesh in Ihre Szene ein. Platzieren Sie es unter dem Objekt Objects Presets [EDIT_CHILDREN].

Das Mesh eines importierten 3D-Objekts wird in Lens Studio unter dem Objekt “Objects Presets [EDIT_CHILDREN]” platziert.

Erfahren Sie mehr im Export- und Importieren von 3D-Inhalten Guide.

Anwenden des speziellen Materials

Nachdem Ihre Objekte importiert wurden, erstellen wir das spezielle Material, das darauf angewendet werden soll.

Sie können mit der rechten Maustaste auf das Asset World Mesh - Spawn On Surfaces im Fenster Asset Browser klicken und im Dropdown-Menü Unpack for Editing auswählen, um alle im Bundle gespeicherten Assets zu entpacken. Klicken Sie hier, um mehr über Asset Packages zu erfahren. Sobald Sie das Paket entpackt haben, können Sie seinen Inhalt bearbeiten.

Duplizieren Sie eines der Beispiel-Graphmaterialien, indem Sie mit der rechten Maustaste auf eines im Fenster Asset Browser klicken und dann die Schaltfläche duplicate drücken.

Das Duplizieren eines Beispiel-Graphmaterials im Asset-Browser in Lens Studio, um die Erstellung benutzerdefinierter Materialien zu erleichtern.

Weisen Sie dann das neue Material dem Render Mesh Visual des von Ihnen importierten Objekts zu.

Da die Standardmaterialien farbig sind, um die verschiedenen Instanzen zu unterscheiden, können Sie die Base Color auf Weiß setzen, sodass Ihre Textur ohne Farbänderungen durchscheint.

Die Grundeinstellung eines Materials in Lens Studio wird auf Weiß eingestellt, um die ursprünglichen Farben und Texturen des zugrunde liegenden Meshes beizubehalten.

Dieses Beispiel enthält mehrere Beispielmaterialien, die Ihnen den Einstieg erleichtern. Da es sich jedoch um Graphmaterialien handelt, können Sie sie nach Belieben an Ihre Bedürfnisse anpassen, indem Sie im Fenster Asset Browser auf Ihre Kopie doppelklicken, um sie im Material Editor zu öffnen!

Der Materialeditor in Lens Studio, in dem Graphmaterialien bearbeitet und angepasst werden können, um benutzerdefinierte visuelle Effekte zu erzielen.

Wenn Sie stattdessen einem vorhandenen Graphmaterial die spezielle Funktion hinzufügen möchten, können Sie alle Knoten kopieren, die sich auf die Vertex-Shader beziehen, und das Frustum Culling-Padding Ihres Materials erhöhen.

Stellen Sie außerdem sicher, dass alle Texturparameter unter Controller by Script den Filtering Mode Nearest verwenden (klicken Sie auf die Schaltfläche V neben der Textur, um die Optionen der Textur anzuzeigen). Dies ist wichtig, um sicherzustellen, dass der Shader die vom Skript übergebenen präzisen Daten anstelle von gefilterten Daten lesen kann.

Der Filtermodus einer Textur in einem Graphmaterial in Lens Studio wird auf “Nächster” gesetzt, um sicherzustellen, dass die vom Skript übergebenen Daten präzise gelesen werden.

Ein Beispiel für ein Material mit einem benutzerdefinierten Setup finden Sie in dem Material, das vom Wasser verwendet wird. Im Wassermaterial wird die Wassertextur prozedural und nicht durch eine Textur erstellt.

Weiterlesen >>  Fortschrittliche Technologien für präzise Lungenfunktionsmessung: Ein Überblick

Hinzufügen des Spawner-Setups

Nachdem Ihre Objekte eingerichtet sind, können wir sie mit dem SpawnerSetup erzeugen.

Erstellen Sie im Fenster Scene Hierarchy unter Objects Controller ein neues Objekt.

Ein neues Objekt wird unter dem Objekt “Objects Controller” in der Szenenhierarchie in Lens Studio erstellt.

Wählen Sie dann das neue Objekt aus und klicken Sie im Fenster Inspector auf Add Component > SpawnerSetup script.

Das SpawnerSetup-Skript wird in Lens Studio zu einem neuen Objekt hinzugefügt, um die Erzeugung von Objekten in der Szene zu ermöglichen.

Spawner-Setup

Das Spawner Setup-Skript enthält verschiedene Optionen, mit denen Sie konfigurieren können, wie Ihre Objekte erzeugt werden sollen.

  • Objects: eine Liste von Objekten mit einem Render Mesh Visual, mit dem oben beschriebenen speziellen Graphmaterial.
  • Group objects: Wenn diese Option aktiviert ist, werden alle aufgelisteten Objekte an derselben Stelle positioniert. Wenn sie deaktiviert ist, wird eines der aufgelisteten Objekte zufällig erzeugt.
  • Surface Type: Der Typ der Oberfläche, auf der dieses Objekt erzeugt werden soll.
  • Ignore World Pos: Verwenden Sie vec3(0,0,0) als Position der Objektinstanz anstelle der Position des Objekts im Fenster Inspector.
  • Orientation: Wie Sie die Drehung für jede Instanz generieren möchten.
  • Direction Type: Ob Sie das Objekt nur erzeugen möchten, wenn der Hit-Test eine bestimmte Ausrichtung liefert.
  • Spacing: Wie vollgepackt die Objekte sein sollen. Je höher die Zahl, desto weniger vollgepackt. Normalerweise ist eine höhere Zahl besser, sodass Sie mehr Bereiche mit weniger Objekten abdecken können.
  • Min Scale: Minimalwert des Multiplikators für die Skalierung des Objekts.
  • Max Scale: Maximalwert des Multiplikators für die Skalierung des Objekts.
  • Max Instances: Die maximale Anzahl von Objekten, die in der Welt erzeugt werden sollen.

Die verschiedenen Optionen, die im SpawnerSetup-Skript in Lens Studio verfügbar sind, mit denen Entwickler die Erzeugung und Platzierung virtueller Objekte in der Szene steuern können.

Mit Ihrem Spawner-Setup sollten Sie jetzt sehen, wie Ihre Objekte in der Szene im Fenster Preview instanziiert werden.

Unter dem Objekt WorldMesh Controller im Objekt Helper Scripts im Fenster Scene Hierarchy können Sie die Surface Dir Variation ändern, sodass der Direction Type nicht exakt sein muss. Das heißt: Lassen Sie Oberflächen zu, die im Allgemeinen der erwarteten Ausrichtung zugewandt sind (z. B. zählt eine im Allgemeinen nach oben gerichtete Oberfläche als nach oben gerichtete Oberfläche).

Fallback-Modus

Standardmäßig bietet das Beispiel eine virtuelle Oberfläche für Boden-, Tisch- und Wandobjekte. Sie können diesen Abschnitt überspringen, wenn Sie keine bestimmte Konfiguration benötigen.

Auf Geräten ohne LiDAR-Funktionen können Sie definieren, wie Ihre Objekte die Welt bevölkern sollen, indem Sie eine “virtuelle Oberfläche” beschreiben.

Sie können Ihre eigenen Definitionen hinzufügen oder diese im Skript WorldMeshController ändern, indem Sie einen Generator für ein gefälschtes Hit Test Result definieren.

Zum Beispiel stellen wir im folgenden Fall Punkte auf einer Oberfläche zwischen -125 und 125 auf der x-Achse, -50 auf der y-Achse und irgendwo zwischen 50 und 250 auf der z-Achse bereit, die alle eine Normale haben, die nach oben zeigt, um ein Objekt für den Oberflächentyp floor zu erzeugen.

<span><span>var</span><span> fakeFloorResult </span><span>=</span><span>{</span></span><span><span>isValid</span><span>:</span><span>function</span><span>(</span><span>)</span><span>{</span></span><span><span>return</span><span>true</span><span>;</span></span><span><span>}</span><span>,</span></span><span><span>getWorldPos</span><span>:</span><span>function</span><span>(</span><span>)</span><span>{</span></span><span><span>return</span><span>new</span><span>vec3</span><span>(</span><span>Math</span><span>.</span><span>random</span><span>(</span><span>)</span><span>*</span><span>250</span><span>-</span><span>125</span><span>,</span><span>-</span><span>50</span><span>,</span><span>Math</span><span>.</span><span>random</span><span>(</span><span>)</span><span>*</span><span>250</span><span>-</span><span>50</span><span>)</span><span>;</span></span><span><span>}</span><span>,</span></span><span><span>getNormalVec</span><span>:</span><span>function</span><span>(</span><span>)</span><span>{</span></span><span><span>return</span><span> vec3</span><span>.</span><span>up</span><span>(</span><span>)</span><span>;</span></span><span><span>}</span><span>,</span></span><span><span>getClassification</span><span>:</span><span>function</span><span>(</span><span>)</span><span>{</span></span><span><span>return</span><span> global</span><span>.</span><span>WorldMeshController</span><span>.</span><span>surfaceType</span><span>.</span><span>Floor</span><span>;</span></span><span><span>}</span><span>,</span></span><span><span>}</span><span>;</span></span>

Dann müssen wir dies nur noch zur Liste der möglichen Ergebnisse hinzufügen:

<span><span>var</span><span> fakeResultsPool </span><span>=</span><span>[</span><span>fakeFloorResult</span><span>,</span><span> fakeTableResult</span><span>,</span><span> fakeWallResult</span><span>]</span><span>;</span></span>

Auf diese Weise können Sie sowohl verschiedene Arten von Oberflächen als auch sogar eine Anzahl von Oberflächen für jeden Typ definieren.

Vorschau Ihrer Linse

Sie sind jetzt bereit, eine Vorschau Ihrer Linsenerfahrung anzuzeigen. Um eine Vorschau Ihrer Linse in Snapchat anzuzeigen, folgen Sie der Pairing to Snapchat Anleitung.

Leave a Reply

Your email address will not be published. Required fields are marked *