Határolókeret – MRTK2
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.
Határolókeret hozzáadása és konfigurálása a Unity Inspector használatával
- Box Collider hozzáadása objektumhoz
- Szkript hozzárendelése
BoundingBox
objektumhoz - 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)
- (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 hozzáadása és konfigurálása a kódban
A GameObject kocka példányosítása
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
Szkript hozzárendelése
BoundingBox
objektumhoz ütközővel az AddComponent<>() paranccsalprivate BoundingBox bbox; bbox = cube.AddComponent<BoundingBox>();
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;
(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.
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.
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.
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.
- 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.
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.