Kéziedző

Kéziedző menü

A kéziedző egy 3D-s modellelt kéz, amely akkor aktiválódik, ha a rendszer nem észleli a felhasználó kézfogását. Ez "tanítási" összetevőként van megvalósítva, amely segít a felhasználónak, ha a kézmozdulat nem lett tanítva. Ha a felhasználók egy adott ideig nem végezték el a megadott kézmozdulatot, a kéz késleltetéssel hurokba kerül. A kéziedző egy gomb megnyomása vagy egy hologram felvételeként használható.

Az aktuális interakciós modell kézmozdulat-vezérlők széles választékát képviseli, például görgetést, kijelölést vagy közel koppintásokat. Az alábbi lista a meglévő kéziedzői példákat tartalmazza:

  • Közel koppintás – Gombokhoz vagy egymáshoz közel használható objektumokhoz
  • Távoli kijelölés – Távol lévő objektumokhoz használatos
  • Move (Áthelyezés) – Egy hologram térbe való áthelyezését használja
  • Rotate (Elforgatás) – a hologramok és objektumok elforgatásának bemutatója
  • Scale (Méret) – A hologramok nagyobb vagy kisebb méretűre való manipulálására használható
  • Kézfeldobás – Felhasználói felület indítási panelének vagy kézi menüjének a felhozatalára használatos
  • Fogazás – A kiskésés pillanatra használatos a már nem használt élményben. Egy másik javaslat lehet a felhasználói felület indítási panelének megnyitása
  • Görgetés – Lista vagy hosszú dokumentum görgetésére használható

Példa jelenet

Példákat találhat a HandCoachExample jelenetben a MixedRealityToolkit.Examples/Experimental/HandCoach/Scenes alatt

3D-s kézeszközök

Az eszközöket a következő alatt találja: MixedRealityToolkit.SDK/Experimental/HandCoach

Minőség

Ha azt veszi észre, hogy a hézagos hálón hézagok vannak, meg kell győződni arról, hogy a projekt a megfelelő mennyiségű búsultat használja. Ugrás a Unity Edit > Project Gépház > Quality Other Blend >> Weights (Egyéb kevert súlyok) lapra. Győződjön meg arról, hogy a "4 tok" ki van jelölve a Smooth Egyedek számára. Project beállítás

Parancsfájlok

Interakciós tipp

A szkript burkoló funkciót biztosít animációk aktiválására és elhalványításra InteractionHint.cs a kézfúrásnál.

Interakciós tipp beállítása

Egy interakciós tipp beállítását javasoljuk, hogy a megadott "StaticHandCoachRoot_L.prefab" és "StaticHandCoachRoot_R.prefab" előtagokat használja. Ez az előzetesfab tartalmazza a InteractionHint parancsfájlt és kézi felépítést, valamint a megfelelő hierarchiát, amely biztosítja, hogy a megadott tipp animációk a kívánt módon működnek. Ellenkező esetben a szkriptet egy gameObject szülőszinten kell felfelé, a kézfedőfedőtől felfelé az animatorral.

Vizsgáló tulajdonságai

  • HideIfHandTracked Ez a logikai érték határozza meg, hogy a rendszer a kézkövetési állapot segítségével rejtse-e el a vizualizációkat, amikor egy felhasználó kézfogását követik nyomon. Ha ez a beállítás false (hamis) értéket ad meg, a rendszer csak a "customShouldHideVisuals" parancsfájl-tulajdonság alapján határozza meg, hogy el kell-e rejteni a tippet.

  • MinDelay (MinDelay) Ez a tulajdonság határozza meg a vizualizációk megjelenítésének minimális késleltetését. Alapértelmezés szerint a kéz vizualizációi ennyi másodperc után jelennek meg, ha a felhasználó kézzel nem követi nyomon a rendszer.

  • MaxDelay (MaxDelay) Ez a tulajdonság határozza meg a vizualizációk megjelenítésének maximális késleltetését. Alapértelmezés szerint a kéz vizualizációi ennyi másodperc után jelennek meg, még akkor is, ha nyomon követik a felhasználó kézfogását.

  • AMaxTimer használata Ha ez a logikai érték false (hamis) értéket ad meg, letiltja a maximális időzítőt, és csak akkor engedélyezi a kézmutatót, ha a felhasználó kézzel nem látható, vagy az egyéni feltétel hamis értéket ad vissza.

  • Megismétli Ez a tulajdonság azt szabályozza, hogy hányszor játszik le a tipp animáció, ha a minimális vagy maximális időmérőt már eltelte. A tipp ezután elrejti és újra megvárja a késleltetést.

  • Automatikus aktiválás Ha ez a logikai érték true (igaz) értékre van állítva, a tipp automatikusan végigfut az időzítő logikán, ha a szkript GameObjectjectje aktív a hierarchiában, és a szkript engedélyezve van. Ezt csak akkor állítsa false (hamis) értékre, ha manuálisan szeretné szabályozni a tipp megjelenését és a kóddal való megjelenését.

  • AnimációState Annak az animációs állapotnak a neve, amely akkor fog lejátszani, ha a tipp aktív. Ezt a StartHintLoop() függvény előtt kell beállítani (az OnEnable (OnEnable) függvény be van jelölve, ha az AutoActivate be van jelölve).

InteractionHint vezérlése szkripten keresztül

  • StartHintLoop Ez a függvény elindítja a show/hide ciklust, amely egyébként elindítja az OnEnable függvényt, ha az AutoActivate jelző true (igaz) értékre van állítva.
  • StopHintLoop Ez a függvény az elhalványulás animációs állapotot hívja meg, ha az éppen nem lejátszás alatt áll, majd inaktiválja a show/hide hurkot, és a hierarchiában inaktívra állítja a kézi hurkot.
  • AnimációState Ez a sztring határozza meg, hogy a hurok melyik animációs állapotot játssza le. Módosíthatja ezt a sztringet, hogy módosítsa, melyik állapot legyen lejátszva, de ezt a StopHintLoop hívása után kell megtennie, és az állapot módosítása után újra meg kell hívnia a StartHintLoopot.
  • CustomShouldHideVisuals Ezt beállíthatja a saját függvényében, amelynek true (igaz) értéknek kell visszaadnia, ha el szeretné rejteni a kéz vizualizációit (ne feledje, hogy a MinMaxTimer paramétert, pontosabban a max paramétert)

Egyéni animációs szempontok

Az elhalványulás alapértelmezett beállítása 0,5 másodperc, így a berendezéssel használható egyéni animációknak legalább 1,5 másodpercnek kell lennie ahhoz, hogy bármilyen jelentéssel bíró információt közvetítsen.

A megadott alapértelmezett elhalványulási és elhalványulási Fade_In és Fade_Out a második kulcskeret időbélyegének módosításával módosíthatók az elhalványítás hosszának beállításához.

Az animátor és a szkript úgy van beállítva, hogy a beállítás a lehető legegyszerűbb legyen. Új animációs államok hozzáadásához egyszerűen importálja az fbx-et, győződjön meg arról, hogy az animáció neve eltérő névvel van beállítva, majd húzza az animációt az animátorba.

MoveToTarget (Áthelyezés célcélja)

A MoveToTarget.cs szkript olyan funkciót biztosít, amely lehetővé teszi a kézmutató áthelyezését a követési pozícióról a célpozícióra az idő előre haladtában.

A MoveToTarget beállítása

A megadott "MovingHandCoachRoot_L.prefab" és "MovingHandCoachRoot_R.prefab" előfóbok tartalmazzák a MoveToTarget hierarchiájukat. Ha ezt a szkriptet a saját beállításában szeretné használni, helyezze el a gép animátorát tartalmazó gyökér gameobjecten.

Vizsgáló tulajdonságai

  • TrackingObject Ezt állítsa be azzal az objektummal, amit a állványnak követnie kell, mielőtt elindítja a mozgását. Javasoljuk, hogy hozzon létre egy üres GameObjectet, és helyezze át egy adott helyre, hogy segítsen megtalálni a nyomkövetést.
  • TargetObject Ezt állítsa be azzal az objektummal, amelybe a tokot mozgás közben át szeretné állítani. Javasoljuk, hogy hozzon létre egy üres GameObjectet, és helyezze át egy adott helyre, hogy segítsen megtalálni a nyomkövetést.
  • RootObject Állítsa be ezt egy megosztott szülőre a követési és a célobjektum között, hogy a relatív pozíciók helyesen számíthatóak ki. A mellékelt előfab a hierarchiában követési és célobjektumokat is tartalmaz, de a célobjektumot beállíthatja gameObject objektumként az előfedőn kívül, és módosíthatja a gyökérobjektumot egy megosztott szülőre.
  • Időtartam Az az idő másodpercben, amely alatt a TrackingObject és a TargetObject között el kell indulni (másodpercben).
  • TargetOffset (Célkészlet) Egy állítható eltolás, hogy a GameObject a megfelelő célpozícióba érkezzen. Ez akkor hasznos, ha az animáció pozíciót eltol az animáció során.
  • Animációscurve Ez alapértelmezés szerint lineáris görbére van állítva, de módosíthatja a görbét, hogy a mozgási útvonal el- és leállítása közben easszenden a görbét.

A MoveToTarget vezérlése szkripten keresztül

Az egyéni szkriptben hívja meg a Follow() hívást, miközben azt szeretné, hogy a kézi eszköz kövesse a TrackingObjectet, majd hívja meg a MoveToTargetPosition() et, ha azt szeretné, hogy a kézi állvány megkezdje a mozgást a TargetObject felé.

A MoveToTarget vezérlése animációkkal

Az áthelyezni szükséges animációban állítson be két eseményt: egyet a Follow() hívással, egyet pedig a MoveToTargetPosition() hívásával. A követést az első kulcsképkockán kell beállítani, mivel ez okozza, hogy a kézi váz követi a TrackingObjectet. A MoveToTargetPosition halmazt arra a kulcskeretre kell beállítani, ahol a tokot el szeretné kezdeni áthelyezni a célhoz. A szkriptfunkciók így használhatók a megadott előfedőben.

RotateAroundPoint (Ellenőrzőpont elforgatása)

A RotateAroundPoint.cs szkript olyan funkciókat biztosít, amelyek segítségével elforgathatja a kézmutatót egy pivot pont körül az idő alatt.

A RotateAroundPoint beállítása

A megadott "RotatingHandCoachRoot_L.prefab" és "RotatingHandCoachRoot_R.prefab" előtagok a hierarchiáikban tartalmaznak egy RotateAroundPoint adatokat. Ha ezt a szkriptet a saját beállításában szeretné használni, helyezze el a gép animátorát tartalmazó gyökér gameobjecten.

Vizsgáló tulajdonságai

  • CenteredParent (Középre centeredParent) Ezt állítsa be azzal a szülőobjektummal, amely körül szeretné állítani a ékeseteket.
  • InverseParent (InverzParent) Állítsa ezt úgy, hogy a szülő fordított irányban legyen elforgatva a középreParent, hogy a kéz tájolása azonos maradjon. Általában ez lesz a szülőobjektum, rajta a InteractionHint szkript.
  • Kimutatás Állítsa ezt egy olyan pontra, ahol azt szeretné, hogy a tipp a mozgást kezdje.
  • Időtartam A CenteredParent körül való elforgatás ideje (másodpercben).
  • Animációscurve Ez alapértelmezés szerint lineáris görbére van állítva, de módosíthatja a görbét, hogy a mozgási útvonal el- és leállítása közben easszenden a görbét.
  • RotationVector Az egyes tengelyek mentén elforgatható fok.

A rotateAroundPoint szkripten keresztüli szabályozása

Az egyéni szkriptben hívja meg a RotateToTarget() objektumot, ha azt szeretné, hogy a kézfúrás elkezdje elforgatni a CenteredParent mezőben. Ha azt szeretné, hogy a pozíció visszaáll az eredeti PivotPositionra, hívja meg a ResetAndDeterminePivot() et.

A RotateAroundPoint szabályozása animációkkal

Az áthelyezni kívánt animációban állítson be két eseményt: egyet a ResetAndDeterminePivot() hívással, egyet pedig a RotateToTarget() hívással. A ResetAndDeterminePivot adatokat az első kulcsképkockán kell beállítani, mivel ez a kézi állvány PivotPosition-re való visszaállítását okozza. A RotateToTargetet arra a kulcskeretre kell beállítani, ahol el szeretné kezdeni a felcsatolást a CenteredParent körül. A szkriptfunkciók így használhatók a megadott előtagok között.