Objectmanipulator — MRTK2

Objectmanipulator

De ObjectManipulator is het nieuwe onderdeel voor manipulatiegedrag, eerder gevonden in ManipulationHandler. De objectmanipulator brengt een aantal verbeteringen en vereenvoudigingen aan. Dit onderdeel is een vervanging voor de manipulatiehandler, die wordt afgeschaft.

Het ObjectManipulator-script maakt een object beweegbaar, schaalbaar en draaibaar met één of twee handen. De objectmanipulator kan worden geconfigureerd om te bepalen hoe het object op verschillende invoergegevens reageert. Het script moet werken met de meeste vormen van interactie, zoals HoloLens 2 gearticuleerde hand, HoloLens 2 handstralen, HoloLens 1 staren en bewegingen en invoer van een immersive headset-bewegingscontroller.

De objectmanipulator gebruiken

Als u de objectmanipulator wilt gebruiken, voegt u eerst het ObjectManipulator scriptonderdeel toe aan een GameObject. Zorg ervoor dat u ook een collider aan het object toevoegt, die overeenkomt met de grijpbare grenzen.

Als u wilt dat het object reageert op bijna gearticuleerde handinvoer, voegt u het NearInteractionGrabbable script ook toe.

Fysicagedrag kan worden ingeschakeld voor de objectmanipulator door een rigidbody-component aan het object toe te voegen. Fysicagedrag dat mogelijk wordt gemaakt door het toevoegen van dit onderdeel wordt uitgebreid besproken in Physics and collisions.

Daarnaast kan manipulatie worden beperkt door manipulatiebeperkingsonderdelen toe te voegen aan het object. Dit zijn speciale componenten die werken met manipulatie en het manipulatiegedrag op de een of andere manier veranderen.

De manipulatie-handler gebruiken in de Unity-editor

Eigenschappen en velden van de controle

Object manipulatorstructuur

Algemene eigenschappen

Hosttransformatie

De objecttransformatie die wordt bewerkt. Standaard ingesteld op het object van het onderdeel.

Manipulatietype

Hiermee geeft u op of het object met één hand of twee handen kan worden bewerkt. Omdat deze eigenschap een vlag is, kunnen beide opties worden geselecteerd.

  • Met één hand: schakelt bewerking met één hand in als deze optie is geselecteerd.
  • Tweehandig: schakelt tweehandige bewerkingen in als deze optie is geselecteerd.

Verre manipulatie toestaan

Hiermee geeft u op of manipulatie kan worden uitgevoerd met behulp van verre interactie met aanwijzers.

Bewerkingseigenschappen met één hand

Draaimodus met één hand in de buurt

Hiermee geeft u op hoe het object zich gedraagt wanneer het met één hand in de buurt wordt gepakt. Deze opties werken alleen voor gearticuleerde handen.

  • Draaien rond objectcentrum: object wordt gedraaid met behulp van het draaien van de hand, maar rond het objectcentrumpunt. Het object lijkt minder te bewegen terwijl het draait, maar er kan een gevoel van verbroken verbinding zijn tussen de hand en het object. Nuttiger voor verre interactie.
  • Draaien rond grijppunt: draai het object met de hand rond het grijppunt tussen de duim en wijsvinger. Het moet voelen alsof het object wordt vastgehouden door de hand.

Draaimodus met één hand ver

Hiermee geeft u op hoe het object zich gedraagt wanneer het met één hand op afstand wordt gepakt. Deze opties werken alleen voor gearticuleerde handen.

  • Draaien rond objectcentrum: het object draaien met behulp van het draaien van de hand, maar rond het middelpunt van het object. Handig voor het inspecteren op afstand zonder dat het objectcentrum zich verplaatst terwijl het object wordt gedraaid.
  • Draaien rond grijppunt: draai het object met behulp van de draaiing van de hand, maar rond het trefferpunt van de aanwijzerstraal. Handig voor inspectie.

Tweehandige manipulatie-eigenschappen

Type manipulatie met twee handen

Hiermee geeft u op hoe manipulatie met twee handen een object kan transformeren. Omdat deze eigenschap een vlag is, kan een willekeurig aantal opties worden geselecteerd.

  • Verplaatsen: Verplaatsen is toegestaan als deze optie is geselecteerd.
  • Schalen: Schalen is toegestaan als deze optie is geselecteerd.
  • Draaien: Draaien is toegestaan als deze optie is geselecteerd.

Manipulatiehandler

Beperkingen

Beperkingen inschakelen

Met deze instelling wordt het gekoppelde beperkingsbeheer ingeschakeld. Transformatiewijzigingen worden verwerkt door beperkingen die zijn geregistreerd bij de geselecteerde beperkingsmanager.

Beperkingsbeheer

In de vervolgkeuzelijst kunt u een van de gekoppelde beperkingsmanagers selecteren. Objectmanipulator zorgt ervoor dat er te allen tijde een beperkingsbeheer is gekoppeld. Houd er rekening mee dat meerdere onderdelen van hetzelfde type onder dezelfde naam in eenheid worden weergegeven. Om het gemakkelijker te maken om onderscheid te maken tussen meerdere beperkingsmanagers op hetzelfde object, geven de beschikbare opties een hint weer over de configuratie van het geselecteerde beperkingsbeheer (handmatige of automatische selectie van beperkingen).

Ga naar onderdeel

De selectie van beperkingsbeheer wordt geleverd met de knop Ga naar onderdeel . Met deze knop schuift de inspector naar het geselecteerde onderdeel, zodat het kan worden geconfigureerd.

Natuurkunde

Instellingen in deze sectie worden alleen weergegeven wanneer het object een RigidBody-onderdeel heeft.

Releasegedrag

Geef op welke fysieke eigenschappen een gemanipuleerd object moet behouden bij het vrijgeven. Omdat deze eigenschap een vlag is, kunnen beide opties worden geselecteerd.

  • Snelheid behouden: wanneer het object wordt vrijgegeven en deze optie is geselecteerd, behoudt het de lineaire snelheid.
  • Keep Angular Velocity: wanneer het object wordt vrijgegeven, blijft de hoeksnelheid behouden als deze optie is geselecteerd.

Gebruik krachten voor bijna-manipulatie

Of fysicakrachten worden gebruikt om het object te verplaatsen bij het uitvoeren van near-manipulaties. Als u dit instelt op onwaar , voelt het object directer verbonden met de hand van de gebruiker. Als u dit instelt op waar , wordt de massa en traagheid van het object geëerd, maar kan het voelen alsof het object verbonden is via een veer. De standaardwaarde is false.

Smoothing

Ver vloeiender maken

Of framesnelheidonafhankelijke vloeiendheid is ingeschakeld voor verre interacties. Ver vloeiend maken is standaard ingeschakeld.

Vloeiender in de buurt

Of framesnelheidonafhankelijke vloeiendheid is ingeschakeld voor bijna-interacties. Bijna vloeiend maken is standaard uitgeschakeld omdat het effect kan worden waargenomen als 'losgekoppeld' van de hand.

Vloeiend maken actief

Verouderd en wordt verwijderd in een toekomstige versie. Toepassingen moeten SmoothingFar, SmoothingNear of een combinatie van de twee gebruiken.

Lerptijd verplaatsen

De mate van afvlakking die op de beweging moet worden toegepast. Het afvlakken van 0 betekent geen afvlakking. Maximumwaarde betekent dat er geen waarde wordt gewijzigd.

Lerp-tijd draaien

De mate van afvlakking die op de draaiing moet worden toegepast. Het afvlakken van 0 betekent geen afvlakking. Maximumwaarde betekent dat er geen waarde wordt gewijzigd.

Lerp-tijd schalen

De mate van vloeiendheid die op de schaal moet worden toegepast. Afvlakking van 0 betekent geen afvlakking. Maximale waarde betekent dat er geen waarde wordt gewijzigd.

Manipulatie-gebeurtenissen

Manipulatie-handler biedt de volgende gebeurtenissen:

  • OnManipulationStarted: geactiveerd wanneer de manipulatie wordt gestart.
  • OnManipulationEnded: Wordt geactiveerd wanneer de manipulatie eindigt.
  • OnHoverStarted: Wordt geactiveerd wanneer een hand /controller de manipulatieerbare, dichtbij of ver weg beweegt.
  • OnHoverEnded: Wordt geactiveerd wanneer een hand / controller de manipulatie ongedaan maken, dichtbij of ver weg.

De volgorde voor het activeren van gebeurtenissen voor manipulatie is:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Als er geen manipulatie is, krijgt u nog steeds hover-gebeurtenissen met de volgende vuurvolgorde:

OnHoverStarted ->OnHoverEnded

Fysica en conflicten

Fysicagedrag kan worden ingeschakeld door een rigidbody-component toe te voegen aan hetzelfde object als een objectmanipulator. Dit maakt niet alleen configuratie van het bovenstaande releasegedrag mogelijk, het maakt ook conflicten mogelijk. Zonder een rigidbody-onderdeel gedragen conflicten zich niet correct tijdens de manipulatie:

  • Botsingen tussen een gemanipuleerd object en een statische collier (dat wil zeggen een object met een collier maar geen star iemand) werken niet, het gemanipuleerde object gaat recht door de statische collider.
  • Botsingen tussen een gemanipuleerd object en een rigidbody (dat wil zeggen een object met zowel een collider als een rigidbody) zorgen ervoor dat het stijve object een botsingsreactie krijgt, maar de reactie is springerig en onnatuurlijk. Er is ook geen botsingsreactie op het gemanipuleerde object.

Wanneer een starbody wordt toegevoegd, moeten botsingen correct werken.

Zonder stijf iemand

Geen stijve body

Met stijfbody

Stijve body

Elastieken (experimenteel)

Elastics kunnen worden gebruikt bij het bewerken van objecten via objectmanipulator. Houd er rekening mee dat het elastics-systeem zich nog steeds in experimentele toestand bevindt. Als u elastics wilt inschakelen, koppelt u een bestaand onderdeel van Elastics Manager of maakt en koppelt u een nieuwe elastische manager via de Add Elastics Manager knop.

Elastieken voor besturingselementen voor grenzen

Zie ook