Objektmanipulatör – MRTK2

Objektmanipulator

ObjectManipulator är den nya komponenten för manipuleringsbeteende, som tidigare fanns i ManipulationHandler. Objektmanipulatorn gör ett antal förbättringar och förenklingar. Den här komponenten ersätter manipuleringshanteraren, som kommer att bli inaktuell.

ObjectManipulator-skriptet gör ett objekt flyttbart, skalbart och roterande med en eller två händer. Objektmanipulatorn kan konfigureras för att styra hur objektet svarar på olika indata. Skriptet bör fungera med de flesta former av interaktion, till exempel HoloLens 2 ledad hand, HoloLens 2 handstrålar, HoloLens 1 blick och gester och uppslukande headset rörelsestyrenhetsinmatning.

Så här använder du objektmanipulatören

Om du vill använda objektmanipulatorn lägger du först till ObjectManipulator skriptkomponenten i ett GameObject. Se till att även lägga till en kolliderare i objektet som matchar dess handtagsbara gränser.

Om du vill att objektet ska svara på nära ledade handindata lägger du också till skriptet NearInteractionGrabbable .

Fysikbeteende kan aktiveras för objektmanipulatorn genom att lägga till en rigidbody-komponent i objektet. Fysikbeteende som möjliggörs genom att lägga till den här komponenten beskrivs mer detaljerat i fysik och kollisioner.

Dessutom kan manipulering begränsas genom att lägga till komponenter för manipulationsbegränsningar i objektet. Det här är särskilda komponenter som fungerar med manipulering och ändrar manipuleringsbeteendet på något sätt.

Använda manipulationshanteraren i Unity-redigeraren

Egenskaper och fält för kontroll

Objektmanipulatörsstruktur

Allmänna egenskaper

Värdtransformering

Objekttransformering som kommer att ändras. Standardvärdet är komponentens objekt.

Manipulationstyp

Anger om objektet kan ändras med en hand eller två händer. Eftersom den här egenskapen är en flagga kan båda alternativen väljas.

  • En hand: Aktiverar en handmanipulering om den väljs.
  • Tvåhänta: Aktiverar tvåhandsmanipulering om den väljs.

Tillåt långt manipulering

Anger om manipulering kan göras med hjälp av långt interaktion med pekare.

Enhandsmanipuleringsegenskaper

Rotationsläge för en hand nära

Anger hur objektet ska bete sig när det grips med en hand nära. Dessa alternativ fungerar bara för ledade händer.

  • Rotera om objektcenter: Objektet roterar med hjälp av handens rotation, men om objektets mittpunkt. Objektet verkar röra sig mindre när det roterar, men det kan finnas en känsla av frånkoppling mellan handen och objektet. Mer användbart för långt interaktion.
  • Rotera om greppet: Rotera objektet med handen om greppet mellan tummen och pekfingret. Det ska kännas som om objektet hålls av handen.

Rotationsläge för en hand långt

Anger hur objektet ska bete sig när det grips med en hand på avstånd. Dessa alternativ fungerar bara för ledade händer.

  • Rotera om objektcenter: Rotera objektet med hjälp av handens rotation, men om objektets mittpunkt. Användbart för att inspektera på avstånd utan att objektcentret rör sig när objektet roterar.
  • Rotera om handtagspunkt: Rotera objektet med hjälp av handens rotation, men om pekarens strålträffpunkt. Användbart för inspektion.

Tvåhandsmanipuleringsegenskaper

Manipuleringstyp med två händer

Anger hur två handmanipulering kan transformera ett objekt. Eftersom den här egenskapen är en flagga kan valfritt antal alternativ väljas.

  • Flytta: Flytt tillåts om det väljs.
  • Skala: Skalning tillåts om det väljs.
  • Rotera: Rotation tillåts om det väljs.

Manipulationshanterare

Villkor

Aktivera begränsningar

Den här inställningen aktiverar den länkade begränsningshanteraren. Transformeringsändringar bearbetas av begränsningar som registrerats för den valda begränsningshanteraren.

Villkorshanterare

I listrutan kan du välja någon av de kopplade begränsningshanterare. Objektmanipulatör säkerställer att det finns en begränsningshanterare kopplad hela tiden. Observera att flera komponenter av samma typ visas under samma namn i Unity. För att göra det enklare att skilja mellan flera villkorshanterare för samma objekt visar de tillgängliga alternativen en ledtråd om konfigurationen av den valda begränsningshanteraren (manuell eller automatisk begränsningsval).

Gå till komponent

Valet av begränsningshanterare levereras med knappen Gå till komponent . Den här knappen gör att inspektören bläddrar till den valda komponenten så att den kan konfigureras.

Fysik

Inställningarna i det här avsnittet visas bara när objektet har en RigidBody-komponent.

Versionsbeteende

Ange vilka fysiska egenskaper som ett manipulerat objekt ska behålla när det släpps. Eftersom den här egenskapen är en flagga kan båda alternativen väljas.

  • Behåll hastighet: När objektet släpps, om det här alternativet väljs kommer det att behålla sin linjära hastighet.
  • Behåll Angular hastighet: När objektet släpps behåller det vinkelhastigheten om det här alternativet väljs.

Använda krafter för nära manipulering

Om fysikkrafter används för att flytta objektet när de utför nära manipuleringar. Om du ställer in detta på false kommer objektet att kännas mer direkt anslutet till användarnas hand. Om du ställer in detta på sant kommer att hedra objektets massa och tröghet, men det kan kännas som om objektet är anslutet via en fjäder. Standardvärdet är falskt.

Utjämning

Utjämning långt

Om oberoende utjämning med bildfrekvens är aktiverat för långt interaktioner. Långt utjämning är aktiverat som standard.

Utjämning nära

Om oberoende utjämning med bildfrekvens är aktiverat för nära interaktioner. Nära utjämning är inaktiverat som standard eftersom effekten kan uppfattas som "frånkopplad" från handen.

Utjämning aktiv

Föråldrad och kommer att tas bort i en framtida version. Program bör använda SmoothingFar, SmoothingNear eller en kombination av de två.

Flytta lerp-tid

Mängd utjämning som ska tillämpas på rörelsen. Utjämning av 0 innebär ingen utjämning. Maxvärde innebär ingen värdeändring.

Rotera lerp-tid

Mängd utjämning som ska tillämpas på rotationen. Utjämning av 0 innebär ingen utjämning. Maxvärde innebär ingen värdeändring.

Skala lerp-tid

Mängd utjämning som ska tillämpas på skalan. Utjämning av 0 innebär ingen utjämning. Maxvärde innebär ingen värdeändring.

Manipulationshändelser

Manipulationshanteraren tillhandahåller följande händelser:

  • OnManipulationStarted: Utlöstes när manipuleringen startar.
  • OnManipulationEnded: Utlöses när manipulationen upphör.
  • OnHoverStarted: Utlöses när en hand/kontrollant hovrar över den manipulerbara, nära eller långt.
  • OnHoverEnded: Utlöses när en hand/kontrollant av hovrar bort den manipulerbara, nära eller långt.

Händelsebrandsordningen för manipulering är:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Om det inte sker någon manipulering får du fortfarande hovringshändelser med följande brandordning:

OnHoverStarted ->OnHoverEnded

Fysik och kollisioner

Fysikbeteende kan aktiveras genom att lägga till en styvkroppskomponent i samma objekt som en objektmanipulatör. Detta möjliggör inte bara konfiguration av frisläppningsbeteendet ovan, det möjliggör också kollisioner. Utan en rigidbody-komponent beter sig kollisioner inte korrekt under manipulering:

  • Kollisioner mellan ett manipulerat objekt och en statisk kolliderare (dvs. ett objekt med en kolliderare men ingen styvkropp) fungerar inte, det manipulerade objektet passerar rakt genom den statiska kollideraren som inte påverkas.
  • Kollisioner mellan ett manipulerat objekt och en stelkropp (dvs. ett objekt med både en collider och en styv kropp) gör att den styva kroppen har en kollisionsrespons, men svaret är hoppigt och onaturligt. Det finns inte heller något kollisionssvar på det manipulerade objektet.

När en stelkropp läggs till bör kollisioner fungera korrekt.

Utan styv kropp

Ingen stel kropp

Med styv kropp

Styv kropp

Elastics (experimentell)

Elastics kan användas vid manipulering av objekt via objektmanipulator. Observera att det elastiska systemet fortfarande är i experimentellt tillstånd. Om du vill aktivera elastics länkar du antingen en befintlig elastics manager-komponent eller skapar och länkar en ny elastics-hanterare via Add Elastics Manager knappen.

Bindningar styr elasticiteter

Se även