Interakciós elemek – MRTK3
Az MRTK a XRBaseInteractable
Unity XR Interaction Toolkit eszközkészlete által biztosítottakra épül. Az MRTK teljes mértékben támogatja a meglévő interakciós viselkedést és API-t, és minden egyéni interakciós lehetőségünk megfelel a meglévő XRI-interakciós API-nak.
Az XRI-t még nem kezdő fejlesztők számára javasoljuk , hogy először tekintse át a Unity XRI-architektúra dokumentációját.
Az XRI-ben található interakciós mechanizmusok kibővítéséhez az MRTK két alaposztályt kínál, amelyeken fejlett interakciók hozhatók létre, az egyik a másikat bővíti ki.
MRTKBaseInteractable : XRBaseInteractable
- Ez az osztály különböző típusú interakciók szűrését és megjelölését biztosítja. Bár az alap XRI
XRBaseInteractable
nem tesz különbséget az interakciós típusok között, kényelmi funkciókat biztosít annak ellenőrzéséhez,MRTKBaseInteractable
hogy előfordulnak-e gyakori interakciók. Az olyan kényelmi tulajdonságok, mint aIsGazeHovered
vagyIsGrabSelected
a parancsikonok annak lekérdezéséhez, hogy egy résztvevő interakciós fél implementál-e egy adott felületet (ennekIGazeInteractor
megfelelően vagyIGrabInteractor
). Ezek a jelzők nagyobb teljesítményűek, mint az vagyinteractorsSelecting
a listájábaninteractorsHovering
való iterálás. EmellettMRTKBaseInteractable
szűrhet/elutasíthat bizonyos típusú interakciókat abban az esetben, ha a fejlesztő ki szeretne zárni bizonyos bemeneti módokat.
- Ez az osztály különböző típusú interakciók szűrését és megjelölését biztosítja. Bár az alap XRI
StatefulInteractable : MRTKBaseInteractable
- Bár
MRTKBaseInteractable
jelzőket és szűrőket ad hozzá, és nem ad hozzá további állapotokat az interakcióhoz, olyan hasznos állapotalapú funkciókat vezet be,StatefulInteractable
mint az összesítés és a változók kiválasztása.
- Bár
Az állapot és a vizualizációk szigorú elkülönítése
Az MRTK 2.x-ben az interakciós elemek gyakran felelősek voltak a saját vizuális effektusok vezetéséért, legyen szó akár egy 3D gomb tömörítéséről, egy rámutatási effektusról, vagy akár csak a szín módosításáról egy kattintással. Ennek a megközelítésnek az a korlátozása, hogy az interakciós logika szorosan kötődik a vizualizációkhoz. Ha át szeretné tervezni a vizualizációkat, vagy más méretet/alakzatot/elmozdulást/stb. használ. gombot, magának az interakciós szkriptnek is módosítania kell.
Az MRTK3-ban az interakciók tiszta állapotot és interakciót jelentenek. Az interakciós funkció nem jelenít meg semmilyen vizuális módosítást vagy effektust a belső állapota alapján. Ez csupán egy olyan állapot- és interakciólogika-gyűjtemény, amely rendkívül hordozható a vizuális bemutatók beállításai között.
Ugyanez a PressableButton
szkript használható egy squishy labda, egy nyomható "trackpad" -szerű sík, vagy egy absztrakt nyomásos, amely kiadja a hálózati eseményeket a sajtóban. A PressableButton
szkriptet még a "hol" sem érdekli; lehet egy vászonon belül, vagy egy merev testen.
A vizualizációk meghajtózásához egy külön "vizualizáció-illesztőprogram" használatával kérdezhető le az állapot az interakciós állapotról, és megjeleníti a megfelelő visszajelzést.
StateVisualizer
az ajánlott alacsony kódszámú módszer, amely az interakciós állapotból származó gyakori vizuális visszajelzési hatásokat hajtja, de a fejlesztők szabadon írhatnak saját egyéni vizualizáció-illesztőprogramokat. A gombösszetevők például általában a speciális 3D és shader alapú visszajelzési effektusokhoz használhatók StateVisualizer
, de egy példát BasicPressableButtonVisuals
is bemutatunk, amely bemutatja, hogyan hozható létre egy egyszerű vizuális illesztőprogram a kódban.
Változó kiválasztása
StatefulInteractable
Az alap XRI-funkciókkal szemben a leglánékonyabb további funkció a változó Selectedness
támogatása. Bár az alap XRI-interakciós elemek ki vannak jelölve, vagy nincsenek kiválasztva, az MRTK-k StatefulInteractable
a kijelölt lebegőpontos törtrészek lehetnek.
Ez a fogalom akkor hasznos, ha XR-ben dolgozik, mivel a bemenet szinte minden formája már nem bináris állapot. A mozgásvezérlők gyakran rendelkeznek analóg triggerekkel (vagy analóg fogókkal!), a kézműveletek változó "csippentést" biztosítanak, és a hangerő-vezérlési műveletek különböző mennyiséggel lenyomhatják a gombokat vagy a lenyomható felületeket. Ezeket a változó, analóg interakciókat mindenhol láthatja az XR-ben, és az MRTK fel van szerelve, hogy segítse a fejlesztőket abban, hogy kellemes interakciókat építsenek ezen analóg bemenetek fölé.
A különböző interakciók és interakciók típusainak széles köre együttesen járulhat hozzá az interakciók teljes kiválasztásához. Nevezetesen, minden interakciós résztvevő, aki implementálja IVariableSelectInteractor
az analóg kiválasztási mennyiségét, általában az max()
összes résztvevő interakciós résztvevőn keresztül járul hozzá. Ezt a változómennyiséget a vaníliastílusú interakciókból származó bináris, nem változós kijelölésekkel kombináljuk.
Az olyan származtatott osztályok esetében, mint a PressableButton
, a Selectedness()
függvény felülbírálásra kerül, hogy egy további "összetevőt" adjon hozzá a kiválasztási számításhoz. A implementálást végrehajtó IPokeInteractor
interakciók a fizikai helyük és az interakciós lehetőségek fizikai lenyomása alapján járulhatnak hozzá a Kiválasztáshoz. Más származtatott osztályok más, tetszőleges kiválasztási formákat is bevezethetnek.
Az MRTK által biztosított Selectedness()
isSelected
és mindig "egyet értő" interakciók esetében – más szóval, soha nem fog nagyobbat megfigyelni Selectedness()
, mint a SelectThreshold
megfelelő XRI isSelected
és egy kísérő kezelő nélkül a rendszerben interactorsSelecting
.
Fontos
Az egyéni interakciós alosztályok nyilvánvalóan felülbírálhatják Selectedness
az XRI-től isSelected
teljesen leválasztott más értékeket, azonban az interakciós alosztályaink ezt nem teszik meg, és erősen eltántorítjuk. Általában soha ne írjon olyan interakciókat , amelyek nem rendelkeznek megfelelő interakcióval. Az XRI kiválasztása az esetek túlnyomó többségében elegendő lesz, és a buildelt egyéni interakciókat interakciókként kell megírni.
Amikor olyan egyéni interakciós lehetőséget hoz létre, amely támogatja az új meghatározási Selectedness()
módszert, egyszerűen felülbírálja a metódust, és kombinálja az új kijelölést a meglévő kijelölési mennyiséggel. Ha változókijelölést vagy más vizuális réteget használ StateVisualizer
, az az új kijelölési típusnak megfelelően válaszol.
UGUI-események leképezése az XRI-be
Bizonyos esetekben kívánatos, hogy az interakciós eszközök reagáljanak az UGUI-eseményekre, például az egérre, a játékpadra vagy az érintőképernyős bemenetre. A UGUIInputAdapter
, amely UGUI, fogadja az UGUI-eseményeket Selectable
, és továbbítja őket egy CanvasProxyInteractor
, ha van ilyen.
Amikor a CanvasProxyInteractor
felhasználó értesítést kap a UGUI-eseményekről, UGUIInputAdapter
azzal egyenértékű XRI-műveleteket bocsát ki a megfelelő interakciós felületen. Az UGUI-bemenet és az XRI-műveletek leképezése kissé veszteséges, és aktív fejlesztési terület.
Ezzel a rendszerrel a modern platformokhoz, kezekhez, mozgásvezérlőkhöz és 3D bemenetekhez készült meglévő XRI-interakciók ugyanolyan jól reagálhatnak az akadálymentes 2D-s vezérlőkre, például az egérre és a játékpadra.