Manipulátor objektů

Manipulátor objektů

ObjectManipulator je nová komponenta pro chování při manipulaci, která byla dříve nalezena v ManipulationHandler. Manipulátor objektů provádí řadu vylepšení a zjednodušení. Tato komponenta je náhradou za obslužnou rutinu manipulace, která bude zastaralá.

Skript ObjectManipulator umožňuje vyměnitelný, škálovatelný a rotující objekt jednou nebo dvěma rukou. Manipulátor objektu lze nakonfigurovat tak, aby kontroloval, jak bude objekt reagovat na různé vstupy. Skript by měl fungovat s většinou forem interakce, například s artikulovanou rukou HoloLens 2, HoloLens 2 ručními paprsky, HoloLens 1 pohledem a gesty HoloLens vstup imerzivního ovladače pohybu náhlavní soupravy.

Jak používat manipulátor objektů

Pokud chcete použít manipulátor objektů, nejprve přidejte ObjectManipulator komponentu skriptu do objektu GameObject. Nezapomeňte k objektu také přidat kolace odpovídající jeho zachytitelným mezem.

Pokud chcete, aby objekt reagoval na vstup v blízkosti articulated hand, přidejte NearInteractionGrabbable také skript.

Fyzikální chování lze pro manipulátor objektů povolit přidáním komponenty tuhého těla do objektu. O fyzikálním chování povoleném přidáním této komponenty se podrobněji diskutuje ve fyzice a kolizích.

Stejně tak lze manipulaci omezit přidáním součástí omezení manipulace do objektu. Jedná se o speciální komponenty, které nějakým způsobem pracují s manipulací a mění chování při manipulaci.

Použití obslužné rutiny manipulace v editoru Unity

Vlastnosti a pole inspektoru

Object Manipulator Structure

Obecné vlastnosti

Transformace hostitele

Transformace objektu, se kterou se bude manipulovat. Výchozí hodnota je objekt komponenty.

Typ manipulace

Určuje, jestli lze objekt manipulovat pomocí jedné nebo dvou rukou. Vzhledem k tomu, že tato vlastnost je příznak, je možné vybrat obě možnosti.

  • Jeden rukou oděný: Umožňuje jednu manipulaci s rukou, pokud je vybraná.
  • Dva rukou: Povolí dvouruční manipulaci, pokud je vybraná.

Povolit vzdálenou manipulaci

Určuje, jestli lze manipulaci s ukazateli provést pomocí daleko interakcí.

Jedna předáná manipulační vlastnosti

Režim otočení jednou rukou v blízkosti

Určuje, jak se bude objekt chovat, když je zomeněn jednou rukou blízko. Tyto možnosti fungují pouze pro articulated hands.

  • Otočení kolem středu objektu: Objekt se otáčí otočením ruky, ale kolem středového bodu objektu. Zdá se, že se objekt při obměně pohybuje méně, ale mezi rukou a objektem může být pocit odpojení. Užitečnější pro dalekosálou interakci.
  • Otočení kolem bodu uchopování: Otočení objektu rukou kolem bodu uchopování mezi palcem a ukazováčkem. Měl by to mít pocit, jako by se objekt udržel po ruce.

Režim otočení jednou rukou daleko

Určuje, jak se bude objekt chovat, když je zdůchoněn jednou rukou v vzdálenosti. Tyto možnosti fungují pouze pro articulated hands.

  • Otočení kolem středu objektu: Otočení objektu otočením ruky, ale kolem středového bodu objektu. Užitečné pro kontrolu na dálku bez pohybu středu objektu při otočení objektu.
  • Otočení kolem bodu sběru: Otočení objektu otočením ruky, ale o bod hitu paprsku ukazatele. Užitečné pro kontrolu.

Dvě vlastnosti manipulace s rukou

Typ manipulace se dvěma příkazy

Určuje, jak může dvou ruční manipulace transformovat objekt. Vzhledem k tomu, že je tato vlastnost příznakem, lze vybrat libovolný počet možností.

  • Přesunutí: Přesun je povolený, pokud je vybraný.
  • Škálování: Pokud je vybraná možnost Škálování, je povolené škálování.
  • Otočení: Otočení je povoleno, pokud je vybráno.

Obslužná rutina manipulace

Omezení

Povolení omezení

Toto nastavení povolí správce propojených omezení. Změny transformace budou zpracovány omezeními registrovanými pro vybraného správce omezení.

Správce omezení

V rozevíracím seznamu můžete vybrat libovolného připojeného správce omezení. Manipulátor objektů zajišťuje, že je za všech okolností připojený správce omezení. Všimněte si, že v unity se zobrazí více součástí stejného typu pod stejným názvem. Aby bylo snazší rozlišovat mezi několika správci omezení u stejného objektu, zobrazí dostupné možnosti nápovědu ke konfiguraci vybraného správce omezení (ruční nebo automatický výběr omezení).

Přejít na komponentu

Výběr správce omezení se dodává s tlačítkem Přejít na komponentu. Toto tlačítko způsobí, že se inspektor posune na vybranou komponentu, aby ji bylo možné nakonfigurovat.

Fyzika

Nastavení části se zobrazí pouze v případě, že má objekt komponentu RigidBody.

Chování verze

Určete, které fyzické vlastnosti má manipulovaný objekt po vydání zachovat. Vzhledem k tomu, že tato vlastnost je příznak, je možné vybrat obě možnosti.

  • Keep Velocity: Pokud je tato možnost vybrána, po uvolnění objektu se udržuje lineární rychlost.
  • Keep Angular Velocity( Rychlost): Pokud je tato možnost vybraná, po uvolnění objektu se udržuje jeho angular velocity.

Použití síly pro manipulaci bez zásahu

Určuje, jestli se k přesunutí objektu při provádění manipulace v blízkosti používá fyzikální síla. Pokud tuto možnost nastavíte na false, bude se objekt cítit lépe propojený s rukou uživatelů. Nastavení této hodnoty na hodnotu true bude respektovat hmotnost a inerci objektu, ale může se jet jako kdyby byl objekt připojen prostřednictvím jara. Výchozí hodnota je false.

Vyhlazování

Přílišné vyhlazování

Jestli je pro dalekosáhlé interakce povolené vyhlazování nezávislé na snímkové frekvenci Ve výchozím nastavení je povolené mnohem vyhlazování.

Vyhlazování blízko

Jestli je pro blízké interakce povolené vyhlazování nezávislé na snímkové frekvenci. Blízko vyhlazování je ve výchozím nastavení zakázané, protože účinek může být vnímán jako "odpojený" od ruky.

Vyhlazování aktivní

Zastaralé a budou odebrány v budoucí verzi. Aplikace by měly používat SmoothingFar, SmoothingNear nebo jejich kombinaci.

Move lerp time

Množství vyhlazování, které se použije na pohyb. Vyhlazování 0 znamená žádné vyhlazování. Maximální hodnota znamená, že se hodnota nezmění.

Obměně času lerp

Množství vyhlazování, které se použije na otočení. Vyhlazování 0 znamená žádné vyhlazování. Maximální hodnota znamená, že se hodnota nezmění.

Škálování času lerp

Množství vyhlazování, které se použije na škále. Vyhlazování 0 znamená žádné vyhlazování. Maximální hodnota znamená, že se hodnota nezmění.

Události manipulace

Obslužná rutina manipulace poskytuje následující události:

  • OnManipulationStarted: Aktivováno při spuštění manipulace.
  • OnManipulationEnded: Při ukončení manipulace se zahodí.
  • OnHoverStarted: Funkce se zahodí, když najede rukou nebo kontroleru na manipulovatelný ovladač blízko nebo daleko.
  • OnHoverEnded: Funkce se zobrazí, když se na manipulovatelný ovladač v blízkosti nebo zdaleka přerušuje jeho manipulovatelný ovladač.

Příkaz k požáru události pro manipulaci je následující:

OnHoverStarted -> OnManipulationStarted -> OnManipulationEnded -> OnHoverEnded (OnHoverEnded)

Pokud neexistuje žádná manipulace, stále se zobrazí události najetí myší s následujícím příkazem požáru:

OnHoverStarted -> OnHoverEnded (OnHoverEnded)

Fyzika a kolize

Fyzikální chování je možné povolit přidáním komponenty tuhého těla do stejného objektu jako manipulátor objektů. Umožňuje to nejen výše uvedenou konfiguraci chování verzí, ale také kolize. Bez pevné komponenty se kolize při manipulaci nechovají správně:

  • Kolize mezi manipulovatelným objektem a statickým kolacem (tj. objektem s kolacem, ale bez pevného těla) nefungují, manipulovaný objekt prochází přímo přes statický kolace bez ovlivnění.
  • Kolize mezi manipulovatelným objektem a pevnou těla (tj. Objekt s urychlovačem i pevnou tělesem) způsobí, že pevná těla bude mít kolizní reakci, ale odpověď je skácená a nepřichycená. Pro manipulovaný objekt také neexistuje žádná reakce kolizí.

Když se přidá pevná těla, kolizí by měly fungovat správně.

Bez tuhé těla

No Rigid Body

S pevnou těla

Rigid Body

Elastické (experimentální)

Elastické typy lze použít při manipulaci s objekty pomocí manipulátoru objektů. Mějte na vědomí, že elastický systém je stále v experimentálním stavu. Pokud chcete elastice povolit, můžete buď propojit existující komponentu elastického manažera, nebo vytvořit a propojit nového elastického správce pomocí Add Elastics Manager tlačítka.

Bounds Control Elastics

Viz také