Övning – Lägg till handinteraktion med objectmanipulator

Slutförd

ObjectManipulator-skriptet stöder direkt manipulationsmodalitet för indatamodellen för händer och rörelsekontrollanter. När skriptet är kopplat till ett objekt kan användaren flytta, skala eller rotera objektet med händerna. I den här övningen skapar du två kuber, kopplar de nödvändiga skripten till dem och flyttar sedan runt kuberna.

Lägg till och justera den första kuben

  1. I menyraden väljer du GameObject>3D Object>Cube.

    Screenshot of menu commands for adding the cube.

    Kubens standardstorlek är en kubikmeter, som är för stor för våra syften. Vi skalar ned storleken till 20 kubikcentikmeter.

  2. Välj kuben och ändra sedan kubens skalningsvärden i avsnittet Transformera till följande i Inspector:

    X = 0,2, Y = 0,2, Z = 0,2

    Kuben placerades i scenen vid standardpositionen (0,0,0). Det innebär att kuben är i samma position som användarens headset och att användaren inte kan se kuben förrän den flyttas bakåt. Vi ändrar kubens positionsvärden så att den är på en bättre plats för visning.

  3. I Inspector ändrar du kubens positionsvärden i avsnittet Transformera till följande:

    X = -0,2, Y = 1,6, Z = 0,5

    Screenshot of the cube's transform component after updates.

    Vi vill kunna se tre sidor av kuben, så vi ändrar även kubens rotation.

  4. I Inspector ändrar du kubens rotationsvärden i transformeringsavsnittsvärdena till följande:

    X = 9, Y = 14, Z = 0

    Dricks

    Om du vill zooma in på kuben markerar du den, kontrollerar att markören hovrar över fönstret Scen och trycker på F-tangenten. Du kan zooma in på valfritt objekt på det här sättet.

Lägg till skripten i kuben

För att ett objekt ska vara "greppbart" med spårade händer måste det ha tre komponenter anslutna:

  • En Collider-komponent (du behöver inte göra något här; Unitys kub har redan en Box Collider kopplad som standard)
  • Objektmanipulatörskomponent (skript)
  • Constraint Manager-komponent (skript)
  1. När kuben fortfarande är markerad väljer du knappen Lägg till komponent i fönstret Inspector och söker sedan efter och väljer skriptet Object Manipulator.

    Screenshot of adding the Object Manipulator script.

    Skriptet Object Manipulator gör ett objekt flyttbart, skalbart och roterande med en eller två händer. När du lägger till skriptet Object Manipulator läggs även Constraint Manager-skriptet till automatiskt eftersom skriptet Object Manipulator är beroende av det.

    Screenshot of the Constraint Manager script added to the cube.

Uppdatera kubens material

I prestandasyfte rekommenderar vi att du använder MRTK-material i stället för standardmaterialet för Unity.

  1. När kuben fortfarande är markerad letar du upp och expanderar avsnittet Material i Mesh Renderer-komponenten.
  2. Ersätt standardmaterialet med det MRTK_Standard_White materialet som finns under MRTK Standard Assets>Materials. Du kan göra detta genom att dra materialet direkt till fältet Element i avsnittet Material

Lägg till en andra kub

  1. Högerklicka på kuben i hierarkin och välj Duplicera. Den duplicerade kuben visas med namnet Cube (1).

  2. Högerklicka på den ursprungliga kuben, välj Byt namn och ge kuben namnet Near Cube.

  3. Högerklicka på den duplicerade kuben, välj Byt namn och namnge sedan kuben Far Cube.

    Just nu ser det ut som om det bara finns en kub i scenvyn. Det beror på att Near Cube och Far Cube är på samma exakta plats. Vi ändrar Far Cubes position och rotation.

  4. När Far Cube fortfarande är markerat ändrar du dess värden i transformeringskomponenten till följande:

    Position: X = 0,6, Y = 1,6, Z = 1,1

    Rotation: X = 27, Y = 0, Z = 0

    Nu ska kameran se Near Cube till vänster och Far Cube lite längre bort till höger. Bekräfta detta genom att i hierarkin välja Main Kamera (under MRTK XR Rig> Kamera Offset) och titta sedan på fönstret Main Kamera i fönstret Scen.

    Screenshot of the Main Camera view in the Scene window.

    Dricks

    Om du vill att vyn i fönstret Scen ska se ut mer som vad kameran ser, bläddrar du runt i fönstret Scen . Du kan behöva ställa in kamerans Clear FlagsSkybox om den inte är det som standard.

Hämta och flytta kuberna i uppspelningsläge

  1. Välj knappen Spela upp. När projektet börjar spelas upp växlar vyn till spelfönstret.

    Screenshot of the Game window after entering Play mode.

    Kommentar

    Innan du spelar bekräftar du att det finns en giltig profiluppsättning under Project Inställningar> MRTK3.

  2. Välj knappen med tre punkter ovanför det övre högra hörnet i spelfönstret och välj sedan Maximera.

    Screenshot of Maximize command for the Game window.

  3. Tryck på och håll ned blankstegsfältet så att den simulerade högra handen visas i vyn.

  4. Flytta den simulerade handen närmare nära kuben tills den rör kuben på sidan eller nederkanten.

    Screenshot of the simulated right hand touching the Near Cube.

  5. Klicka på den vänstra musknappen (detta gör att handen "hämtar" kuben) och dra sedan kuben runt scenen.

    Screenshot of Move the cube.

    För att hämta och flytta Far Cube använder vi den bortre pekaren som är kopplad till den simulerade handen.

  6. Om du behöver det trycker du på och håller ned blankstegsfältet igen för att få den simulerade högra handen att visas. Observera den långt pekare som sträcker sig från slutet av handens pekfinger.

    Screenshot of simulated hand's far pointer.

  7. Flytta handen närmare Far Cube tills du kan se spetsen på pekaren på kuben. Du kan behöva flytta runt handen i en cirkelrörelse några gånger för att få pekarspetsen att visas på kuben.

    Screenshot of the far pointer touching the cube.

  8. Klicka på den vänstra musknappen (detta gör att handen stängs, tar på vad vi kallar "nypgesten"), och dra sedan kuben runt scenen.