Megosztás a következőn keresztül:


Határolókeret – MRTK2

Határolókeret

Megjegyzés

A határolókeret elavult, és a követő korlátok vezérlője váltja fel. A meglévő játékobjektumok frissítéséhez használja az egyik migrálási lehetőséget .

A BoundingBox.cs szkript alapvető funkciókat biztosít az objektumok vegyes valóságban való átalakításához. A határolókeret egy kockát jelenít meg a hologram körül, amely jelzi, hogy használható. A kocka sarkaiban és szélein lévő fogópontok lehetővé teszik az objektum skálázását vagy elforgatását. A határolókeret a felhasználói bevitelre is reagál. A HoloLens 2 például a határolókeret válaszol az ujj közelségére, vizuális visszajelzést küldve az objektumtól való távolság észleléséhez. Minden interakció és vizualizáció egyszerűen testre szabható.

További információ: Határolókeret és alkalmazássáv a Windows fejlesztői központban.

Példajelenet

A jelenetben BoundingBoxExamples példákat talál a határolókeret-konfigurációkra.

Példák a határolókeretre

Határolókeret hozzáadása és konfigurálása a Unity Inspector használatával

  1. Box Collider hozzáadása objektumhoz
  2. Szkript hozzárendelése BoundingBox objektumhoz
  3. Konfigurálja a beállításokat, például az "Aktiválás" metódusokat (lásd alább az Inspector tulajdonságok szakaszát)
  4. (Nem kötelező) Elő- és anyag hozzárendelése HoloLens 2 stílushatároló dobozhoz (lásd az alábbi Stílusok kezelése szakaszt)

Megjegyzés

Az inspector Target Object and Bounds Override ( Célobjektum és korlátok felülbírálása ) mezőjével több gyermekösszetevővel rendelkező objektumot és ütközőt rendelhet hozzá az objektumhoz.

Határolókeret 1

Határolókeret hozzáadása és konfigurálása a kódban

  1. A GameObject kocka példányosítása

    GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    
  2. Szkript hozzárendelése BoundingBox objektumhoz ütközővel az AddComponent<>() paranccsal

    private BoundingBox bbox;
    bbox = cube.AddComponent<BoundingBox>();
    
  3. Beállítások konfigurálása (lásd alább az Inspector tulajdonságok szakaszát)

    // Make the scale handles large
    bbox.ScaleHandleSize = 0.1f;
    // Hide rotation handles
    bbox.ShowRotationHandleForX = false;
    bbox.ShowRotationHandleForY = false;
    bbox.ShowRotationHandleForZ = false;
    
  4. (Nem kötelező) A HoloLens 2 stílusú határolókeretek elő- és anyagainak hozzárendelése. Ehhez továbbra is szükség van a felügyelőn keresztüli hozzárendelésekre, mivel az anyagokat és az előlapokat dinamikusan kell betölteni.

Megjegyzés

A Unity "Resources" mappájának vagy a Shader.Find elemnek a dinamikus betöltéséhez nem ajánlott használni, mivel a shader-permutációk futásidőben hiányozhatnak.

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élda: Minimális, maximális határolókeret-méretezés beállítása a MinMaxScaleConstraint használatával

A minimális és maximális skálázás beállításához használja a következőt MinMaxScaleConstraint: . A MinMaxScaleConstraint használatával is beállíthatja a minimális és maximális skálázást.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élda: Határolókeret hozzáadása egy játékobjektum köré

Ha határolókeretet szeretne hozzáadni egy objektumhoz, egyszerűen adjon hozzá egy összetevőt BoundingBox :

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

Vizsgáló tulajdonságai

Célobjektum

Ez a tulajdonság határozza meg, hogy a határolókeret módosítása melyik objektumot fogja átalakítani. Ha nincs beállítva objektum, a határolókeret alapértelmezés szerint a tulajdonos objektumra van beállítva.

Korlátok felülbírálása

Beállít egy dobozütköztetőt az objektumból a kötött számításokhoz.

Aktiválási viselkedés

A határolókeret felületének aktiválására több lehetőség is van.

  • Aktiválás indításkor: A határolókeret a jelenet elindítása után láthatóvá válik.
  • Aktiválás közelség alapján: A határolókeret akkor válik láthatóvá, ha egy csuklós kéz közel van az objektumhoz.
  • Aktiválás mutatóval: A határolókeret akkor válik láthatóvá, ha egy kézi mutató célozza.
  • Manuális aktiválás: A határolókeret nem válik automatikusan láthatóvá. Manuálisan aktiválhatja egy szkripten keresztül a boundingBox.Active tulajdonság elérésével.

Skálázási minimum

A minimálisan engedélyezett skálázás. Ez a tulajdonság elavult, és célszerű szkriptet MinMaxScaleConstraint hozzáadni. Ha hozzáadja ezt a szkriptet, a rendszer a minimális skálázást veszi fel belőle a határolókeret helyett.

Maximális skálázás

A maximálisan engedélyezett skálázás. Ez a tulajdonság elavult, és célszerű szkriptet MinMaxScaleConstraint hozzáadni. Ha hozzáadja ezt a szkriptet, a rendszer a maximális méretet veszi fel belőle a határolókeret helyett.

Doboz megjelenítése

Különböző határolókeret-vizualizációs lehetőségek.

Ha az Egybesimított tengely az Automatikus simítás értékre van állítva, a szkript a legkisebb mértékben letiltja a tengely mentén történő módosítást. Ez egy 2D határolókeretet eredményez, amelyet általában vékony objektumokhoz használnak.

Kezeli

A fogópontstílus felülbírálásához hozzárendelheti az anyagot és az előlapot. Ha nincs hozzárendelve fogópont, azok az alapértelmezett stílusban jelennek meg.

esemény

A Határolókeret a következő eseményeket biztosítja. Ez a példa ezeket az eseményeket használja a hangvisszajelzések lejátszásához.

  • Forgatás elindítva: A forgatás indításakor aktiválódott.
  • Forgatás befejeződött: A forgatás végekor aktiválódott.
  • Méretezés elindítva: A skálázás indításakor aktiválódik.
  • Skálázás befejeződött: A skálázás végekor aktiválódik.
esemény

Fogópontstílusok

Alapértelmezés szerint, amikor csak hozzárendeli a BoundingBox.cs szkriptet, az megjeleníti a HoloLens 1st gen stílus fogópontját. A HoloLens 2 stílusú fogópontok használatához hozzá kell rendelnie a megfelelő fogópont-előtagokat és anyagokat.

Határolókeret fogópontstílusai

Az alábbiakban a HoloLens 2 stílusú határolókeret fogópontjaihoz tartozó elő-, anyag- és méretezési értékeket találja. Ezt a példát a BoundingBoxExamples jelenetben találja.

HandStyles 2

Fogópontok (HoloLens 2 stílus beállítása)

  • Fogóanyag: BoundingBoxHandleWhite.mat
  • Fogópont megragadott anyag: BoundingBoxHandleBlueGrabbed.mat
  • Skálázási leíró előtagja: MRTK_BoundingBox_ScaleHandle.prefab
  • Scale Handle Slate Prefab: MRTK_BoundingBox_ScaleHandle_Slate.prefab
  • Skálázási fogópont mérete: 0,016 (1,6cm)
  • Skálázási fogópontütköző kitöltése: 0,016 (a megragadható ütköző valamivel nagyobb, mint a fogópont vizualizáció)
  • Forgatópont előlapja: MRTK_BoundingBox_RotateHandle.prefab
  • Forgatópont mérete: 0,016
  • Forgatófogópont ütköző kitöltése: 0,016 (a megragadható ütköző valamivel nagyobb, mint a fogantyú vizualizáció)

Közelség (beállítás HoloLens 2 stílushoz)

A fogópontok megjelenítése és elrejtése animációval a kéz távolsága alapján. Kétlépéses skálázási animációval rendelkezik.

Közelségi kapcsolat
  • Aktív közelségi hatás: Közelségi alapú leíróaktiválás engedélyezése
  • Közepes közelség kezelése: Az 1. lépéses skálázás távolsága
  • Közelség kezelése: A 2. lépéses skálázás távolsága
  • Távoli skálázás: A leíróeszköz alapértelmezett skálázási értéke, ha a kezek a határolókeret-interakció tartományán kívül vannak (a fenti távolság a "Közepes közelség kezelése" által meghatározott távolság. A 0 használatával alapértelmezés szerint elrejtheti a leírót)
  • Közepes skálázás: A leíróeszköz skálázási értéke, ha a kezek a határolókeret-interakció tartományán belül vannak (a fent meghatározott távolság a "Fogópont közelsége" szerint van meghatározva. Normál méret megjelenítése az 1-es számmal)
  • Close Scale :A leíróeszköz skálázási értéke, ha a kezek a megragadási interakció tartományán belül vannak (a fent meghatározott távolság a "Fogópont közelsége" szerint van meghatározva. Nagyobb méret megjelenítése 1,x-et használva)

Objektum mozgathatóvá tétele a kezelővel

Határolókerettel ManipulationHandler.cs kombinálható, hogy az objektum mozgatható legyen távoli interakcióval. A kezelő egy és kétkezes interakciókat is támogat. A kézkövetéssel közelről is kommunikálhat egy objektummal.

Manipulációkezelő

Annak érdekében, hogy a határolókeret szélei ugyanúgy viselkedjenek, amikor "távoli interakcióval" helyezik átManipulationHandler, javasoljuk, hogy csatlakoztassa az eseményeket a manipulációnmegkezdett manipuláció befejeződöttBoundingBox.HighlightWires / / BoundingBox.UnhighlightWires, illetve a fenti képernyőképen látható módon.

Migrálás a korlátok vezérlőelemére

A határolókeretet használó meglévő elő- és példányok az MRTK-eszközök csomagjának részét képező áttelepítési ablakban frissíthetők az új határvezérlőre.

A határolókeret egyes példányainak frissítéséhez egy migrálási lehetőség is rendelkezésre áll az összetevő tulajdonságfelügyelőjén belül.

Korlátok – Migrálás vezérlése