Handgedehand-

Menu Hand- en -begeleiders

Handcara is een hand met 3D-model die wordt geactiveerd wanneer het systeem de handen van de gebruiker niet detecteert. Dit wordt geïmplementeerd als een 'onderwijsonderdeel' waarmee de gebruiker wordt begeleid wanneer het gebaar niet is geleerd. Als gebruikers de opgegeven beweging een bepaalde periode niet hebben uitgevoerd, worden de handen met een vertraging herhaald. Handje kan worden gebruikt om op een knop te drukken of een hologram op te halen.

Het huidige interactiemodel vertegenwoordigt een groot aantal besturingselementen voor gebaren, zoals schuiven, veel selecteren en bijna tikken. Hieronder vindt u een volledige lijst met bestaande Voorbeelden van Hand-begeleiders:

  • Bijna tikken: wordt gebruikt voor knoppen of het sluiten van objecten die interactief kunnen worden gebruikt
  • Far select: wordt gebruikt voor objecten die ver weg zijn
  • Verplaatsen: wordt gebruikt om een hologram in de ruimte te verplaatsen
  • Draaien: wordt gebruikt om te laten zien hoe hologrammen of objecten moeten worden gedraaid
  • Schaal: wordt gebruikt om te laten zien hoe u hologrammen kunt manipuleren om groter of kleiner te worden
  • Hand-flip: wordt gebruikt om een ui-startvenster of handmenu's weer te geven
  • Up: wordt gebruikt voor het out-of-the-box-gebruik van debird-ervaring. Een andere suggestie is om een ui-startvenster weer te geven
  • Scrollen: wordt gebruikt voor het scrollen van een lijst of een lang document

Voorbeeldscène

U vindt voorbeelden in de scène HandEerExample onder: MixedRealityToolkit.Examples/Experimental/HandTool/Scenes

Hand 3D Assets

U vindt de assets onder: MixedRealityToolkit.SDK/Experimental/HandEer

Kwaliteit

Als u storingen in de gevilde mesh ziet, moet u ervoor zorgen dat uw project de juiste hoeveelheid thee gebruikt. Ga naar Edit > Project Instellingen > Quality > Other > Blend Weights van Unity. Zorg ervoor dat '4 basis' is geselecteerd om Smooth Smooth Smooth te zien. Project Instelling

Scripts

Interactiehint

Het InteractionHint.cs script biedt wrapper-functionaliteit voor het activeren van animaties en vervaagt voor de handmachine.

Een interactiehint instellen

Als u een interactiehint wilt instellen, is het raadzaam om de opgegeven prefabs 'StaticHandCoachRoot_L.prefab' en 'StaticHandCoachRoot_R.prefab' te gebruiken. Dit prefab bevat het InteractionHint-script en de handmachine, evenals de juiste hiërarchie om ervoor te zorgen dat de opgegeven hint-animaties werken zoals bedoeld. Anders moet u het script op een gameObject één bovenliggend niveau vanaf uw handmachine met animator plaatsen.

Eigenschappen van Inspector

  • HideIfHandTracked Deze Booleaanse booleaanse toestand geeft aan of de status van handtracking moet worden gebruikt om visuals te verbergen wanneer de handen van een gebruiker worden bij te houden. Als dit is ingesteld op false, wordt alleen de script-eigenschap customShouldHideVisuals gebruikt om te bepalen of de hint moet worden verborgen.

  • MinDelay Deze eigenschap geeft de minimale vertraging op voor het weergeven van de visuals. Standaard worden de visuals voor de hand na zoveel seconden weergegeven als de handen van de gebruiker niet worden bij te houden.

  • MaxDelay Deze eigenschap geeft de maximale vertraging op voor het weergeven van de visuals. Standaard worden de visuals voor de hand na zoveel seconden weergegeven, zelfs als de handen van de gebruiker worden bijgespoord.

  • UseMaxTimer Als deze Booleaanse naam is ingesteld op false, wordt de maximale timer uitgeschakeld en kan de handhint alleen worden weergegeven wanneer de handen van de gebruiker niet meer worden weergegeven of als de aangepaste voorwaarde false retourneert.

  • Herhaalt Deze eigenschap bepaalt hoe vaak de hint-animatie wordt afgespeeld wanneer de timer min of max is verstreken. De hint wordt vervolgens verborgen en wacht opnieuw op de vertraging.

  • AutoActivate Wanneer deze Booleaanse tekst is ingesteld op true, wordt de hint automatisch uitgevoerd via de timerlogica wanneer het GameObject van het script actief is in de hiërarchie en het script is ingeschakeld. Dit moet alleen worden ingesteld op false als u de hints handmatig wilt laten zien en verwijderen via code.

  • AnimationState De naam van de animatietoestand die moet worden afgespeeld wanneer de hint actief is. Dit moet worden ingesteld voordat de functie StartHintLoop() wordt aangeroepen (tijdens OnEnable als AutoActivate is ingeschakeld).

InteractionHint beheren via script

  • StartHintLoop Met deze functie wordt de lus weergeven/verbergen gestart die anders OnEnable start als de vlag AutoActivate is ingesteld op true.
  • StopHintLoop Met deze functie wordt de verblekende animaties aanroepen als deze momenteel niet wordt afgespeeld. Vervolgens wordt de lus weergeven/verbergen gedeactiveerd en wordt de handmachine inactief in de hiërarchie ingesteld.
  • AnimationState Deze tekenreeks bepaalt welke animatietoestand wordt afgespeeld tijdens de lus. U kunt deze tekenreeks wijzigen om te wijzigen welke status wordt afgespeeld, maar u moet dit doen na het aanroepen van StopHintLoop. U moet StartHintLoop opnieuw aanroepen nadat u de status hebt gewijzigd.
  • CustomShouldHideVisuals U kunt dit instellen met uw eigen functie, die waar moet retourneren wanneer u de handvisu visuals wilt verbergen (houd rekening met de MinMaxTimer, met name de parameter max)

Overwegingen voor aangepaste animaties

Fades is standaard ingesteld op 0,5 seconden, dus aangepaste animaties die zijn gemaakt voor gebruik met de 1,5 seconden, moeten minimaal 1,5 seconden zijn om zinvolle informatie over te brengen

De opgegeven standaard vervaagt en vervaagt de staten, Fade_In en Fade_Out kunnen worden aangepast door de tijdstempel van het tweede sleutelframe te wijzigen om de lengte van de vervaaging in te stellen.

De animator en het script zijn zo ingesteld dat de installatie zo eenvoudig mogelijk moet zijn. Als u nieuwe animaties wilt toevoegen, importeert u gewoon uw fbx, zorgt u ervoor dat de naam van de animatie is ingesteld met een afzonderlijke naam en sleept u die animatie naar de animator.

MoveToTarget

Het script MoveToTarget.cs biedt functionaliteit voor het verplaatsen van de handhint van een traceringspositie naar een doelpositie gedurende een bepaalde periode.

MoveToTarget instellen

De opgegeven prefabs MovingHandCoachRoot_L.prefab en MovingHandCoachRoot_R.prefab bevatten een MoveToTarget in hun hiërarchieën. Als u dit script wilt gebruiken voor uw eigen installatie, moet u het op het hoofd-gameobject met de Animator voor uw installatie plaatsen.

Eigenschappen van Inspector

  • TrackingObject Stel dit in met het object dat de vrachtwagen moet volgen voordat de beweging wordt gestart. Het is raadzaam om een leeg GameObject te maken en dit naar een specifieke positie te verplaatsen, om u te helpen de tracering vast te stellen.
  • TargetObject Stel dit in met het object waar de vrachtwagen tijdens de beweging naar moet gaan. Het is raadzaam om een leeg GameObject te maken en dit naar een specifieke positie te verplaatsen, om u te helpen de tracering vast te stellen.
  • RootObject Stel dit in op een gedeeld bovenliggend object tussen tracering en doelobject, zodat de relatieve posities correct kunnen worden berekend. Het opgenomen prefab heeft zowel tracerings- als doelobjecten in de hiërarchie, maar u kunt het doelobject instellen als een gameObject buiten het prefab en het hoofdobject wijzigen in een gedeeld bovenliggend object.
  • Duur De hoeveelheid tijd die het duurt (in seconden) om over te gaan van TrackingObject naar TargetObject in seconden.
  • TargetOffset Een inseenbare offset om het GameObject op de juiste doelpositie te krijgen. Dit is handig als uw animatie een positie offset tijdens de animatie bevat.
  • Animation Curve Dit wordt standaard ingesteld op een lineaire curve, maar u kunt de curve wijzigen om in-/uit te gaan bij het starten en stoppen van het bewegingspad.

MoveToTarget beheren via script

Maak in uw aangepaste script een aanroep naar Follow() terwijl u wilt dat de handmachine het TrackingObject volgt en roep Vervolgens MoveToTargetPosition() aan wanneer u wilt dat de handmachine de beweging naar het TargetObject start.

MoveToTarget beheren via animaties

Stel in de animatie die moet worden verplaatst twee gebeurtenissen in: één met een aanroep van Follow() en één met een aanroep naar MoveToTargetPosition(). Volg moet worden ingesteld op het eerste sleutelframe, omdat dit ervoor zorgt dat de handmachine uw TrackingObject volgt. MoveToTargetPosition moet worden ingesteld op het sleutelframe waar u wilt dat de vrachtwagen naar het doel gaat. Dit is hoe de scriptfunctionaliteit wordt gebruikt in de opgegeven prefabs.

RotateAroundPoint

Het script RotateAroundPoint.cs biedt functionaliteit voor het roteren van de handhint rond een draaipunt in de tijd.

RotateAroundPoint instellen

De opgegeven prefabs RotatingHandCoachRoot_L.prefab en RotatingHandCoachRoot_R.prefab bevatten een RotateAroundPoint in hun hiërarchieën. Als u dit script wilt gebruiken voor uw eigen installatie, moet u het op het hoofd-gameobject met de Animator voor uw installatie plaatsen.

Eigenschappen van Inspector

  • CenteredParent Stel dit in met het bovenliggende object dat door de vrachtwagen moet worden rond draait.
  • InverseParent Stel dit in met de bovenliggende om inverse te draaien naar gecentreerd Ouders om de richting van de hand hetzelfde te houden. Over het algemeen is dit het bovenliggende object met het InteractionHint-script.
  • Draaipositie Stel dit in op een punt waarop u de hint wilt laten bewegen.
  • Duur De hoeveelheid tijd die het duurt (in seconden) om rond de gecentreerde ouders te draaien.
  • Animation Curve Dit wordt standaard ingesteld op een lineaire curve, maar u kunt de curve wijzigen om in-/uit te gaan bij het starten en stoppen van het bewegingspad.
  • RotationVector Het aantal graden dat langs elke as moet worden geroteerd.

RotateAroundPoint beheren via script

Maak in uw aangepaste script een aanroep naar RotateToTarget() wanneer u wilt dat de handmachine draait rond het gecentreerde ouders. Wanneer u wilt dat de positie opnieuw wordt ingesteld op de oorspronkelijke draaipositie, roept u ResetAndDeterminePivot() aan.

RotateAroundPoint beheren via animaties

Stel in de animatie die moet worden verplaatst twee gebeurtenissen in: één met de aanroep ResetAndDeterminePivot() en één met de aanroep RotateToTarget(). ResetAndDeterminePivot moet worden ingesteld op het eerste keyframe, omdat de handmachine hierdoor opnieuw wordt ingesteld op de pivotPosition. RotateToTarget moet worden ingesteld op het sleutelframe waar u wilt dat de truck draait rond de gecentreerde ouders. Dit is hoe de scriptfunctionaliteit wordt gebruikt in de opgegeven prefabs.