Delen via


Grab, hold and throw with Interactables

Overzicht

Mesh Interactables is een systeem voor het configureren van objecten met Unity-scripts waarmee interactie met een object of avatargedrag tijdens runtime wordt gedefinieerd. De scripts definiëren de eigenschappen van het object waarmee kan worden gecommuniceerd met behulp van XRI-interactors. De Mesh-toolkit bevat scripts van verschillende objecttypen die kunnen worden gedefinieerd. Wanneer een project wordt uitgevoerd, worden alle benodigde prefabs en instellingen ingesteld die zijn vereist voor objecten of de avatar om zich te gedragen zoals gedefinieerd. Als u een voorbeeld wilt zien van hoe uw interactiebare objecten eruitzien wanneer ze worden uitgevoerd in de Mesh-app, moet u mesh-emulatiemodus instellen. Houd er rekening mee dat de IK-functionaliteit in de Mesh-app niet beschikbaar is in de mesh-emulatiemodus.

Het onderdeel Mesh Interactable Setup

Als u een object interactief wilt maken, moet u het onderdeel Mesh Interactable Setup toevoegen.

  1. Selecteer het object in de hiërarchie.
  2. Klik in de inspector op de knop Component toevoegen en selecteer vervolgens Mesh Interactable Setup.

Een schermafbeelding van het dialoogvenster Component toevoegen met het onderdeel Mesh Interactable Setup geselecteerd.

Het onderdeel wordt toegevoegd en de standaardeigenschap Objecttype is ingesteld op Interactiebaar. (Objecttypen worden in de volgende sectie uitgelegd.)

Een schermafbeelding van het onderdeel Mesh Interactable Setup met Objecttype ingesteld op Interactiebaar.

De eigenschappen voor een groep objecten die zich allemaal hetzelfde gedragen, kunnen worden ingesteld met een bovenliggend onderdeel Mesh Interactable Setup . De eigenschappen worden tijdens runtime toegepast op alle kinderen met rigidbodies door automatisch een mesh-component Interactiebare body toe te voegen aan elk onderliggend object. Mogelijk wilt u Mesh Interactable Body handmatig toevoegen om Mesh-interactieables te gebruiken met Visual Scripting, zoals met interactiegebeurtenissen of om de veranderlijke doeltransformatie te wijzigen via het visuele script.

Een schermafbeelding van het onderdeel Mesh Interactable Body.

Opmerkingen:

  • Mesh Interactable Body zorgt ervoor dat elke interactie onafhankelijk kan gedragen.

  • Een rigidbody moet aan een object worden toegevoegd als u wilt dat deze fysica wordt ingeschakeld.

Interactiebare objecttypen

Er zijn vier objecttypen:

  • Interactiebaar
  • Manipuleerbaar
  • Uit te rusten
  • Throwable

Een objecttype kiezen:

  • Klik in het onderdeel Mesh Interactable Setup op de vervolgkeuzelijst Objecttype en selecteer een van de vier opties.

Een schermafbeelding van de menuopties objecttype in het onderdeel Mesh Interactable Body.

Interactiebaar

Zoals hierboven vermeld, is dit het standaardtype en het meest eenvoudige type. Hiermee hebt u toegang tot callbacks die kunnen worden aangeroepen wanneer de gebruiker de muisaanwijzer boven het object plaatst of selecteert waarop andere scripts kunnen reageren. Als u bijvoorbeeld een knop hebt die u wilt gebruiken om een ander object in te schakelen, voegt u dit type toe aan het object met een onSelected-callback om dat andere object in te schakelen. De knop is volledig interactief door alleen dit type en een collider toe te voegen; Je hoeft verder niets te doen.

Manipuleerbaar

Een object van dit type kan de transformatie tijdens runtime laten manipuleren en door de ruimte aan het einde van een interactiestraal bewegen. Er zijn snelkoppelingsbesturingselementen beschikbaar om het object te draaien of te vertalen. Voor het bewerken van objecten in de Mesh-app kunt u IK-instellingen inschakelen voor de avatarhand om het object te volgen. Maakbare objecten vereisen geen starbody, maar u moet er een toevoegen als u wilt dat de objecten over fysica-mogelijkheden beschikken.

Een schermafbeelding van een Mesh-ervaring met een koffiepot die wordt gemanipuleerd.

Uit te rusten

Een object van dit type wordt aan de hand van uw avatar bevestigd. De pc-besturingselementen voor apparatuur klikken op het object of drukken op F terwijl het object is geselecteerd. De Quest-besturingselementen voor apparatuur drukken op de knop 'Grip' terwijl het object is geselecteerd. Uit te rusten objecten bevatten instellingen voor IK-doelen voor de armhouding van uw avatar terwijl het object is uitgerust. De IK-doelen zijn een verschuiving van de avatars borst; dit bepaalt waar de hand gaat terwijl het object wordt vastgehouden of geactiveerd.

Throwable

Zoals de naam al aangeeft, kunt u een object van dit type pakken en gooien. Na het pakken kunt u in de doelmodus gaan door de linkermuisknop ingedrukt te houden. Hierdoor kan de arm van je avatar je muisdoel volgen; Als u het object wilt gooien, laat u de linkermuisknop los.

Een schermafbeelding van een dartspel met een dart greep en gelezen om te worden gegooid.

Alle onderdelen van Interactables hebben interactie-eigenschappen en -methoden die beschikbaar zijn voor Visual Scripting, zodat u een onbeperkt aantal manieren hebt om ze samen te laten werken.

Objecten interactief maken met Visual Scripting

Als u reacties op de interacties van een object met Visual Scripting wilt instellen, kunt u gebruikmaken van het onderdeel Mesh Interactable Body in een scriptgrafiek met een knooppunt naar een beschikbare eigenschap, zoals OnHovered of OnSelected, die is gekoppeld aan een OnStateChanged-knooppunt . In de volgende scriptgrafiek wordt de cilinder bijvoorbeeld ingeschakeld terwijl de knop wordt ingedrukt en wordt deze uitgeschakeld wanneer de knop wordt losgelaten. De knop is volledig interactief door het script en een collider toe te voegen; je hoeft verder niets te doen.

Een schermafbeelding van een scriptgrafiek met een Mesh Interactable-hoofdtekst is geselecteerd.

Instellingen

Algemene instellingen voor Manipulables, Equippables en Throwables

Een schermafbeelding van een onderdeel Mesh Interactable Setup met de eigenschappen die gemeenschappelijk zijn voor alle objecttypen gemarkeerd.

Radius van interactienabijheid De verste afstand die de avatar kan zijn om met dit object te communiceren

Ik-instellingen aanwijzen : IK-instellingen die moeten worden gebruikt bij het aanwijzen van een object

  • Vorm met handpositie: de vorm met de handpositie om de avatarhand in te plaatsen wanneer u de muisaanwijzer over het object beweegt
  • Handhouding grootte: grootte van de handhouding van 0 – 1.
  • Ik-tracering inschakelen: of de arm van de avatar naar het object reikt tijdens het aanwijzen met behulp van IK-targeting.
    • Ik-bol beperken: als dit waar is, wordt arm IK uitgevoerd op een bol. Dit zorgt ervoor dat de avatararm niet rechtuit steekt.

Instellingen markeren

  • Aanwijzen/geselecteerd: of het object wel of niet moet worden gemarkeerd als het is gemarkeerd of geselecteerd.

  • Markeringsmechanisme

    • Menuopdracht 1: Eigenschappen van shader

      • Markeringskleur: de kleur om de kleureigenschappen van het materiaal in te stellen wanneer het object wordt gemarkeerd.
      • Overgangsduur markeren: de hoeveelheid tijd die nodig is om de markering in/uit te schakelen tijdens de overgang.
      • Eigenschappen van markeringshoeveelheid: de eigenschappen van het materiaal om de hoeveelheid markering in te stellen wanneer deze wordt gemarkeerd. Dit is een floatwaarde.
      • Eigenschappen van markeringskleur: de eigenschappen van het materiaal om de kleur van de markering in te stellen wanneer deze is gemarkeerd. Dit is een kleurwaarde.
    • Menu-item 2: Mesh-omtrek: hiermee voegt u een automatische omtrek van de opgegeven kleur/breedte toe aan objecten.

      • Markeringskleur: de kleur van de omtrek.
      • Overgangsduur markeren: de hoeveelheid tijd die nodig is om het overzicht in/uit te schakelen tijdens de overgang.
      • Breedte van markeringscontour: hoe dik (in meters) de omtrek moet zijn. Overschrijft de 'Extrusiewaarde' in het materiaal Hulpmiddelen voor afbeeldingen/Standaard.
      • Aangepast kadermateriaal: het materiaal dat wordt gebruikt om het overzicht weer te geven.
      • Aangepast stencil schrijfmateriaal: het gebruikte materiaal schrijft een waarde naar de stencilbuffer
      • Overzichtsuitsluitingsmodus: optie om renderers uit te filteren die u niet in het overzicht wilt opnemen.
    • Menu-item 3: Binnengloed: Hiermee wordt een markering met een gloed-effect toegepast met behulp van de opgegeven eigenschappen.

      • Markeringskleur: de kleur van de innerlijke gloed.
      • Duur van overgang markeren: de hoeveelheid tijd die nodig is om de innerlijke gloed in/uit te laten vervagen tijdens de overgang
      • Aangepast markeermateriaal: overschrijfoptie die specifiek is voor dit object om het materiaal in te stellen dat wordt gebruikt voor de gloed. Als dit niet is ingesteld, wordt het standaardmateriaal van de instellingenasset gebruikt.
      • Uitsluitingsreeks: Als dit is ingesteld, wordt elk gameobject met een naam met de uitsluitingstekenreeks uitgesloten van de markering.

Instellingen die exclusief zijn voor Manipulables

Een schermafbeelding van het onderdeel Mesh Interactable Setup met de Manipulable-instellingen weergegeven.

  • Modus forceren: De modus die moet worden gebruikt om het object door de ruimte te forceren
    • Standaard: Standaard MRTK-gedrag dat het object verplaatst met behulp van het midden.
    • Puntveer: Alternatief gedrag dat het object verplaatst door kracht toe te passen op een grijppunt (werkt alleen voor rigidbodies)
  • Draaiing (alleen beschikbaar voor de standaardmodus)
    • Ingeschakeld: of het object kan worden gedraaid tijdens het bewerken. Elke as kan afzonderlijk worden ingesteld.
    • Manipulatierotatielogica
      • Standaardinstelling: bij het bewerken van een object draait het rond de camera en blijft deze op dezelfde stand ten opzichte van de camera (werkelijke transformatiewaarden worden gedraaid).
      • Beperkend: bij het manipuleren van een object wordt de transformatie niet gedraaid en blijft het niet op dezelfde stand ten opzichte van de camera.
  • Vertaling (alleen beschikbaar voor standaardmodus) =Ingeschakeld: of het object kan worden vertaald tijdens het bewerken. Elke as kan afzonderlijk worden ingesteld.
  • Point Spring (alleen beschikbaar voor point spring-modus)
    • Veersterkte: De kracht van de veer die het object trekt. Hoe hoger de waarde, hoe sneller het doelpunt wordt bereikt.
    • Dempingsfactor: Hoeveel demping wordt toegepast om oscillatie rond het grijppunt te voorkomen.
  • Doeltransformatie wijzigen: Biedt de gebruiker de mogelijkheid om de standaardtransformatie te overschrijven en de gewenste positie en rotatie van het object ten opzichte van de camera/avatar in te stellen terwijl het object is geselecteerd. Wanneer dit is ingesteld op Ingeschakeld, krijgt u de volgende drie eigenschappen:
    • Doelruimte:
      • Lokale ruimte van camera: Of de positie en draaiing in de lokale ruimte van de camera moeten worden opgegeven.
      • Lokale ruimte van avatar: Of de positie en draaiing in de lokale avatarruimte moeten worden opgegeven.
    • Nieuwe doelpositie: Nieuwe doelpositie (z-component is de richting waar camera/avatar naartoe gericht is)
    • Nieuwe doelrotatie: Nieuwe doelrotatie
  • Avatar IK
    • Vorm met handpositie: de vorm met de handhouding om de hand van de avatar in te plaatsen bij het bewerken van het object
    • Handhouding grootte: grootte van de handhouding van 0 – 1.
    • IK-tracering inschakelen: hiermee wordt aangegeven of de arm van de avatar naar het object reikt tijdens het manipuleren met behulp van IK-targeting.
      • Ik sferical beperken: als dit waar is, wordt arm IK uitgevoerd op een bol. Hierdoor zal de avatararm niet rechtuit steken.

Instellingen die worden gedeeld door Equippables en Throwables

Een schermafbeelding van het onderdeel Mesh Interactable Setup met de instellingen die gebruikelijk zijn voor Equippables en Throwables gemarkeerd.

  • Interactie offset: De positie en rotatieverplaatsing ten opzichte van de hand van de avatar om het object te plaatsen.
  • Doelhouding uitrusten
    • Positie: De afstand tot de borst van de avatar om de hand te plaatsen wanneer een item is uitgerust.
    • Draaiing: de hoeveelheid om de pols te draaien wanneer een item is uitgerust.
  • Vastgehouden handhouding:
    • Vorm handhouding: Dit is een vervolgkeuzelijst met een reeks handhoudingshapes waarin u de hand van de avatar kunt plaatsen wanneer deze is uitgerust. U kunt ook geen kiezen.
    • Handhouding grootte: Grootte van de handhouding van 0 – 1.

Instellingen die exclusief zijn voor Equippables

Een schermafbeelding van het onderdeel Mesh Interactable Setup met de equippable-instellingen weergegeven.

  • Configuratie activeren
    • Type activeren: Wanneer moet het item als actief worden ingesteld. Objecten die kunnen worden gegooid, kunnen niet worden geactiveerd en hebben altijd een geactiveerd type ingesteld op geen.
      • Geen: dit item kan niet worden geactiveerd.
      • Knevel: Dit item schakelt tussen actief/niet actief telkens wanneer op het activeringsbeheer wordt geklikt.
      • Één: Dit item wordt geactiveerd wanneer op het activerings besturingselement wordt geklikt en wordt vervolgens automatisch gedeactiveerd zodra het de laatste doelhouding heeft bereikt.
    • Doelhoudingen activeren: Een lijst met doelhoudingen die worden gebruikt om de hand van de avatar te plaatsen wanneer een item wordt geactiveerd. Elke pose bestaat uit vier eigenschappen: Positie, Draaiing, Interpolatietijd en Animatiecurve. De positie- en draaiverplaatsingen zijn relatief ten opzichte van de borst van de avatar. De avatar interpoleert met behulp van de animatiecurve van de vorige pose naar de huidige gedurende de tijd die in de interpolatietijd is gedefinieerd, sequentieel in de lijst, waarbij de uiteindelijke pose wordt weergegeven totdat deze wordt gedeactiveerd. Wanneer deze is gedeactiveerd, beweegt de avatarhandpositie achteruit door de lijst.

Instellingen die exclusief zijn voor Throwables

Een schermafbeelding van het onderdeel Mesh Interactable Setup met de throwable-instellingen weergegeven.

Doelconfiguratie:

  • Arm extension on Aim – Het bedrag om de arm uit te breiden in de doelmodus.
  • Richt handhouding:
    • Vorm handhouding: De vorm van de handhouding om de hand van de avatar in te zetten bij het richten.
    • Handhouding grootte: Grootte van de handhouding van 0 – 1.
  • Draaiing van de hand van het doel: De draaiing van de hand tijdens het richten
  • Gooi handhouding:
    • Vorm handhouding: De vorm van de handhouding om de avatar in te zetten wanneer de worp wordt losgelaten
    • Handhouding grootte: Grootte van de handhouding van 0 – 1.
  • VR Minimale worpsnelheid: De minimale snelheid die moet worden toegepast op een object wanneer deze wordt gegenereerd in de Quest.
  • Maximale snelheid voor het gooien van VR: De maximale snelheid die moet worden toegepast op een object wanneer deze in quest wordt gegenereerd. Dit is de snelheidswaarde die op de pc wordt gebruikt. In Quest wordt de snelheid geschaald op basis van de fysieke armbeweging van de gebruiker.

In de Quest wordt de snelheid die wordt toegepast wanneer een object wordt gegenereerd, geschaald tussen de minimum- en maximumwaarden met behulp van de werkelijke snelheid van de armbeweging van de gebruiker.

  • 2D-instellingen
    • 2D Throw Velocity: de snelheid die moet worden toegepast op een object wanneer het op de pc wordt gegooid.
    • Richting verschuiven: een richtingsverschuiving die moet worden toegepast op een object wanneer het wordt gegenereerd op de pc.
  • Doelhoudingen gooien: Een lijst met doelhoudingen die worden gebruikt om de hand van de avatar te plaatsen wanneer een item wordt gegooid. De positie- en draaiverschuivingen zijn relatief ten opzichte van de positie van de hand van de avatar toen de worp werd gestart. De avatar interpoleert met behulp van de animatiecurve van de vorige pose naar de huidige voor de tijd die in de interpolatietijd is gedefinieerd. Het object wordt losgelaten en de throw hand pose wordt gebruikt bij het op een na laatste doel.

Visuele scripting

Voor alle interactiebare lichamen:

  • Eigenschappen
    • IsHovered (alleen-lezen): of uw lokale avatar het object aanwijst of niet.
    • IsSelected (alleen-lezen): of een avatar het object selecteert. Wanneer u dit uitvoert in MeshBrowser, wordt dit in een netwerk uitgevoerd.
    • IsSelectedLocally : geeft aan of de lokale avatar het object selecteert.
    • IsMine (alleen-lezen): waar voor de laatste avatar om het object te selecteren of uit te rusten.

Voor Equippables:

  • Eigenschappen
    • EquippedAt (alleen-lezen): waar dit object is uitgerust: Geen, DefaultHand, RightHand, LeftHand. Wanneer u dit uitvoert in MeshBrowser, wordt dit in een netwerk uitgevoerd.
    • EquipTime (alleen-lezen): hoe laat dit object is uitgerust. Wanneer u dit uitvoert in MeshBrowser, wordt dit in een netwerk uitgevoerd.
    • IsActivated (alleen-lezen): als dit object de geactiveerde status heeft. Alleen geldig voor objecten die niet kunnen worden gegooid. Wanneer u dit uitvoert in MeshBrowser, wordt dit in een netwerk uitgevoerd.
    • IsAiming (alleen-lezen): als de lokale avatar zich in de doelstatus bevindt terwijl dit object wordt vastgehouden. Alleen geldig voor throwables.
    • IsThrowing (alleen-lezen): als de lokale avatar actief het object gooit. Alleen geldig voor throwables.
    • IsEquipped (alleen-lezen) (alleen-lezen): als dit object momenteel is uitgerust met een avatar. Wanneer u dit uitvoert in MeshBrowser, wordt dit in een netwerk uitgevoerd.
    • IsThrowable : als dit object kan worden gegooid.
    • ThrowVelocity : de snelheid om het object te gooien wanneer het wordt losgelaten.

Voor manipulables om de doelpositie te wijzigen:

  • Doelpositie (alleen-lezen): doelpositie van de hoofdtekst bij gebruik van de standaard forcemodus in interactiebare eigenschappen van mesh
  • Doelrotatie (alleen-lezen): doelrotatie van de hoofdtekst bij gebruik van de standaard force-modus in interactiebare eigenschappen van mesh
  • Ray Hit Position (alleen-lezen): Positie van de ray-cast-hit van de interactor op het lichaam
  • Ray Hit Rotation (alleen-lezen): de draaiing van de interactor rond de richting van de straal
  • Gewijzigde doelpositie (lezen en schrijven): wordt gebruikt om de nieuwe doelpositie in te stellen door het visualscript. Hierdoor wordt de standaarddoelpositie overschreven. Aanbevolen procedure is om deze eigenschap te overschrijven:
    • Bij status gewijzigd van doelpositie gebruiken. In dit geval wordt met het visualscript alleen een stroom geactiveerd wanneer de interactor en de nieuwe positie zijn gewijzigd.
    • Met behulp van bij late update. Als u de doeltransformatie in elk frame wilt wijzigen, doet u dit in een latere update, zodat de nieuwe doeltransformatie onmiddellijk beschikbaar is in het volgende frame.
  • Gewijzigde doelrotatie (lezen en schrijven): wordt gebruikt om de nieuwe doelrotatie in te stellen door het visualscript. Hierdoor wordt de standaarddoelpositie overschreven.

Instellingen

Wijzigen met visueel script: Schakel dit in om de doeltransformatie voor vormbare lichamen te wijzigen met behulp van een visueel script. Modify-with-visual-script

Volgende stappen