Manipulátor objektů – MRTK2

Manipulátor objektů

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

Skript ObjectManipulator umožňuje pohyblivý, škálovatelný a otočný objekt pomocí jedné nebo dvou rukou. Manipulátor objektů lze nakonfigurovat tak, aby ovládl, jak bude objekt reagovat na různé vstupy. Skript by měl fungovat s většinou forem interakce, jako je HoloLens 2 artikulovaná ruka, HoloLens 2 paprsky rukou, pohled a gesta HoloLens 1 a vstup ovladače pohybu imerzivní náhlavní soupravy.

Jak používat manipulátor objektů

Chcete-li použít manipulátor objektů, nejprve přidejte komponentu ObjectManipulator skriptu do objektu GameObject. Nezapomeňte také přidat do objektu schytávače, který odpovídá jeho uchopitelným hranicím.

Pokud chcete, aby objekt reagoval na téměř artikulovaný vstup rukou NearInteractionGrabbable , přidejte také skript.

Fyzikální chování lze pro manipulátor objektu povolit přidáním pevné součásti tělesa k objektu. Fyzikální chování, které umožňuje přidání této komponenty, je podrobněji popsáno v tématu Fyzika a kolize.

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

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

Vlastnosti a pole inspektoru

Objektová manipulátor – struktura

Obecné vlastnosti

Transformace hostitele

Transformace objektu, se kterou bude manipulováno. Výchozí hodnota je objekt komponenty.

Typ manipulace

Určuje, zda lze s objektem manipulovat jednou nebo dvěma rukama. Vzhledem k tomu, že tato vlastnost je příznakem, je možné vybrat obě možnosti.

  • Jednou rukou: Umožňuje manipulaci jednou rukou, pokud je tato možnost vybrána.
  • Oboustranná: Umožňuje oboustrannou manipulaci, pokud je vybraná.

Povolit vzdálenou manipulaci

Určuje, zda lze manipulaci provádět pomocí vzdálené interakce s ukazateli.

Vlastnosti manipulace jednou rukou

Režim otáčení jednou rukou v blízkosti

Určuje, jak se bude objekt chovat, když je uchopen jednou rukou blízko. Tyto možnosti fungují pouze pro kloubové ruce.

  • Otočení o střed objektu: Objekt se otáčí pomocí otočení ruky, ale o středový bod objektu. Zdá se, že se objekt při otáčení pohybuje méně, ale mezi rukou a objektem může být pocit odpojení. Užitečnější pro dalekou interakci.
  • Otočení o bod uchopení: Otočte objekt rukou o bod uchopení mezi palcem a ukazováčkem. Měl by mít pocit, jako by objekt byl přidržován rukou.

Režim otáčení jednou rukou daleko

Určuje, jak se bude objekt chovat, když je uchopit jednou rukou na dálku. Tyto možnosti fungují pouze pro kloubové ruce.

  • Otočení o střed objektu: Otočte objekt otáčením rukou, ale o středový bod objektu. Užitečné pro kontrolu na dálku bez pohybu středu objektu při otáčení objektu.
  • Otočení o bod uchopení: Otočte objekt pomocí otočení ruky, ale o bod bodu zachycení paprsku ukazatele. Užitečné pro kontrolu.

Vlastnosti oboustranné manipulace

Typ oboustranné manipulace

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

  • Přesunout: Přesunutí je povoleno, pokud je vybráno.
  • Škálování: Škálování je povoleno, pokud je vybráno.
  • Otočení: Otočení je povoleno, pokud je vybráno.

Obslužná rutina manipulace

Omezení

Povolit omezení

Toto nastavení povolí správce propojených omezení. Změny transformace budou zpracovány omezeními zaregistrovanými ve vybraném správci omezení.

Správce omezení

Rozevírací seznam umožňuje vybrat kterýkoli z připojených správců omezení. Manipulátor objektů zajišťuje, že správce omezení je vždy připojený. Všimněte si, že se pod stejným názvem v unity zobrazí více komponent stejného typu. Aby bylo snazší rozlišovat mezi více správci omezení ve stejném 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í v této části se zobrazí pouze v případě, že objekt má komponentu RigidBody.

Chování při vydávání verzí

Určete, které fyzické vlastnosti by měl manipulovat s objektem zachovat po uvolnění. Vzhledem k tomu, že tato vlastnost je příznakem, je možné vybrat obě možnosti.

  • Zachovat rychlost: Když je objekt uvolněn, pokud je tato možnost vybrána, zachová si svou lineární rychlost.
  • Zachovat rychlost Angular: Když je objekt uvolněný, pokud je tato možnost vybraná, zachová si úhlovou rychlost.

Použití sil k blízké manipulaci

Zda se fyzikální síly používají k pohybu objektu při provádění blízkých manipulací. Když nastavíte tuto hodnotu na false , bude objekt více přímo propojený s rukou uživatele. Nastavení na hodnotu true bude respektovat hmotnost a setrvačnost objektu, ale může se zdát, jako by objekt byl připojen pružinou. Výchozí hodnota je false.

Vyhlazování

Vyhlazování daleko

Určuje, jestli je pro dalekosáhlé interakce povolené nezávislé vyhlazování snímkové frekvence. Ve výchozím nastavení je povolené vzdálené vyhlazování.

Vyhlazování v blízkosti

Určuje, jestli je pro blízké interakce povolené nezávislé vyhlazování snímkové frekvence. Vyhlazování blízko je ve výchozím nastavení zakázané, protože efekt může být vnímán jako "odpojený" od ruky.

Aktivní vyhlazování

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

Čas přesunu lerp

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

Doba otáčení lerpu

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

Měřítko času lerp

Množství vyhlazování, které se má použít na měřítko. 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: Aktivuje se při zahájení manipulace.
  • OnManipulationEnded: Aktivuje se, když manipulace skončí.
  • OnHoverStarted: Aktivuje se, když ruka nebo ovladač najet na manipulovatelnou, blízko nebo daleko.
  • OnHoverEnded: Aktivuje se, když ruka nebo ovladač najet na manipulovatelné, blízko nebo daleko.

Pořadí požáru události pro manipulaci je:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Pokud nedojde k žádné manipulaci, stále se zobrazí události najetí myší s následujícím pořadím požáru:

OnHoverStarted –>OnHoverEnded

Fyzika a kolize

Fyzikální chování lze povolit tak, že ke stejnému objektu jako manipulátor objektů přidáte pevnou součást tělesa. To umožňuje nejen konfiguraci chování vydané verze výše, ale také kolize. Bez součásti tuhého tělesa se kolize při manipulaci nechovají správně:

  • Kolize mezi manipulovaným objektem a statickým uchycením (tj. objektem s uchycením, ale bez tuhého tělesa) nefungují, manipulovaný objekt prochází přímo statickým uchycením bez ovlivnění.
  • Kolize mezi manipulovaným objektem a pevným tělesem (tj. objektem s kolizním i pevným tělesem) způsobí, že tuhá tělesa bude mít kolizi, ale reakce je skoková a nepřirozená. U manipulovaného objektu také nedochází k žádné kolizi.

Při přidání tuhého tělesa by měly kolize fungovat správně.

Bez tuhého tělesa

Bez tuhého tělesa

S pevným tělesem

Tuhá tělo

Elastické (experimentální)

Elastické hodnoty lze použít při manipulaci s objekty prostřednictvím manipulátoru objektů. Všimněte si, že elastický systém je stále v experimentálním stavu. Pokud chcete povolit elastické funkce, můžete buď propojit existující komponentu správce elastics, nebo vytvořit a propojit nového správce elastics pomocí Add Elastics Manager tlačítka.

Elastics ovládacího prvku Bounds

Viz také