Ohraničovací rámeček

Ohraničovací rámeček

Poznámka

Ohraničovací rámeček je zastaralý a nahrazený ovládacím prvkemjeho následníky. K upgradu existujících herních objektů použijte jednu z možností migrace .

BoundingBox.csSkript poskytuje základní funkce pro transformaci objektů ve smíšené realitě. Ohraničující rámeček zobrazí datovou krychli kolem hologramu, která indikuje, že je možné ji interagovat. Táhla v rozích a hranách datové krychle umožňují škálování nebo otáčení objektu. Ohraničovací rámeček také reaguje na uživatelský vstup. na HoloLens 2, například ohraničující rámeček reaguje na blízkost prstů, 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.

další informace najdete v části ohraničovací rámeček a panel aplikace v Dev Center Windows.

Příklad scény

V rámci scény můžete najít příklady konfigurací vázaného rámečku BoundingBoxExamples .

Příklady ohraničovacích rámečků

Postup přidání a konfigurace ohraničovacího rámečku pomocí inspektoru Unity

  1. Přidat kolizi boxu do objektu
  2. Přiřazení BoundingBox skriptu k objektu
  3. Konfigurace možností, jako jsou metody aktivace (viz část vlastnosti inspektoru níže)
  4. Volitelné přiřaďte prefabs a materiály pro ohraničovací rámeček ve stylu HoloLens 2 (viz část manipulace styly 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.

Ohraničující rámeček 1

Postup přidání a konfigurace ohraničujícího pole v kódu

  1. Vytvoření instance GameObject datové krychle

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

    private BoundingBox bbox;
    bbox = cube.AddComponent<BoundingBox>();
    
  3. Konfigurovat možnosti (viz část vlastnosti inspektoru níže)

    // Make the scale handles large
    bbox.ScaleHandleSize = 0.1f;
    // Hide rotation handles
    bbox.ShowRotationHandleForX = false;
    bbox.ShowRotationHandleForY = false;
    bbox.ShowRotationHandleForZ = false;
    
  4. Volitelné přiřaďte prefabs a materiály pro ohraničovací rámeček 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.

bbox.BoxMaterial = [Assign BoundingBox.mat]
bbox.BoxGrabbedMaterial = [Assign BoundingBoxGrabbed.mat]
bbox.HandleMaterial = [Assign BoundingBoxHandleWhite.mat]
bbox.HandleGrabbedMaterial = [Assign BoundingBoxHandleBlueGrabbed.mat]
bbox.ScaleHandlePrefab = [Assign MRTK_BoundingBox_ScaleHandle.prefab]
bbox.ScaleHandleSlatePrefab = [Assign MRTK_BoundingBox_ScaleHandle_Slate.prefab]
bbox.ScaleHandleSize = 0.016f;
bbox.ScaleHandleColliderPadding = 0.016f;
bbox.RotationHandleSlatePrefab = [Assign MRTK_BoundingBox_RotateHandle.prefab]
bbox.RotationHandleSize = 0.016f;
bbox.RotateHandleColliderPadding = 0.016f;

Příklad: nastavení minimálního, maximálního měřítka vázaného rámečku pomocí MinMaxScaleConstraint

Chcete-li nastavit minimální a maximální měřítko, použijte MinMaxScaleConstraint . Pomocí MinMaxScaleConstraint můžete také nastavit minimální a maximální měřítko pro ManipulationHandler .

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
bbox = cube.AddComponent<BoundingBox>();
// Important: BoundingBox creates a scale handler on start if one does not exist
// do not use AddComponent, as that will create a  duplicate handler that will not be used
MinMaxScaleConstraint scaleConstraint = bbox.gameObject.GetComponent<MinMaxScaleConstraint>();
scaleConstraint.ScaleMinimum = 1f;
scaleConstraint.ScaleMaximum = 2f;

Příklad: přidejte ohraničující rámeček kolem herního objektu

Chcete-li přidat ohraničující rámeček kolem objektu, stačí do něj přidat BoundingBox komponentu:

private void PutABoxAroundIt(GameObject target)
{
   target.AddComponent<BoundingBox>();
}

Vlastnosti inspektoru

Cílový objekt

Tato vlastnost určuje, který objekt se bude transformovat pomocí manipulace s ohraničujícím polem. Pokud není nastaven žádný objekt, ohraničovací rámeček se nastaví jako výchozí pro objekt Owner (Vlastník).

Přepsání vazeb

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

Chování aktivace

Existuje několik možností, jak aktivovat rozhraní ohraničovacího rámečku.

  • Aktivovat na začátku: ohraničující rámeček se po spuštění scény zobrazí jako viditelný.
  • Aktivovat v blízkosti: ohraničující rámeček se zobrazí, když je kloubová ruka blízko objektu.
  • Aktivovat ukazatelem: ohraničující rámeček se zobrazí, když je cílem ruky ukazatel.
  • Ruční aktivace: ohraničovací rámeček se nezobrazuje automaticky. Můžete ji ručně aktivovat pomocí skriptu přístupem k vlastnosti boundingBox. Active.

Minimální měřítko

Minimální povolený rozsah. Tato vlastnost je zastaralá a je vhodnější přidat MinMaxScaleConstraint skript. Pokud se tento skript přidá, z něj se z něho vezme minimální měřítko místo z ohraničovacího rámečku.

Maximální velikost

Maximální povolený rozsah. Tato vlastnost je zastaralá a je vhodnější přidat MinMaxScaleConstraint skript. Pokud se tento skript přidá, z tohoto rámečku se z něho odebere maximální měřítko.

Zobrazení boxu

Různé možnosti vizualizace ohraničovacího rámečku.

Pokud je vodorovná osa nastavena na hodnotu automaticky shrnout, skript zabrání manipulaci podél osy s nejmenším rozsahem. Výsledkem je 2D ohraničovací rámeček, který se obvykle používá pro tenké objekty.

Handles

Můžete přiřadit materiál a Prefab a přepsat tak styl popisovače. Pokud nejsou přiřazeny žádné obslužné rutiny, zobrazí se ve výchozím stylu.

Události

Ohraničující rámeček 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í skončilo: aktivuje se při ukončení rotace.
  • Začátek rozsahu: aktivuje se při zahájení škálování.
  • Konec škálování: aktivuje se při škálování na konci.
Události

Styly popisovačů

ve výchozím nastavení se při pouze přiřazování BoundingBox.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.

Styly popisovačů ohraničujícího rámečku

níže jsou uvedeny hodnoty prefabs, materiálů a škálování pro táhla ohraničujícího pole ve stylu HoloLens 2. V tomto příkladu můžete najít tento příklad na BoundingBoxExamples scéně.

HandStyles 2

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

  • Manipulace s materiálem: BoundingBoxHandleWhite. mat
  • Zpracovatpř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)

blízkost (nastavení stylu HoloLens 2)

Umožňuje zobrazit a skrýt popisovače pomocí animace na základě vzdálenosti k rukou. Má dvě animace škálování.

Blízkost
  • Aktivní efekt blízkosti: Povolit aktivaci popisovače na základě blízkosti
  • Zpracování střední blízkosti: vzdálenost pro škálování prvního kroku
  • Obsluha zavření blízkosti: vzdálenost pro změnu velikosti druhého kroku
  • Mnohem Scale: výchozí hodnota měřítka assetu popisovače v případě, že ruce jsou mimo rozsah interakce ohraničovacího pole (vzdálenost definovaná 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 ohraničujícího pole (vzdálenost je definována výše podle ' ukončení blízkosti '. 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

Vytvoření objektu na Pohyblivý popisovač manipulace

Ohraničující rámeček lze kombinovat s ManipulationHandler.cs , aby objekt mohl být přesunutý pomocí daleko ovlivněných interakcí. Obslužná rutina manipulace podporuje jak jednu, tak oboustrannou interakci. Sledování ruky lze použít k interakci s objektem v blízkosti.

Obslužná rutina manipulace

Aby se okraje ohraničovacího rámečku chovaly stejným způsobem při přesunu pomocí ManipulationHandler nejvyšší interakce, je doporučeno připojit své události pro zpracování ManipulationHandler / / BoundingBox.HighlightWires / BoundingBox.UnhighlightWires , jak je znázorněno na snímku obrazovky výše.

Migrace na ovládací prvek Bounds

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.

Migrace ovládacího prvku Bounds