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