Oefening: 3D-objecten bewerken met behulp van besturingselement Voor grenzen

Voltooid

Het ObjectManipulator-script maakt een object beweegbaar, schaalbaar en draaibaar met één of twee handen. Dit script ondersteunt het invoermodel voor directe manipulatie, omdat de gebruiker rechtstreeks met zijn handen hologrammen kan aanraken. Gebruik hier ObjectManipulator om handinteracties in te schakelen, zodat u de roververkenner kunt verplaatsen, schalen en draaien.

  1. Daarnaast configureert u de Rover Explorer, zodat u de roveronderdelen op de Rover kunt plaatsen om het een complete roverassembly te maken. Vouw in het deelvenster Hierarchy het RoverExplorer >RoverParts-object uit en selecteer alle onderliggende roveronderdelenobjecten en het RoverAssembly-object . Gebruik vervolgens in het deelvenster Inspector de knop Component toevoegen om de volgende onderdelen toe te voegen aan alle geselecteerde objecten:

    • Object Manipulator -onderdeel (Script)
    • Onderdeel Part Assembly Controller (Script)

    Screenshot of RoverAssembly with all rover part objects selected and components added.

  2. Als alle roveronderdelenobjecten en het RoverAssembly-object nog steeds zijn geselecteerd, configureert u in het deelvenster Inspector het onderdeel Object Manipulator (Script) als volgt:

    • Zoek onder Base Interactable Instellingen de gebeurtenis On Clicked (). Selecteer het + pictogram om een nieuwe gebeurtenis toe te voegen. Configureer de gebeurtenis als volgt:

      a. Wijs het RoverAssembly-object toe als listener voor de gebeurtenis On Clicked () door het vanuit de hiërarchie naar het veld Geen (Object) te slepen.

      b. Selecteer in de vervolgkeuzelijst Geen functie TapToPlace>StartPlacement() om deze methode aan te roepen wanneer de gebeurtenis wordt geactiveerd.

    • Schakel in de vervolgkeuzelijst Toegestane manipulatietype het selectievakje Schaal uit, zodat alleen Verplaatsen en Draaien is ingeschakeld:

    Screenshot of Unity with Two Handed Manipulation Type configured.

  3. Selecteer alleen het RoverAssembly-object en verwijder het Stateful Interactable-onderdeel erop als er een is. Selecteer de drie puntjes uiterst rechts van het onderdeel en selecteer Onderdeel verwijderen.

  4. Navigeer in het deelvenster Project naar de map Packages MRTK Standard Assets>Audio>HoloLens2 om de audioclips>te zoeken:

    Screenshot of Unity Project window with Audio folder selected.

  5. Selecteer in het deelvenster Hiërarchie alle roveronderdelen opnieuw en selecteer vervolgens in het deelvenster Inspector component toevoegen om het onderdeel Audiobronnen toe te voegen en configureer het als volgt:

    • De MRTK_Scale_Start audioclip toewijzen aan het veld AudioClip
    • Schakel het selectievakje Play On Awake uit
    • Ruimtelijke mix wijzigen in 1

    Screenshot of Unity with all rover parts selected and Audio Source component added and configured.

  6. Vouw in het deelvenster Hiërarchie de RoverAssembly > RoverModel_PlacementHints_XRay Parts_PlacementHints> object uit om alle plaatsingshintobjecten weer te geven, selecteer vervolgens het eerste roveronderdeel, RoverParts >Camera_Part en configureer het onderdeel Part Assembly Controller (Script) als volgt:

    • Het Camera_PlacementHint-object toewijzen aan het veld Locatie om te plaatsen

    Screenshot of Unity with Camera_Part PartAssemblyController component configured.

  7. Herhaal stap 5 voor elk van de resterende roveronderdelen en het RoverAssembly-object om het onderdeel Part Assembly Controller (Script) als volgt te configureren:

    • Wijs voor de Generator_Part het Generator_PlacementHint-object toe aan het veld Locatie om te plaatsen
    • Wijs voor de Lights_Part het Lights_PlacementHint-object toe aan het veld Locatie om te plaatsen
    • Wijs voor de UHFAntenna_Part het UHFAntenna_PlacementHint-object toe aan het veld Locatie om te plaatsen
    • Wijs voor de Spectrometer_Part het Spectrometer_PlacementHint-object toe aan het veld Locatie om te plaatsen
    • Wijs voor de RoverAssembly het object zelf toe, dat wil gezegd hetzelfde RoverAssembly-object, aan het veld Location To Place
  8. Selecteer in het deelvenster Hiërarchie het knopobject RoverExplorer > Buttons >Reset en configureer vervolgens in het deelvenster Inspector de gebeurtenis PressableButton OnClicked () als volgt:

    • Wijs het RoverAssembly-object toe aan het veld Geen (Object)
    • Selecteer in de vervolgkeuzelijst Geen functie PartAssemblyController>ResetPlacement () om deze functie in te stellen als de actie die moet worden uitgevoerd wanneer de gebeurtenis wordt geactiveerd

    Screenshot of Unity with Reset button object OnClick event configured.

  9. Als je nu in gamemodus komt, kun je de roveronderdelen op de Rover plaatsen. Zodra het deel zich dicht bij de bijbehorende plaatsingshint bevindt, wordt het vastgeklikt en onderdeel van de Rover. Als u de plaatsingen opnieuw wilt instellen, drukt u op de knop Opnieuw instellen:

    Screenshot of Unity Play mode split view with Reset button being pressed.

Besturingselement Voor grenzen toevoegen

  1. Selecteer in het venster Hierarchy het RoverExplorer-object en gebruik vervolgens in het venster Inspector de knop Component toevoegen om het component BoundsControl toe te voegen. Schakel het selectievakje naast het onderdeel uit om het standaard uit te schakelen :

    Screenshot of Unity with RoverExplorer object selected and components added and disabled.

  2. Navigeer in het venster Project naar de map Packages>MRTK Spatial Manipulation>BoundsControl>Prefabs, klik en sleep de begrenzingsboxWithHandles prefab het prefabveld Bounds Visuals Prefab van het onderdeel Bounds Control.

    Screenshot of Unity with RoverExplorer object selected and the Bounds Visuals Prefab field configured.

  3. Vouw in het deelvenster Hiërarchie het object Menuknoppen-GridLayout >(Knoppen) uit om de drie knoppen weer te geven, wijzig de naam van de derde knop in BoundsControl_Enable en configureer vervolgens in het venster Hiërarchie het BoundsControl_Enable gameobject als volgt:

    • Selecteer het object Labellabel voor het pictogram voor frontplate > animatedcontent >> en wijzig het textMeshPro-onderdeel in Inschakelen. Zorg ervoor dat het labelobject is geactiveerd in de hiërarchie
    • Configureer de gebeurtenis PressableButton.OnClicked() door het RoverExplorer-object toe te wijzen aan het veld None (Object) en BoundsControl>bool Ingeschakeld te selecteren in de vervolgkeuzelijst Geen functie (controleer of het selectievakje argument is ingeschakeld)
    • Selecteer het kleine + pictogram om een andere gebeurtenis toe te voegen
    • Wijs het RoverExplorer-object toe aan het veld Geen (Object)
    • Selecteer in de vervolgkeuzelijst Geen functie ObjectManipulator>ingeschakeld om deze eigenschapswaarde bij te werken wanneer de gebeurtenis wordt geactiveerd en controleer of het selectievakje voor het argument is ingeschakeld
    • Selecteer het kleine + pictogram om een andere gebeurtenis toe te voegen
    • Wijs het RoverExplorer-object toe aan het veld Geen (Object)
    • Selecteer in de vervolgkeuzelijst Geen functie de optie BoundsControl>bool HandlesActive om deze eigenschapswaarde bij te werken wanneer de gebeurtenis wordt geactiveerd en controleer of het selectievakje voor het argument is ingeschakeld
    • Selecteer het object Frontplate > AnimatedContent > Icon > UIButtonFontIcon en wijzig het pictogram in het pictogram met vier pijlen in het onderdeel Font Icon Selector . U vindt dit in de lijst met pictogrammen of stel ** Huidige pictogramnaam** in op 'Pictogram 40'

    Screenshot of Unity with BoundsControl_Enable button object selected and Button Config Helper component configured.

  4. Dupliceer de knop BoundsControl_Enable en wijzig de naam ervan in BoundsControl_Disable. Configureer vervolgens in het deelvenster Inspector het onderdeel Knopconfiguratiehulp (Script) als volgt:

    • Selecteer het labelobject voor het pictogram label voor frontplate > animatedcontent >> en wijzig het textMeshPro-onderdeel in Uitschakelen
    • Configureer de gebeurtenis PressableButton.OnClicked() door ervoor te zorgen dat alle selectievakjes onder de gebeurtenissen zijn uitgeschakeld

    Screenshot of Unity with BoundsControl_Disable button object selected and Button Config Helper component configured.

  5. Als u nu de gamemodus opent en Schakel Inschakelen om Besturingselement voor afhankelijkheid in te schakelen selecteert, kunt u de interactie bijna of ver gebruiken om het besturingselement voor grenzen te verplaatsen, draaien en schalen en uitschakelen selecteren om het besturingselement Voor grenzen opnieuw uit te schakelen:

    Screenshot of Unity Play mode split view with Bounds Control being manipulated.