Megosztás a következőn keresztül:


Kézi edző – MRTK2

Kézi edző menü

A kézi edző 3D modellezett kéz, amely akkor aktiválódik, ha a rendszer nem észleli a felhasználó kezét. Ez "tanítási" összetevőként van implementálva, amely segít a felhasználónak irányítani, ha a kézmozdulat nincs megtanítva. Ha a felhasználók egy ideig nem végezték el a megadott kézmozdulatot, a kéz késleltetéssel ismétlődik. A kézi edző egy gomb megnyomására vagy egy hologram felvételére használható.

Az aktuális interakciós modell számos kézmozdulat-vezérlőt jelöl, például görgetést, távoli kijelölést és közel koppintást. Az alábbiakban a meglévő Hand Coach-példák teljes listája látható:

  • Közeli koppintás – Gombokhoz vagy interakciós objektumok bezárásához használható
  • Távoli kijelölés – Távoli objektumokhoz használatos
  • Áthelyezés – Hologram áthelyezése a térben
  • Forgatás – a hologramok vagy objektumok elforgatását szemlélteti
  • Skálázás – A hologramok nagyobb vagy kisebb méretűre való módosításának szemléltetésére szolgál
  • Kézi tükrözés – A felhasználói felület kezdőképernyőjének vagy a kézi menüknek a megjelenítéséhez használatos
  • Palm up – A kolibri pillanatában használatos a dobozos élményben. Egy másik javaslat lehet a felhasználói felület kezdőképernyője
  • Scroll (Görgetés) – Lista vagy hosszú dokumentum görgetésére szolgál

Példajelenet

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

3D-s eszközök kézi használata

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

Minőség

Ha torzulásokat észlel a nyúzott hálón, meg kell győződnie arról, hogy a projekt a megfelelő mennyiségű ízületet használja. Lépjen a Unity Projektbeállítások > szerkesztése > – Egyéb keverési súlyok című >> szakaszára. Győződjön meg arról, hogy a "4 csont" van kiválasztva a Smooth Joints megtekintéséhez. Projektbeállítás

Parancsfájlok

Interakciós tipp

A InteractionHint.cs szkript burkolófunkciót biztosít az animációk aktiválásához és az elhalványuláshoz a kézi szerelvény számára.

Interakciós tipp beállítása

Interakciós tipp beállításához ajánlott a megadott "StaticHandCoachRoot_L.prefab" és "StaticHandCoachRoot_R.prefab" előtagokat használni. Ez az előlap tartalmazza az InteractionHint szkriptet és a kézi hierarchiát, valamint a megfelelő hierarchiát, hogy a megadott hint animációk a kívánt módon működjenek. Ellenkező esetben a szkriptet egy gameObject egy szülőszinttel feljebb kell helyeznie a kézi géptől az animátor segítségével.

Vizsgáló tulajdonságai

  • HideIfHandTracked Ez a logikai érték határozza meg, hogy a kézkövetési állapotot kell-e használni a vizualizációk elrejtéséhez, amikor egy felhasználó kezét nyomon követik. Ha ez false (hamis) értékre van állítva, a rendszer csak a customShouldHideVisuals szkriptelési tulajdonságot használja annak meghatározására, hogy el szeretné-e rejteni a tippet.

  • 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ó kezét nem követi nyomon a rendszer.

  • 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 elteltével is megjelennek, még akkor is, ha a felhasználó kezét nyomon követik.

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

  • Megismétli Ez a tulajdonság azt szabályozza, hogy a tippanimáció hányszor játszható le, ha a minimális vagy maximális időzítő letelt. A tipp ezután elrejti és újra megvárja a késé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, amikor a szkript GameObject objektuma aktív a hierarchiában, és a szkript engedélyezve van. Ezt csak akkor szabad hamis értékre állítani, ha manuálisan szeretné szabályozni a tipp megjelenését és eltűnését kóddal.

  • AnimationState Annak az animációs állapotnak a neve, amely akkor játszható le, ha a tipp aktív. Ezt a StartHintLoop() függvény meghívása előtt kell beállítani (ha az Automatikus aktiválás be van jelölve az OnEnable alatt).

InteractionHint vezérlése szkripttel

  • StartHintLoop Ez a függvény elindítja a megjelenítési/elrejtési hurkot, amely egyébként OnEnable (Bekapcsolható) kezdetű, ha az Automatikus aktiválás jelző igaz értékre van állítva.
  • StopHintLoop Ez a függvény az elhalványult animációs állapotot hívja meg, ha jelenleg nem játszik le, akkor inaktiválja a megjelenítési/elrejtési hurkot, és inaktívvá teszi a kézimerevítést a hierarchiában.
  • AnimationState Ez a sztring határozza meg, hogy a hurok melyik animációs állapotot játssza le. Módosíthatja ezt a sztringet, hogy megváltoztassa a lejátszott állapotot, 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 StartHintLoop parancsot.
  • CustomShouldHideVisuals Ezt beállíthatja a saját függvényével, amelynek igaz értéket kell visszaadnia, ha el szeretné rejteni a kéz vizualizációit (ne feledje, hogy a MinMaxTimer, pontosabban a maximális paraméter)

Egyéni animációs szempontok

Az elhalványulások alapértelmezés szerint 0,5 másodpercre vannak beszúrva, így a fúrótornyos használatra létrehozott egyéni animációknak legalább 1,5 másodpercnek kell lenniük ahhoz, hogy bármilyen hasznos információt átadhassunk

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

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

MoveToTarget

A MoveToTarget.cs szkript olyan funkciókat biztosít, amelyek segítségével a kézmutatót egy nyomon követési helyről egy célhelyre helyezheti át az idő múlásával.

A MoveToTarget beállítása

A megadott "MovingHandCoachRoot_L.prefab" és "MovingHandCoachRoot_R.prefab" előtagok moveToTargetet tartalmaznak a hierarchiájukban. Ha ezt a szkriptet a saját beállításán szeretné használni, akkor a gyökér gameobjectre kell helyeznie, amely tartalmazza az Animatort a fúrótoronyhoz.

Vizsgáló tulajdonságai

  • TrackingObject Állítsa be ezt azzal az objektummal, amelyet a szerelvénynek követnie kell, mielőtt elindítja a mozgást. Javasoljuk, hogy hozzon létre egy üres GameObject objektumot, és helyezze át egy adott helyre, hogy segítsen meghatározni a nyomkövetést.
  • TargetObject Állítsa be ezt azzal az objektummal, ahová a fúrótornyot mozgás közben át szeretné helyezni. Javasoljuk, hogy hozzon létre egy üres GameObject objektumot, és helyezze át egy adott helyre, hogy segítsen meghatározni a nyomkövetést.
  • RootObject Állítsa be ezt egy megosztott szülőre a nyomkövetés és a célobjektum között, hogy a relatív pozíciók megfelelően kiszámíthatók legyenek. A belefoglalt előfab hierarchiájában nyomkövetési és célobjektumok is szerepelnek, de a célobjektumot gameObject objektumként is beállíthatja az előtagon kívül, és a gyökérobjektumot egy megosztott szülőre módosíthatja.
  • Időtartam A TrackingObjectről a TargetObjectre való áttérés másodpercekben megadott időtartama (másodpercben).
  • TargetOffset Egy beállítható eltolással, hogy a GameObject a megfelelő célhelyre érkezzen. Ez akkor hasznos, ha az animáció pozícióeltolást tartalmaz az animáció során.
  • AnimationCurve Ez alapértelmezés szerint lineáris görbére van beállítva, de módosíthatja a görbét, hogy a mozgásvonal indításakor és leállításakor enyhítsen a mozgásvonalon.

A MoveToTarget vezérlése szkripttel

Az egyéni szkriptben hívja meg a Follow() parancsot, miközben azt szeretné, hogy a kézifék a TrackingObject után kövessen, majd hívja meg a MoveToTargetPosition() parancsot, amikor azt szeretné, hogy a kézimerevség elindítsa a TargetObject felé irányuló mozgását.

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

Az áthelyezni kívánt animációban állítson be két eseményt: egyet a Follow() hívással, a másikat a MoveToTargetPosition() hívásával. A követés beállítását az első kulcskereten kell beállítani, mivel a kézi szerelvény követi a TrackingObject parancsot. A MoveToTargetPosition-t azon a kulcskereten kell beállítani, ahol a fúrótornyot el szeretné helyezni a célhoz. A szkriptfunkciók így használhatók a megadott előtagokban.

RotateAroundPoint

A RotateAroundPoint.cs szkript funkcióval elforgathatja a kézmutatót egy adott kimutatáspont körül az idő múlásával.

A RotateAroundPoint beállítása

A megadott "RotatingHandCoachRoot_L.prefab" és "RotatingHandCoachRoot_R.prefab" előfabok a hierarchiájukban tartalmaznak egy RotateAroundPointot. Ha ezt a szkriptet a saját beállításán szeretné használni, akkor a gyökér gameobjectre kell helyeznie, amely tartalmazza az Animatort a fúrótoronyhoz.

Vizsgáló tulajdonságai

  • Középre hatóParent Állítsa be ezt azzal a szülőobjektummal, amelyet a fúrótoronynak meg szeretne kerekíteni.
  • InverseParent Állítsa be ezt úgy, hogy a szülő fordított irányban forgassa el a középre fordítottParent értéket, hogy a kéz tájolása változatlan maradjon. Általában ez lesz a szülőobjektum, rajta az InteractionHint szkripttel.
  • Kimutatás Állítsa be azt a pontot, ahol azt szeretné, hogy a mutató mozgásba kezdjen.
  • Időtartam A Középre igazítottParent körüli elforgatás időtartama (másodpercben).
  • AnimationCurve Ez alapértelmezés szerint lineáris görbére van beállítva, de módosíthatja a görbét, hogy a mozgásvonal indításakor és leállításakor enyhítsen a mozgásvonalon.
  • RotationVector Hány fokkal elforgatható az egyes tengelyek mentén.

A RotateAroundPoint vezérlése szkripttel

Az egyéni szkriptben hívja meg a RotateToTarget() parancsot, ha azt szeretné, hogy a kézifék elkezdje a forgatást a CenteredParent körül. Ha azt szeretné, hogy a pozíció visszaálljon az eredeti kimutatásra, hívja fel a ResetAndDeterminePivot() parancsot.

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

Az áthelyezni kívánt animációban állítson be két eseményt: egyet a ResetAndDeterminePivot() hívással, a másikat pedig a RotateToTarget() hívással. A ResetAndDeterminePivot értéket az első kulcskereten kell beállítani, mivel a kézi szerelvény alaphelyzetbe áll a kimutatáspozícióra. A RotateToTargetet azon a kulcskereten kell beállítani, ahol a fúrótorony a CenteredParent körül forogni szeretne. Így használja a szkriptfunkciót a megadott előtagokban.