Sdílet prostřednictvím


BoundsControl – MRTK3

Ovládací prvek Bounds

BoundsControl poskytuje ohraničující rámeček s automatickou velikostí a manipulací s možnostmi pro otáčení a škálování.

V MRTK 2.x se BoundsControl generoval hlavně za běhu pomocí konfigurace ScriptableObjects. V MRTK3 se nastavení a přizpůsobení BoundsControl výrazně zjednodušilo. Vizuály a popisovače hranic jsou jednoduše přizpůsobitelným prefabem, který BoundsControl vytvoří instanci za běhu. Vývojáři můžou upravovat a přizpůsobovat předem připravené vizuály nebo dokonce vytvářet vizuály s novými hranicemi úplně od začátku. Poskytujeme implementace vizuálů se standardními hranicemi, které následují po novém jazyce Mixed Reality Design Language.

Nové vizuály nabízejí zjednodušenou vizuální zpětnou vazbu, která ilustruje záměr uživatele a manipulaci s objektem s minimálním rušivým vizuálním šumem.

Nastavení

Jednoduše přidejte BoundsControl do existujícího objektu BoundsVisualsPrefab a naplňte odkaz vizuály bounds, které chcete použít. Nabízíme několik předdefinovaných vizuálů s hranicemi, které můžete použít.

Důležité

Důrazně doporučujeme, aby vývojáři přidali MinMaxScaleConstraint , aby zabránili uživateli ve škálování objektu na nepoužitelně malou nebo velkou velikost.

Pokud chcete použít záměr a efekty fokusu ohraničených vizuálů, musíte mít na objektu objekt StatefulInteractable . Pokud se interaktivně nezjistí automaticky, můžete připojení zadat v inspektoru BoundsControl.

Poznámka

Doporučujeme vývojářům používat ObjectManipulator společně s BoundsControl , aby uživatelům kromě manipulace na základě cen nabídli přímou manipulaci. ObjectManipulator může sloužit jako StatefulInteractable pro stavy přechodu myší nebo fokusu, na které vizuály hranic reagují.

Předfaby vizuálů Bounds

Nabízíme několik předdefinovaných vizuálů s hranicemi pro použití s BoundsControl. Vývojářům se doporučuje vytvářet předběžné varianty těchto vizuálů a přizpůsobovat je tak, aby vyhovovaly jejich potřebám. Animace a stavy popisovačů využívají StateVisualizer, což vývojářům umožňuje dále přizpůsobit vzhled a chování cenových nabídek.

Styl popisovače okluze

Tyto vizuály s hranicemi nabízejí zjednodušený vizuální návrh s menším množstvím rušivých prvků pro uživatele. Budou viditelné pouze příslušné úchyty podél okrajů hranic. Vizuály s hranicemi zhoršují, rozšiřují a mění barvu nebo tloušťku v závislosti na záměru uživatele a průběhu výběru. Důrazně doporučujeme použít tento vizuální styl ohraničení.

Uchycené úchyty

Pouze záměr

V některých kontextech můžou být popisovače nežádoucí a vývojáři můžou chtít jako příjemný indikátor záměru uživatele použít samotné vizuály ohraničení. I když tento prefab provádí úlohu, stejného efektu lze dosáhnout s libovolným jiným vizuálem hranic výběrem HandleType.None. Zjistili jsme, že vizuály s stísněnými hranicemi jsou uspokojivým a příjemným prvkem vizuální zpětné vazby pro mnoho různých kontextů, nejen pro manipulaci na základě popisovačů.

Žádné úchyty

Starší styl

Tyto vizuály s hranicemi zobrazují všechny úchyty a okraje rámečku. To více odpovídá staršímu jazyku návrhu a předchozímu chování v MRTK 2.x; tento návrh však může být pro uživatele více rušivý kvůli zbytečnému vizuálnímu šumu. Kromě toho může přítomnost úchytů, které jsou před objektem (a za), způsobit problémy s nepřímou manipulací se stažením pohledu. Nedoporučujeme používat tento styl pro nové aplikace, zejména pro ty, které využívají zaměření pohledem.

Tradiční úchyty

Návrh interakce

V aktuální iteraci nabízíme jednoduchou interakci aktivace/deaktivace. Kliknutím na hranice (jinými slovy, výběrem objektu, nepřesunutím a uvolněním) lze úchyty zapínat a vypínat. Tolerance vzdálenosti pro tuto kontrolu lze upravit pomocí DragToggleThresholda samotné chování aktivace lze povolit nebo zakázat pomocí ToggleHandlesOnClick vlastnosti .

Přepínač ovládacího prvku Bounds

Popisovače lze kdykoli ručně aktivovat nebo deaktivovat z kódu nastavením HandlesActive.

Automatický výpočet mezí

BoundsControl se pokusí automaticky vypočítat hranice přidruženého objektu. Pokud je požadován určitý obrazec ohraničení, zaškrtněte OverrideBounds tuto možnost a určete objekt bounds přímo. Systém výpočtu hranic vypočítá pouze hranice pro zadaný objekt přepsání.

Algoritmus BoundsCalculationMethod má vliv na to, jak algoritmus počítá hranice. Pokud se vizuální tvar uzavřeného objektu nemusí nutně shodovat s s colliderem nebo je tomu naopak, mohou vývojáři upravit metodu výpočtu tak, aby upřednostnily použití hranic rendereru nebo s collideru nebo kombinace obojího.

Bez ohledu na metodu Padding výpočtu bude možnost vyčíslovat hranice jednotně ve světových jednotkách. Při zploštělování hranic není zploštěná osa.

Sloučení

Flattened BoundsControl

BoundsControl lze použít také pro manipulaci s 2D obsahem. Pokud FlattenMode je nastavena na Auto, BoundsControl se zplotí na 2D obdélníkové hranice, pokud je objekt dostatečně plochý podél jakékoli osy. Pokud objekt není dostatečně plochý, ale přesto byste chtěli obdélníkové ohraničení dovolování, FlattenMode.Always vždy zploštělí BoundsControl podél nejhubenější osy. Naopak, FlattenMode.Never zabrání BoundsControl zploštět, i když je objekt velmi tenký.

Možnosti manipulace

Chování při manipulaci BoundsControl lze upravit několika způsoby. Možnost RotateAnchor určuje bod otáčení, kolem kterého se BoundsControl otáčí při použití možností otočení. Body otáčení některých objektů jsou daleko od jejich vizuálního středu, což může způsobit nepohodlí a nepřesnosti při manipulaci s úchyty pro otáčení. Určení BoundsCenter pro RotateAnchor způsobí, že BoundsControl bude vždy otáčet kolem geometrického středu počítaných mezí místo skutečného původu objektu.

Chování škálování je možné nastavit na nebo UniformNon Uniform. V jednotném režimu jsou všechny osy objektu škálovány dohromady, aby se zachoval poměr stran a vzhled. Nerovnoměrné měřítko umožňuje změnit měřítko každé osy objektu nezávisle na sobě.