Delen via


Beperkingen — MRTK3

ConstraintManager hiermee kunt u een set beperkingsonderdelen toepassen op een transformatie. Standaard verzamelt het beperkingsbeheer automatisch alle gekoppelde onderdelen van de beperking en past deze toe op het doelobject. Gebruikers kunnen er echter ook voor kiezen om de lijst met toegepaste beperkingen handmatig te configureren en alleen een subset van gekoppelde beperkingen te gebruiken.

Notitie

MRTK3 biedt momenteel een beperkte subset van de beperkingen van MRTK 2.x. We onderzoeken momenteel een herstructurering van het systeem Constraints om de werkstroom voor ontwikkelaars te combineren met Oplosser en Elastics. Kom regelmatig terug voor het laatste nieuws!

Op dit moment ondersteunen de volgende MRTK UX-elementen beperkingen:

Het beperkingsbeheer kan in twee modi worden uitgevoerd:

  • Selectie van automatische beperking
  • Handmatige selectie van beperking

Selectie van beperkingen

Selectie van automatische beperking

Modus voor automatische selectie

In de standaardmodus Automatisch worden alle gekoppelde onderdelen van de beperking weergegeven. U kunt rechtstreeks naar het onderdeel in de inspector springen met behulp van de knoppen Ga naar onderdeel of een nieuwe beperking toevoegen vanuit de vervolgkeuzelijst.

Handmatige selectie van beperking

Handmatige selectiemodus

Als het beperkingsbeheer is ingesteld op de handmatige modus, worden alleen beperkingen die zijn gekoppeld in de lijst met beperkingen verwerkt en toegepast op de transformatie. Wanneer de handmatige modus voor het eerst wordt ingeschakeld, vult de manager de lijst automatisch in met alle momenteel gekoppelde beperkingen.

Notitie

Met de actie Vermelding verwijderen wordt alleen de beperking uit de handmatige selectielijst verwijderd. Het onderdeel blijft aanwezig op het GameObject.

Uitvoeringsvolgorde

De uitvoeringsvolgorde van elke beperking kan worden gedefinieerd in de optie Uitvoeringsvolgorde op de beperking zelf. De volgorde wordt weergegeven in de lijst die wordt weergegeven in de beperkingsmanager. Sommige beperkingen gedragen zich anders wanneer ze in verschillende volgorde worden gecombineerd, dus houd rekening met de prioriteiten van elke beperking en pas de volgorde dienovereenkomstig aan.

Transformatiebeperkingen

U kunt beperkingen gebruiken om manipulatie op de een of andere manier te beperken. Sommige toepassingen kunnen bijvoorbeeld rotatie vereisen en dat het object rechtop blijft staan. In dit geval kan een RotationAxisConstraint worden toegevoegd aan het object en worden gebruikt om de rotatie te beperken tot de y-as. MRTK biedt verschillende beperkingen, die allemaal hieronder worden beschreven.

Het is ook mogelijk om nieuwe beperkingen te definiëren en deze te gebruiken om uniek manipulatiegedrag te creëren dat mogelijk nodig is voor sommige toepassingen. U doet dit door een script te maken dat de abstracte ConstraintType eigenschap en de abstracte ApplyConstraint methode overerft TransformConstraint en te implementeren. De nieuwe beperking moet worden weergegeven in de vervolgkeuzelijst en moet automatisch worden geregistreerd in het beperkingsbeheer wanneer deze wordt toegevoegd aan het object.

Alle beperkingen van MRTK delen de volgende eigenschappen:

Handtype geeft aan of de beperking wordt gebruikt voor eenhandige, tweehandige of beide soorten manipulatie. Omdat deze eigenschap een vlag is, kunnen beide opties worden geselecteerd.

  • Eénhandig: beperking wordt gebruikt tijdens manipulatie met één hand als deze optie is geselecteerd.
  • Tweehandig: beperking wordt gebruikt tijdens tweehandige bewerkingen als deze optie is geselecteerd.

ProximityType geeft aan of de beperking wordt gebruikt voor near, far of beide soorten manipulatie. Omdat deze eigenschap een vlag is, kunnen beide opties worden geselecteerd.

  • Near: Beperking wordt gebruikt tijdens bijna-manipulatie als deze optie is geselecteerd.
  • Far: De beperking wordt gebruikt tijdens het bewerken van verre indien geselecteerd.

FaceUserConstraint

Deze beperking beperkt de rotatie van een object zodanig dat het altijd naar de gebruiker wordt gericht. Met de optie Face Away bepaalt u of de positieve of negatieve Z-as wordt gebruikt.

Demonstratie van FaceUserConstraint

FixedDistanceConstraint

Met deze beperking wordt de afstand tussen het gemanipuleerde object en een andere objecttransformatie bij het starten van de manipulatie hersteld. Dit is handig voor gedrag zoals het bevestigen van de afstand van het gemanipuleerde object tot de hoofdtransformatie. Het transformatieveld Beperking is standaard ingesteld op de cameratransformatie en is de andere transformatie waartoe het gemanipuleerde object een vaste afstand heeft.

Demonstratie van FixedDistanceConstraint

MaintainApparentSizeConstraint

Wanneer deze beperking is gekoppeld aan een object, ongeacht hoe ver het object zich van de gebruiker bevindt, behoudt het dezelfde schijnbare grootte voor de gebruiker (d.w.z. het neemt hetzelfde deel van het weergaveveld van de gebruiker in beslag). Dit kan worden gebruikt om ervoor te zorgen dat een lei of tekstpaneel leesbaar blijft tijdens het bewerken.

Demonstratie van MaintainApparentSizeConstraint

MoveAxisConstraint

Deze beperking kan worden gebruikt om te corrigeren langs welke assen een gemanipuleerd object kan worden verplaatst. Dit kan handig zijn voor het bewerken van objecten over het oppervlak van een vlak of langs een lijn.
Het veld Beperking bij verplaatsing geeft aan op welke assen verplaatsing moet worden voorkomen. Standaard zijn deze assen globaal in plaats van lokaal, maar dit kan hieronder worden gewijzigd. Omdat deze eigenschap een vlag is, kan een willekeurig aantal opties worden geselecteerd.

Demonstratie van MoveAxisConstraint

MinMaxScaleConstraint

Deze beperking beperkt de schaal van een object, handig om te voorkomen dat gebruikers objecten schalen naar onherstelbaar kleine of grote grootten. Het werkt zowel voor schalen op basis van grepen (met BoundsControl) als voor direct schalen met twee handen (met ObjectManipulator). Met de optie Ten opzichte van de beginstatus bepaalt u of de specifieke minimum - en maximumschaalwaarden absolute waarden zijn of dat ze worden vermenigvuldigd op de eerste schaal van het object.

Demonstratie van MinMaxScaleConstraint

RotationAxisConstraint

Deze beperking kan worden gebruikt om te bepalen welke assen een gemanipuleerd object kan worden gedraaid. Dit kan handig zijn om een gemanipuleerd object rechtop te houden, maar bijvoorbeeld nog steeds y-asrotaties toe te staan.
Het veld Beperking bij draaiing geeft aan op welke assen moeten worden voorkomen dat deze draaien. Standaard zijn deze assen globaal in plaats van lokaal, maar dit kan hieronder worden gewijzigd. Omdat deze eigenschap een vlag is, kan een willekeurig aantal opties worden geselecteerd.

Demonstratie van RotationAxisConstraint