Übung: Erstellen intelligenter Objektplatzierungen mithilfe von Solvern

Abgeschlossen

Solver sind Komponenten des Mixed Reality Toolkit (MRTK). In den folgenden Abschnitten werden zwei Solvertypen und ihre Funktionen beschrieben.

Position der Solver im MRTK

Die MRTK-Solver befinden sich im SDK-Ordner des Mixed Reality Toolkit. Wechseln Sie zum Anzeigen der in Ihrem Projekt verfügbaren Solver zu Packages>MRTK Spatial Manipulation>Solvers.

Screenshot: Speicherort des Ordners „Solver“

Solver „Richtungsindikator“

Mit dem Solver „Richtungsindikator“ können Sie den Blick des Benutzers auf Objekte lenken. Gehen Sie dazu wie folgt vor:

  1. Wechseln Sie im Fenster Projekt zum Ordner Ressourcen>MRTK.Tutorials.GettingStarted>Prefabs. Ziehen Sie das Prefab Chevron in das Fenster Hierarchy. Legen Sie unter „Transform“ die Position auf X = 0, Y = 1,5, Z = 2 fest, um das Prefab in der Nähe des Objekts RoverExplorer zu platzieren.

    Screenshot: Auswählen des neu hinzugefügten Prefabs „Chevron“

  2. Benennen Sie das neu hinzugefügte Objekt „Chevron“ in Indicator um. Klicken Sie dann im Fenster Inspektor auf die Schaltfläche Komponente hinzufügen, um die Komponente DirectionalIndicator hinzuzufügen.

    Screenshot: Hinzufügen der Solverkomponente „DirectionalIndicator“

  3. Konfigurieren Sie die Komponenten DirectionalIndicator und SolverHandler wie folgt:

    a. Überprüfen Sie, ob die Option Typ des nachverfolgten Ziels (Tracked Target Type) der Komponente SolverHandler auf Kopf festgelegt ist.

    b. Weisen Sie das Objekt RoverExplorer dem Eintrag Richtungsziel (Directional Target) der Komponente DirectionalIndicator zu. Ziehen Sie hierzu das Objekt aus dem Fenster Hierarchie in das Feld Kein (Transform).

    c. Ändern Sie den Wert für Ansichtsoffset in 0,2.

    Screenshot: Konfigurieren der Solverkomponente „DirectionalIndicator“

  4. Klicken Sie auf Wiedergabe, um in den Spielmodus zu wechseln. Halten Sie die rechte Maustaste gedrückt, während Sie die Maus nach links oder rechts bewegen, um die Blickrichtung zu verändern.

    Wie Sie sehen, wird beim Wegsehen vom Objekt RoverExplorer das Objekt Indicator angezeigt, das den Blick in Richtung des RoverExplorer-Objekts lenkt.

    Screenshot: Geteilte Ansicht im Wiedergabemodus mit ausgeführtem Solver „DirectionalIndicator“

Solver „Zum Platzieren tippen“

Mit dem Solver „Zum Platzieren tippen“ können Sie Objekte neu positionieren. Gehen Sie dazu wie folgt vor:

  1. Wählen Sie im Fenster Hierarchie das Objekt RoverExplorer>RoverAssembly aus. Klicken Sie dann im Fenster Inspector auf die Schaltfläche Add Component, um die Komponente Tap To Place hinzuzufügen. Konfigurieren Sie die Komponente wie folgt:

    a. Überprüfen Sie, ob die Option Typ des nachverfolgten Ziels (Tracked Target Type) der Komponente SolverHandler auf Kopf festgelegt ist.

    b. Deaktivieren Sie Use Default Surface Normal Offset, und stellen Sie sicher, dass Surface Normal Offset auf 0 festgelegt ist.

    c. Aktivieren Sie das Kontrollkästchen Vertikale Ausrichtung beibehalten.

    Screenshot: Hinzufügen und Konfigurieren der Solverkomponente „Zum Platzieren tippen“

  2. Verwenden Sie dann Add Component, um die Komponente Stateful Interactable hinzuzufügen. Suchen Sie im Fenster Inspector nach dem On Clicked ()-Ereignis. Klicken Sie auf das Symbol +, um ein neues Ereignis hinzuzufügen. Konfigurieren Sie das Ereignis wie folgt:

    a. Weisen Sie das RoverAssembly-Objekt als Listener für das On Clicked ()-Ereignis zu, indem Sie es aus Hierarchy in das Feld None (Object) ziehen.

    b. Wählen Sie in der Dropdownliste No FunctionTapToPlace>StartPlacement() aus, um diese Methode beim Auslösen des Ereignisses aufzurufen.

    Screenshot: Konfigurieren der Komponente „Zum Platzieren tippen“ des Ereignisses „On Placing Started“

  3. Lassen Sie das Objekt RoverAssembly im Fenster Hierarchie ausgewählt, und suchen Sie im Fenster Inspektor nach dem Ereignis On Placing Started (). Klicken Sie auf das Symbol +, um ein neues Ereignis hinzuzufügen.

    Screenshot: Hinzufügen der Komponente „Zum Platzieren tippen“ zum Ereignis „On Placing Started“

  4. Konfigurieren Sie das Ereignis wie folgt:

    a. Weisen Sie dem Ereignis On Placing Started () das Objekt RoverAssembly als Listener zu, indem Sie es aus dem Fenster Hierarchie in das Feld Kein (Objekt) ziehen.

    b. Klicken Sie in der Dropdownliste Keine Funktion auf TapToPlace>float SurfaceNormalOffset, um den Eigenschaftswert SurfaceNormalOffset beim Auslösen des Ereignisses zu aktualisieren.

    c. Überprüfen Sie, ob das Argument auf 0 festgelegt ist.

    Screenshot: Konfigurieren der Komponente „Zum Platzieren tippen“ des Ereignisses „On Placing Started“

  5. Klicken Sie im Fenster Hierarchie mit der rechten Maustaste auf eine leere Stelle. Klicken Sie auf 3D-Objekt>Cube, um ein temporäres Objekt zu erstellen, das den Untergrund darstellen soll. Konfigurieren Sie die Komponente Transform wie folgt:

    • Position: X = 0; Y = 0,15; Z = 6
    • Drehung: X = 0, Y = 0, Z = 0
    • Skalierung: X = 10, Y = 0,2, Z = 10

    Screenshot: Hinzufügen und Positionieren des temporären Cube-Objekts als Untergrund

  6. Klicken Sie auf Wiedergabe, um in den Spielmodus zu wechseln. Halten Sie die rechte Maustaste gedrückt, während Sie die Maus so weit nach unten bewegen, bis das RoverAssembly-Objekt in Ihr Blickfeld gerät.

    Screenshot: Geteilte Ansicht im Wiedergabemodus mit dem RoverAssembly-Objekt im Blickfeld

  7. Halten Sie die Leertaste gedrückt, klicken Sie auf die linke Maustaste, um ein Tippen in die Luft durchzuführen, und starten Sie den Vorgang zum Platzieren durch Tippen.

    Screenshot: Geteilte Ansicht im Wiedergabemodus mit gestarteter Platzierung

  8. Halten Sie die rechte Maustaste gedrückt, während Sie die Maus nach links oder rechts bewegen, um die Blickrichtung zu verändern. Wenn Sie mit der Platzierung zufrieden sind, halten Sie die Leertaste gedrückt, und klicken Sie auf die linke Maustaste, um ein abschließendes Tippen in die Luft durchzuführen.

    Screenshot: Geteilte Ansicht im Wiedergabemodus mit abgeschlossener Platzierung

  9. Wenn Sie das Feature im Spielmodus getestet haben, klicken Sie mit der rechten Maustaste auf das Cube-Objekt. Klicken Sie auf Löschen, um das Objekt aus der Szene zu entfernen.

    Screenshot: Löschen des temporären Cubes als Untergrund