Ovládací prvek Meze

Ovládací prvek Meze

BoundsControl je nová komponenta pro chování při manipulaci, která byla dříve součástí BoundingBox. Ovládací prvek Meze přináší řadu vylepšení a zjednodušení nastavení a přidává nové funkce. Tato komponenta je náhradou za ohraničující rámeček, který bude zastaralý.

Skript BoundsControl.cs poskytuje základní funkce pro transformaci objektů v hybridní realitě. Ovládací prvek Meze zobrazí kolem hologramu rámeček, který označuje, že je možné s ním pracovat. Úchyty v rozích a hranách rámečku umožňují změnu velikosti, obměny nebo překládání objektu. Ovládací prvek Meze také reaguje na uživatelský vstup. Na HoloLens 2 například ovládací prvek meze reaguje na blízkost prstu a poskytuje vizuální zpětnou vazbu, která pomáhá vnímat vzdálenost od objektu. Všechny interakce a vizuály je možné snadno přizpůsobit.

Příklad scény

Příklady konfigurací ovládacích prvek meze najdete ve BoundsControlExamples scéně.

Příklad ovládacího prvku Meze

Vlastnosti inspektoru

Cílový objekt

Tato vlastnost určuje, který objekt se transformuje pomocí manipulace s ovládacími prvky meze. Pokud není žádný objekt nastavený, nastaví se jako výchozí objekt vlastníka.

Chování aktivace

Existuje několik možností, jak aktivovat rozhraní ohraničující ovládací prvek.

  • Aktivovat při spuštění:Ovládací prvek Meze se po spuštění scény stane viditelným.
  • Aktivovat podle blízkosti:Ovládací prvek Meze se stane viditelným, když se articulated hand nachází blízko objektu.
  • Aktivovat podle ukazatele:Ovládací prvek Meze se stane viditelným, když je zacílený ukazatelem ručního paprsku.
  • Aktivovat podle blízkostia ukazatele: Ovládací prvek Meze se stane viditelným, když je zacílený ukazatelem ručního paprsku nebo artikulovanou rukou blízko objektu.
  • Aktivovat ručně:Ovládací prvek Meze se automaticky nezobrazí. Můžete ji ručně aktivovat pomocí skriptu, a to přístupem k vlastnosti boundsControl.Active.

Přepsání meze

Nastaví z objektu kolace rámečku pro výpočet meze.

Odsazení pole

Přidá odsazení do koliázových meze použitých k výpočtu rozsahů ovládacího prvku. To ovlivní nejen interakci, ale také vizuály.

Zploštěná osa

Určuje, jestli je ovládací prvek zploštěný na jedné z os, takže je dvourozměrný a neumožňuje manipulaci na této ose. Tuto funkci je možné použít u tenkých objektů, jako jsou slates. Pokud je zploštěná osa nastavená na Flatten Auto (Zplošťovat automaticky), skript automaticky vybere osu s nejmenším rozsahem jako zploštělou osu.

Vyhlazování

Část vyhlazování umožňuje nakonfigurovat chování vyhlazování pro škálování a otočení ovládacího prvku.

Vizuály

Vzhled ovládacího prvku Meze lze nakonfigurovat úpravou jedné z odpovídajících konfigurací vizuálů. Konfigurace vizuálů jsou buď propojené, nebo inlinované skriptovatelné objekty, které jsou podrobněji popsány v části objektu konfigurace.

Objekty konfigurace

Ovládací prvek obsahuje sadu objektů konfigurace, které lze uložit jako skriptovatelné objekty a sdílet mezi různými instancemi nebo předfabami. Konfigurace je možné sdílet a propojit buď jako jednotlivé skriptovatelné soubory prostředků, nebo vnořené skriptovatelné prostředky uvnitř předfád. Další konfigurace je také možné definovat přímo v instanci bez propojení s externím nebo vnořeným skriptovatelným assetem.

Kontrolor meze bude indikovat, jestli je konfigurace sdílená nebo vázaná jako součást aktuální instance, zobrazením zprávy v inspektoru vlastností. Sdílené instance navíc nebude možné upravovat přímo v samotném okně vlastností ovládacího prvku meze, ale asset, na který je odkazovaný, je třeba přímo upravit, aby nedošlo k náhodným změnám ve sdílených konfiguracích.

Ovládací prvek Meze v současné době nabízí možnosti objektů konfigurace pro následující funkce:

Konfigurace boxu

Konfigurace boxu zodpovídá za vykreslení plné krabice s hranicemi definovanými prostřednictvím velikosti kolace a odsazení rámečku. Je možné nastavit následující vlastnosti:

  • Materiál boxu:Definuje materiál použitý na vykreslený rámeček, když se žádná interakce neaktuuje. Pole se vykreslí jenom v případě, že je tento materiál nastavený.
  • Obalový materiál:materiál pro krabici, když uživatel pracuje s ovládáním tím, že se uchopí blízkou nebo dalekou interakcí.
  • Zploštěná měřítkazobrazení osy: měřítko, které se použije na zobrazení rámečku, pokud je jedna z os zploštěná.

Konfigurace popisovačů škálování

Tato zásuvka vlastností umožňuje upravit chování a vizualizaci úchytů měřítka ovládacího prvku Meze.

  • Popisovač materiálu:materiál použitý na úchyty.
  • Manipulovat súchytem: materiál použitý na úchyt.
  • Zpracování předfab:Volitelné předfab pro popisovač škálování. Pokud není nastavená hodnota , mrtk použije datovou krychli jako výchozí.
  • Velikost popisovače:velikost úchytu škálování.
  • Odsazení kolace:odsazení, které se přidá do kolace popisovače.
  • Při manipulaci nakreslete tether:když je aktivní, vykreslí čáru tetheru od počátečního bodu interakce až po aktuální pozici ruky nebo ukazatele.
  • Popisovače ignorují kolace:Pokud zde dojde k propojení kolace, budou popisovače ignorovat všechny kolize s tímto kolacem.
  • Zpracování předfabu slate:předfab, který se použije pro popisovač, když je ovládací prvek zploštěný.
  • Zobrazit popisovače škálování:řídí viditelnost popisovače.
  • Chování škálování:Je možné nastavit jednotné nebo nejednotné škálování.

Konfigurace popisovačů rotace

Tato konfigurace definuje chování popisovače rotace.

  • Popisovač materiálu:materiál použitý na úchyty.
  • Manipulovat súchytem: materiál použitý na úchyt.
  • Zpracování předfab:Volitelné předfab pro popisovač. Pokud je nastavená hodnota non, MRTK použije jako výchozí sphere.
  • Velikost popisovače:velikost úchytu.
  • Odsazení kolace:odsazení, které se přidá do kolace popisovače.
  • Při manipulaci nakreslete tether:když je aktivní, vykreslí čáru tetheru od počátečního bodu interakce až po aktuální pozici ruky nebo ukazatele.
  • Popisovače ignorují kolace:Pokud zde dojde k propojení kolace, budou popisovače ignorovat všechny kolize s tímto kolacem.
  • Zpracování typu předběžného kolace:typ kolace, který se má použít s vytvořeným popisovačem.
  • Zobrazit popisovač pro X:řídí viditelnost úchytu pro osu X.
  • Zobrazit popisovač pro Y:řídí viditelnost úchytu pro osu Y.
  • Zobrazit popisovač pro Z:řídí viditelnost úchytu pro osu Z.

Konfigurace popisovačů překladu

Umožňuje povolení a konfiguraci popisovačů překladu pro ovládací prvek meze. Nezapomeňte, že popisovače překladu jsou ve výchozím nastavení zakázané.

  • Popisovač materiálu:materiál použitý na úchyty.
  • Manipulovat súchytem: materiál použitý na úchyt.
  • Zpracování předfab:Volitelné předfab pro popisovač. Pokud je nastavená hodnota non, MRTK použije jako výchozí sphere.
  • Velikost popisovače:velikost úchytu.
  • Odsazení kolace:odsazení, které se přidá do kolace popisovače.
  • Při manipulaci nakreslete tether:když je aktivní, vykreslí čáru tetheru od počátečního bodu interakce až po aktuální pozici ruky nebo ukazatele.
  • Popisovače ignorují kolace:Pokud zde dojde k propojení kolace, budou popisovače ignorovat všechny kolize s tímto kolacem.
  • Zpracování typu předběžného kolace:typ kolace, který se má použít s vytvořeným popisovačem.
  • Zobrazit popisovač pro X:řídí viditelnost úchytu pro osu X.
  • Zobrazit popisovač pro Y:řídí viditelnost úchytu pro osu Y.
  • Zobrazit popisovač pro Z:řídí viditelnost úchytu pro osu Z.

Konfigurace propojení umožňuje funkci wireframe ovládacího prvku meze. Je možné nakonfigurovat následující vlastnosti:

  • Wireframe material: materiál použitý na síť wireframe.
  • Poloměr hrany wireframe:tloušťka wireframe.
  • Wireframe shape(Tvar wireframe): Tvar wireframe může být buď kubický, nebo schůdný.
  • Show wireframe (Zobrazit wireframe):Řídí viditelnost wireframe.

Konfigurace efektu bezkontaktní blízkosti

Zobrazte a skryjte úchyty pomocí animace na základě vzdálenosti od rukou. Má animaci se dvěma kroky škálování. Výchozí hodnoty jsou nastavené na HoloLens chování stylu 2.

Bezkontaktní ovládání meze
  • Aktivní efekt bezkontaktníblízkosti: Povolení aktivace popisovačů na základě bezkontaktní blízkosti
  • Střední vzdálenost objektu:Vzdálenost pro škálování v prvním kroku
  • Blízkost objektu:Vzdálenost pro škálování druhého kroku
  • Vzdálenáškála: Výchozí hodnota měřítka aktiva popisovače, pokud jsou ruce mimo rozsah interakce ovládacích prvku hranic (vzdálenost definovaná výše parametrem "Zpracovat střední vzdálenost". Použití hodnoty 0 ke skrytí popisovače ve výchozím nastavení)
  • Střední měřítko:Hodnota škálování aktiva popisovače, když jsou ruce v rozsahu interakce ovládacích prvku meze (vzdálenost definovaná výše parametrem 'Handle Close Proximity'. K zobrazení normální velikosti použijte 1.
  • Close Scale(Zavřít měřítko): Hodnota škálování aktiva popisovače, když jsou ruce v dosahu interakce s úchytem (vzdálenost definovaná výše parametrem 'Handle Close Proximity'. K zobrazení větší velikosti použijte 1.x.
  • Far Grow Rate(Rychlost růstu velikosti): Ohodnotit škálovaný objekt bezkontaktní blízkosti, když se ručně přesune ze střední na vzdálenou vzdálenost.
  • Střední rychlost růstu:Ohodnotit škálovaný objekt bezkontaktní blízkosti při pohybu ruky ze střední do blízké blízkosti.
  • Close Grow Rate(Zavřít rychlost růstu): Ohodnotit velikost objektu se škálem bezkontaktní blízkosti, když se ručně přesune z těsné blízkosti středu objektu.

Systém omezení

Ovládací prvek Meze podporuje použití správce omezení k omezení nebo úpravě chování překladu, otočení nebo škálování při použití řídicích úchytů meze.

Inspektor vlastností zobrazí všechny dostupné správce omezení připojené ke stejnému hernímu objektu v rozevíracím seznamu s možností posouvání a zvýraznění vybraného správce omezení.

Omezení ovládacího prvku Meze

Události

Ovládací prvek Meze poskytuje následující události. Tento příklad používá tyto události k přehrávání zvukové zpětné vazby.

  • Rotate Started (Obměnaspuštěno): Aktivováno při spuštění rotace.
  • Rotate Stopped (Obměnězastaveno): Aktivováno při zastavení rotace.
  • Zahájené škálování:Spustí se při spuštění škálování.
  • Zastavené škálování:Při zastavení škálování se zahodí.
  • Translate Started: Spustí se při spuštění překladu.
  • Translate Stopped (Zastavenopřekladu): Při zastavení překladu se zahodí.
Události ovládacího prvku Hranice

Elastické (experimentální)

Elastické prvky lze použít při manipulaci s objekty prostřednictvím ovládacího prvku Meze. 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.

Elastické prvky ovládacího prvku Meze

Styly popisovače

Ve výchozím nastavení se při přiřazení skriptu zobrazí popisovač HoloLens BoundsControl.cs 1. generace. Pokud chcete HoloLens 2 úchyty stylu, musíte přiřadit správné předfabs a materials popisovače.

Bounds – styly popisovače ovládacího prvku 2

Níže jsou uvedeny předfabs, materials a hodnoty škálování pro HoloLens 2 úchyty ovládacího prvku meze stylu. Tento příklad najdete ve BoundsControlExamples scéně.

Ovládací prvek Bounds HandleStyles

Popisovače (nastavení pro HoloLens 2)

  • Materiál popisovače:BoundingBoxHandleWhite.mat
  • Popisovač zachycujícímateriál: BoundingBoxHandleBlueGrabbed.mat
  • Předfab popisovače škálování:MRTK_BoundingBox_ScaleHandle.prefab
  • Předfab škálování popisovače:MRTK_BoundingBox_ScaleHandle_Slate.prefab
  • Velikost popisovače škálování:0,016 (1,6 cm)
  • Odsazení úchytu měřítka Collider:0,016 (zvětšuje zachytitelný kolace o něco větší než úchyt vizuálu)
  • Předfab popisovače rotace:MRTK_BoundingBox_RotateHandle.prefab
  • Velikost úchytu otočení:0,016
  • Odsazení úchytu při otočení:0,016 (zvětšuje ručitelný kolace o něco větší než vizuál popisovače)

Změny transformace pomocí manipulátoru objektů

Ovládací prvek meze lze použít v kombinaci s , aby bylo možné určité typy manipulace ObjectManipulator.cs (např. přesunutí objektu) bez použití popisovačů. Obslužná rutina manipulace podporuje jak jednu interakci, tak interakci se dvěma příkazy. Ruční sledování lze použít k interakci s objektem zblízka.

Manipulátor objektu ovládacího prvku Meze

Aby se hranice ovládacích hran při přesouvání hran chovaly stejným způsobem s použitím dalekosáhnou interakce, doporučujeme připojit své události pro při manipulaci zahájenou při manipulaci ukončenou do , jak je znázorněno na snímku obrazovky ObjectManipulatorObjectManipulator / / BoundsControl.HighlightWires / BoundsControl.UnhighlightWires výše.

Přidání a konfigurace ovládacího prvku meze pomocí Unity Inspectoru

  1. Přidání kolace Boxu k objektu
  2. Přiřazení BoundsControl skriptu k objektu
  3. Konfigurace možností, jako jsou metody aktivace (viz část Vlastnosti inspektoru níže)
  4. (Volitelné) Přiřazení předfabů a materiálů pro ovládací HoloLens 2 styly (viz část Handle styles (Styly popisovače)

Poznámka

Pomocí pole Přepsánícílového objektu a meze v inspektoru přiřaďte konkrétní objekt a kolektor v objektu s více podřízenými komponentami.

Ovládací prvek Bounds

Přidání a konfigurace ovládacího prvku Meze v kódu

  1. Vytvoření instance objektu GameObject datové krychle

    GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    
  2. Přiřazení BoundsControl skriptu k objektu s kolacemi pomocí funkce AddComponent <> ()

    private BoundsControl boundsControl;
    boundsControl = cube.AddComponent<BoundsControl>();
    
  3. Nakonfigurujte možnosti buď přímo na ovládacím prvku, nebo prostřednictvím jedné ze skriptovatelných konfigurací (viz vlastnosti inspektoru a oddíl Konfigurace níže).

    // Change activation method
    boundsControl.BoundsControlActivation = BoundsControlActivationType.ActivateByProximityAndPointer;
    // Make the scale handles large
    boundsControl.ScaleHandlesConfig.HandleSize = 0.1f;
    // Hide rotation handles for x axis
    boundsControl.RotationHandlesConfig.ShowRotationHandleForX = false;
    
  4. (Volitelné) Přiřazení předfabů a materiálů pro HoloLens 2 hranice stylu. To stále vyžaduje přiřazení prostřednictvím inspektoru, protože materiály a předfabs by se měly dynamicky načíst.

Poznámka

Použití složky Resources unity nebo shaderu.Find pro dynamické načítání shaderů se nedoporučuje, protože za běhu možná chybí permutace shaderu.

BoxDisplayConfiguration boxConfiguration = boundsControl.BoxDisplayConfig;
boxConfiguration.BoxMaterial = [Assign BoundingBox.mat]
boxConfiguration.BoxGrabbedMaterial = [Assign BoundingBoxGrabbed.mat]
ScaleHandlesConfiguration scaleHandleConfiguration = boundsControl.ScaleHandlesConfig;
scaleHandleConfiguration.HandleMaterial = [Assign BoundingBoxHandleWhite.mat]
scaleHandleConfiguration.HandleGrabbedMaterial = [Assign BoundingBoxHandleBlueGrabbed.mat]
scaleHandleConfiguration.HandlePrefab = [Assign MRTK_BoundingBox_ScaleHandle.prefab]
scaleHandleConfiguration.HandleSlatePrefab = [Assign MRTK_BoundingBox_ScaleHandle_Slate.prefab]
scaleHandleConfiguration.HandleSize = 0.016f;
scaleHandleConfiguration.ColliderPadding = 0.016f;
RotationHandlesConfiguration rotationHandleConfiguration = boundsControl.RotationHandlesConfig;
rotationHandleConfiguration.HandleMaterial = [Assign BoundingBoxHandleWhite.mat]
rotationHandleConfiguration.HandleGrabbedMaterial = [Assign BoundingBoxHandleBlueGrabbed.mat]
rotationHandleConfiguration.HandlePrefab = [Assign MRTK_BoundingBox_RotateHandle.prefab]
rotationHandleConfiguration.HandleSize = 0.016f;
rotationHandleConfiguration.ColliderPadding = 0.016f;

Příklad: Nastavení minimálního a maximálního rozsahu ovládacích meze pomocí MinMaxScaleConstraint

Pokud chcete nastavit minimální a maximální měřítko, připojte k MinMaxScaleConstraint ovládacímu prvku . Když se ovládací prvek meze automaticky připojí a aktivuje správce omezení, MinMaxScaleConstraint se po připojení a konfiguraci automaticky použije na změny transformace.

K nastavení minimálního a maximálního měřítka pro můžete použít také MinMaxScaleConstraint. ObjectManipulator

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
bcontrol = cube.AddComponent<BoundsControl>();
// Important: BoundsControl creates a constraint manager on start if one does not exist.
// There's no need to manually attach a constraint manager.
MinMaxScaleConstraint scaleConstraint = bcontrol.gameObject.AddComponent<MinMaxScaleConstraint>();
scaleConstraint.ScaleMinimum = 1f;
scaleConstraint.ScaleMaximum = 2f;

Příklad: Přidání ovládacího prvku meze kolem herního objektu

Pokud chcete kolem objektu přidat ovládací prvek meze, jednoduše do něj BoundsControl přidejte komponentu:

private void PutABoundsControlAroundIt(GameObject target)
{
   target.AddComponent<BoundsControl>();
}

Migrace z ohraničovacího rámečku

Existující předfabs and instance using bounding box can be upgraded to the new bounds control via the migration window which is part of the MRTK tools package.

Pro upgrade jednotlivých instancí ohraničovacího rámečku je také v inspektoru vlastností komponenty k dispozici možnost migrace.

Migrace ovládacího prvku Hranice

Viz také