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


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.

Interakciók öröklési diagramja

  • 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 a IsGazeHovered vagy IsGrabSelected a parancsikonok annak lekérdezéséhez, hogy egy résztvevő interakciós fél implementál-e egy adott felületet (ennek IGazeInteractor megfelelően vagy IGrabInteractor). Ezek a jelzők nagyobb teljesítményűek, mint az vagy interactorsSelectinga listájában interactorsHovering való iterálás. Emellett MRTKBaseInteractable szűrhet/elutasíthat bizonyos típusú interakciókat abban az esetben, ha a fejlesztő ki szeretne zárni bizonyos bemeneti módokat.
  • 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.

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.

Az állapot és a vizualizációk szigorú elkülönítése

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

StatefulInteractableAz alap XRI-funkciókkal szemben a leglánékonyabb további funkció a változó Selectednesstámogatása. Bár az alap XRI-interakciós elemek ki vannak jelölve, vagy nincsenek kiválasztva, az MRTK-k StatefulInteractablea 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.

Változó kiválasztása

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 isSelectedteljesen 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.

UGUI-adapter folyamata

Amikor a CanvasProxyInteractor felhasználó értesítést kap a UGUI-eseményekről, UGUIInputAdapterazzal 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.