Ovládací prvek Bounds

Ovládací prvek Bounds

BoundsControl je nová součást pro chování manipulace, která se dřív našla v BoundingBox. Ovládací prvek Bounds poskytuje řadu vylepšení a zjednodušení při instalaci a přidává nové funkce. Tato součást je náhradou pro ohraničovací rámeček, který se už nepoužívá.

BoundsControl.csSkript poskytuje základní funkce pro transformaci objektů ve smíšené realitě. Ovládací prvek Bounds zobrazí kolem hologramu rámeček, který indikuje, že se dá pracovat s. Táhla v rozích a hranách pole umožňují škálování, otočení nebo posunutí objektu. Ovládací prvek Bounds také reaguje na vstup uživatele. v HoloLens 2 například ovládací prvek meze reaguje na blízkost prstů a poskytuje vizuální zpětnou vazbu, která pomůžete vnímat vzdálenost od objektu. Všechny interakce a vizuály lze snadno přizpůsobit.

Příklad scény

V rámci scény můžete najít příklady konfigurací ovládacích prvků s mezemi BoundsControlExamples .

Bounds control Example

Vlastnosti inspektoru

Cílový objekt

Tato vlastnost určuje, který objekt se bude transformovat pomocí manipulace ovládacího prvku Bounds. Pokud není nastaven žádný objekt, použije se výchozí objekt vlastníka.

Chování aktivace

K dispozici je několik možností, jak aktivovat rozhraní ovládacího prvku Bounds.

  • Aktivovat při spuštění: ovládací prvek meze se po spuštění scény bude zobrazovat.
  • Aktivovat podle blízkosti: ovládací prvek meze se zobrazí, když je kloubová ruka blízko objektu.
  • Aktivovat ukazatelem: ovládací prvek vázané prvky se zobrazí, když je cílem ruky ukazatel.
  • Aktivace podle blízkosti a ukazatele: ovládací prvek hranice se zobrazí, když je cílen na ručičkový ukazatel nebo je kloubová ruka blízko objektu.
  • Ruční aktivace: ovládací prvek meze se nezobrazuje automaticky. Můžete ji ručně aktivovat pomocí skriptu přístupem k vlastnosti boundsControl. Active.

Přepsání vazeb

Nastaví kolizi boxu z objektu pro výpočet hranic.

Odsazení boxu

Přidá výplň k kolizím, která se používá k výpočtu rozsahů ovládacího prvku. To ovlivní nejen interakci, ale také ovlivní vizuály.

Shrnout osu

Označuje, zda je ovládací prvek v jedné z OS sloučený, takže 2 dimenzionální a nepovoluje manipulaci podél této osy. Tato funkce se dá použít pro tenké objekty, jako je například SLAT. Pokud je plochá osa nastavená na hodnotu automaticky sloučit , skript automaticky vybere osu s nejmenším rozsahem jako osu sloučení.

Vyhlazování

Oddíl vyhlazování umožňuje nakonfigurovat plynulé chování pro škálování a otočení ovládacího prvku.

Vizuály

Vzhled ovládacího prvku Bounds lze nakonfigurovat úpravou jedné z odpovídajících konfigurací vizuálů. Konfigurace vizuálů jsou buď propojené nebo vložené objekty, které lze vyskriptovat, a jsou podrobněji popsány v části objekt konfigurace.

Objekty konfigurace

Ovládací prvek se dodává se sadou objektů konfigurace, které mohou být uloženy jako skriptovací objekty a sdíleny mezi různými instancemi nebo prefabs. Konfigurace lze sdílet a propojit buď jako jednotlivé soubory assetů s možnostmi, nebo pomocí vnořených prostředků v rámci prefabs. Další konfigurace lze také definovat přímo na instanci bez propojení s externím nebo vnořeným prostředkem.

Inspektor ovládacího prvku Bounds určí, zda je konfigurace sdílena nebo vložena jako součást aktuální instance zobrazením zprávy v inspektoru vlastností. Navíc sdílené instance nebude možné upravovat přímo v samotném okně vlastností ovládacího prvku vázaného objektu, ale místo toho je potřeba, aby Asset, ke kterému se odkazuje, měl přímý modfied, aby se předešlo nechtěným změnám ve sdílených konfiguracích.

Ovládací prvek aktuálně Bound nabízí možnosti pro objekty konfigurace pro následující funkce:

Konfigurace boxu

Konfigurace boxu je odpovědná za vykreslení Solid boxu s hranicemi definovanými přes velikost kolidujícího pole a odsazení rámečku. Nastavit lze následující vlastnosti:

  • Box materiál: definuje materiál, který se použije pro vykreslené pole, když se neprovede žádná interakce. Pole bude vykresleno pouze v případě, že je tento materiál nastaven.
  • Boxd materiál: materiál pro pole, když uživatel komunikuje s ovládacím prvkem tím, že přepracuje téměř nebo daleko v interakci.
  • Škálování zobrazení ploché osy: měřítko, které se aplikuje na pole se zobrazí, pokud se jedna z OS sloučí.

Konfigurace obslužných rutin škálování

Tato zásuvka vlastností umožňuje změnit chování a vizualizaci obslužných rutin měřítka ovládacího prvku meze.

  • Manipulační materiál: materiál aplikovaný na obslužné rutiny.
  • Zpracovat předaný materiál: materiál aplikovaný na převzatý popisovač.
  • Handle Prefab: volitelný Prefab pro popisovač škálování. Pokud není nastavená hodnota MRTK, použije se jako výchozí datová krychle.
  • Velikost úchytu: velikost popisovače měřítka.
  • Odkládání kolidujících znaků: odsazení pro přidání k kolizi popisovače.
  • Při manipulaci s kreslením nakreslit do zásuvky: když aktivní dojde k vykreslení čáry internetového připojení z bodu začátku interakce na aktuální pozici typu ruka nebo ukazatel.
  • Zpracovává ignorování kolizí: Pokud se tady napojí kolidující objekt, popisovače budou v tomto kolizi ignorovat všechny konflikty.
  • Zpracujte SLAT Prefab: Prefab, který se použije pro popisovač při sloučení ovládacího prvku.
  • Zobrazit úchyty pro horizontální navýšení kapacity: řídí viditelnost popisovače.
  • Chování škálování: dá se nastavit na jednotné nebo nerovnoměrné škálování.

Konfigurace popisovačů rotace

Tato konfigurace definuje chování popisovače otáčení.

  • Manipulační materiál: materiál aplikovaný na obslužné rutiny.
  • Zpracovat předaný materiál: materiál aplikovaný na převzatý popisovač.
  • Handle Prefab: volitelný Prefab pro popisovač Pokud není nastavená hodnota MRTK, bude jako výchozí použita koule.
  • Velikost popisovače: velikost popisovače.
  • Odkládání kolidujících znaků: odsazení pro přidání k kolizi popisovače.
  • Při manipulaci s kreslením nakreslit do zásuvky: když aktivní dojde k vykreslení čáry internetového připojení z bodu začátku interakce na aktuální pozici typu ruka nebo ukazatel.
  • Zpracovává ignorování kolizí: Pokud se tady napojí kolidující objekt, popisovače budou v tomto kolizi ignorovat všechny konflikty.
  • Zpracovat Prefab typ kolidujícího modulu: typ kolidujícího typu, který se má použít u vytvořeného popisovače.
  • Zobrazit popisovač pro x: ovládá viditelnost popisovače pro osu X.
  • Zobrazit popisovač pro y: ovládá viditelnost popisovače pro osu Y.
  • Zobrazit popisovač pro z: řídí viditelnost popisovače pro osu z.

Konfigurace popisovačů překladu

Umožňuje povolit a nakonfigurovat obslužné rutiny překladu pro ovládací prvek Bounds. Všimněte si, že obslužné rutiny překladu jsou pro výchozí hodnoty zakázané.

  • Manipulační materiál: materiál aplikovaný na obslužné rutiny.
  • Zpracovat předaný materiál: materiál aplikovaný na převzatý popisovač.
  • Handle Prefab: volitelný Prefab pro popisovač Pokud není nastavená hodnota MRTK, bude jako výchozí použita koule.
  • Velikost popisovače: velikost popisovače.
  • Odkládání kolidujících znaků: odsazení pro přidání k kolizi popisovače.
  • Při manipulaci s kreslením nakreslit do zásuvky: když aktivní dojde k vykreslení čáry internetového připojení z bodu začátku interakce na aktuální pozici typu ruka nebo ukazatel.
  • Zpracovává ignorování kolizí: Pokud se tady napojí kolidující objekt, popisovače budou v tomto kolizi ignorovat všechny konflikty.
  • Zpracovat Prefab typ kolidujícího modulu: typ kolidujícího typu, který se má použít u vytvořeného popisovače.
  • Zobrazit popisovač pro x: ovládá viditelnost popisovače pro osu X.
  • Zobrazit popisovač pro y: ovládá viditelnost popisovače pro osu Y.
  • Zobrazit popisovač pro z: řídí viditelnost popisovače pro osu z.

Konfigurace odkazů povoluje funkci drátěného modelu ovládacího prvku Bounds. Nakonfigurovat lze následující vlastnosti:

  • Drátěný materiál: materiál aplikovaný na síť drátěného modelu.
  • Poloměr okraje drátěného modelu: tloušťka drátěného modelu.
  • Drátěný tvar: tvar drátěného modelu může být buď krychlový, nebo válcový.
  • Show drátěný model: ovládá viditelnost drátěného modelu.

Konfigurace efektu blízkosti

Umožňuje zobrazit a skrýt popisovače pomocí animace na základě vzdálenosti k rukou. Má dvě animace škálování. výchozím nastavením je HoloLens 2 chování stylu.

Bounds control Proximity
  • Aktivní efekt blízkosti: Povolit aktivaci popisovače na základě blízkosti
  • Střední blízkost objektu: vzdálenost pro škálování prvního kroku
  • Blízký blízkosti objektu: vzdálenost pro velikost druhého kroku
  • Daleko škála: výchozí hodnota škálování assetu popisovače, když jsou ruce mimo rozsah interakce ovládacího prvku Bounds (vzdálenost je definována výše podle ' popisovač střední blízkosti '. Skrýt popisovač ve výchozím nastavení pomocí 0
  • Střední škála: hodnota měřítka assetu popisovače v případě, že se rukou nacházejí v rozsahu interakce ovládacího prvku Bounds (vzdálenost je definována výše v "blízkosti" úchytu ". Pro zobrazení normální velikosti použít 1
  • Close Scale: hodnota měřítka assetu popisovače, pokud se rukou nacházejí v rozsahu interakce k příkazu (vzdálenost je definována výše podle ' zavírací blízkosti '). Zobrazit větší velikost pomocí 1. x
  • Daleko rostoucí frekvence: rychlost zvětšení blízkosti objektu se škáluje, když se pohyb změní ze středně na daleko blízký.
  • Střední míra růstu: rychlost zvětšení blízkosti objektu se škáluje, když se pohyb změní ze střední na blízký.
  • Míra zvýšení míry růstu: sazba objektu škálované blízkost se škáluje, když se pohyb pohybuje z blízké blízkosti do centra objektů.

Systém omezení

Ovládací prvek Bounds podporuje použití správce omezení k omezení nebo úpravě chování překladu, rotace nebo škálování při použití popisovačů ovládacích prvků Bounds.

V inspektoru vlastností se zobrazí všechna dostupná manažera omezení připojená ke stejnému hernímu objektu v rozevíracím seznamu s možností pro přechod a zvýraznění vybraného správce omezení.

Bounds control Constraints

Události

Ovládací prvek Bounds poskytuje následující události. V tomto příkladu se tyto události používají k přehrání zpětné vazby ze zvukového zařízení.

  • Otočit začátek: aktivuje se, když se spustí rotace.
  • Otočení se zastavilo: aktivuje se při zastavení rotace.
  • Začátek rozsahu: aktivuje se při zahájení škálování.
  • Zastavené škálování: aktivuje se při ukončení škálování.
  • Posunutí zahájeno: aktivuje se při spuštění překladu.
  • Posunutí zastaveno: aktivuje se, když se převod zastaví.
Bounds control Events

Elastické (experimentální)

Elastické prvky lze použít při manipulaci s objekty prostřednictvím ovládacího prvku Bounds. Všimněte si, že systém elastické aplikace je stále v experimentálním stavu. Chcete-li povolit elastické služby, buď propojte stávající komponentu správce elastických prvků, nebo vytvořte a propojte nové elastické správce pomocí Add Elastics Manager tlačítka.

Bounds control Elastics

Styly popisovačů

ve výchozím nastavení se při pouze přiřazování BoundsControl.cs skriptu zobrazí popisovač HoloLens 1.1. generace. chcete-li použít rutiny stylu HoloLens 2, je třeba přiřadit správný popisovač prefabs a materiál.

Ovládací prvky s omezením – styly 2

níže jsou uvedeny hodnoty prefabs, materiálů a škálování pro ovládací úchyty ve stylu HoloLens 2. V tomto příkladu můžete najít tento příklad na BoundsControlExamples scéně.

Bounds control HandleStyles

obslužné rutiny (nastavení pro HoloLens 2)

  • Manipulace s materiálem: BoundingBoxHandleWhite. mat
  • Zpracovat předaný materiál: BoundingBoxHandleBlueGrabbed. mat
  • Prefab popisovače škálování: MRTK_BoundingBox_ScaleHandle. Prefab
  • Měřítko – popisovač Prefab: MRTK_BoundingBox_ScaleHandle_Slate. Prefab
  • Velikost úchytu měřítka: 0,016 (1,6 cm)
  • Odsazení kolidujících popisovačů měřítka: 0,016 (umožňuje, aby se v případě nezpracovaného kolidujícího konfliktu trochu přetáhlo od vizuálu)
  • Prefab obslužné rutiny rotace: MRTK_BoundingBox_RotateHandle. Prefab
  • Velikost úchytu pro otočení: 0,016
  • Odsazení kolidujících hodnot v popisovači rotace: 0,016 (umožňuje, aby se přetáhlný kolidující objekt trochu vyvýraznější než vizuál popisovače)

Transformace změn pomocí Object manipulátor

Ovládací prvek meze lze použít v kombinaci s nástrojem ObjectManipulator.cs k povolení určitých typů manipulace (např. přesunutí objektu) bez použití obslužných rutin. Obslužná rutina manipulace podporuje jak jednu, tak oboustrannou interakci. Sledování ruky lze použít k interakci s objektem v blízkosti.

Bounds control Object Manipulator

Vzhledem k tomu, že se okraje ovládacího prvku na hranicích chovají stejně jako při přesunu pomocí ObjectManipulator zcela interakce, je doporučeno připojit své události pro zpracování zahájené / při manipulaci v BoundsControl.HighlightWires / BoundsControl.UnhighlightWires uvedeném pořadí, jak je znázorněno na snímku obrazovky výše.

Postup přidání a konfigurace ovládacího prvku s ovládacími prvky s použitím inspektoru Unity

  1. Přidat kolizi boxu do 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í prefabs a materiálů pro ovládací prvek stylu meze pro HoloLens 2 (viz část pro styly popisovače níže)

Poznámka

V inspektoru použijte pole cílový objekt a meze přepsání pro přiřazení konkrétního objektu a kolizi v objektu s více podřízenými komponentami.

Ovládací prvek Bounds

Postup přidání a konfigurace ovládacího prvku s mezemi v kódu

  1. Vytvoření instance GameObject datové krychle

    GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    
  2. Přiřadí BoundsControl skript objektu s kolidující metodou pomocí<> addComponent ().

    private BoundsControl boundsControl;
    boundsControl = cube.AddComponent<BoundsControl>();
    
  3. Nakonfigurujte možnosti buď přímo na ovládacím prvku, nebo přes jednu z konfigurací s možností skriptování (viz část vlastnosti a Konfigurace inspektoru 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řaďte prefabs a materiály pro ovládací prvek s omezením ve stylu HoloLens 2. To pořád vyžaduje přiřazení prostřednictvím kontrolora, protože materiály a prefabs by se měly dynamicky načíst.

Poznámka

Použití složky Resources nebo shaderu Unity. vyhledání pro dynamicky načtené shadery se nedoporučuje, protože v době běhu může chybět hodnota 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 měřítka ovládacího prvku hranice pomocí MinMaxScaleConstraint

Chcete-li nastavit minimální a maximální měřítko, připojte se MinMaxScaleConstraint k ovládacímu prvku. Když se ovládací prvek hranice nastaví automaticky a aktivuje správce omezení, MinMaxScaleConstraint se automaticky použije na změny transformace, jakmile se připojí a nakonfiguruje.

Pomocí MinMaxScaleConstraint můžete také nastavit minimální a maximální měřítko pro 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 hranice kolem herního objektu

Chcete-li přidat ovládací prvek hranice kolem objektu, stačí BoundsControl do něj přidat komponentu:

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

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

Existující prefabs a instance pomocí ohraničovacího rámečku lze upgradovat na nový ovládací prvek s mezemi prostřednictvím okna migrace , které je součástí balíčku MRTK Tools.

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

Bounds control Migrate

Viz také