docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class ARTransformer

    Grab transformer which supports translation, rotation and scaling while respecting the AR environment. This transformer constrains the interactable to the ARPlane during translation.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    XRBaseGrabTransformer
    ARTransformer
    Implements
    IXRDropTransformer
    IXRGrabTransformer
    Inherited Members
    XRBaseGrabTransformer.canProcess
    XRBaseGrabTransformer.registrationMode
    XRBaseGrabTransformer.OnDestroy()
    XRBaseGrabTransformer.OnLink(XRGrabInteractable)
    XRBaseGrabTransformer.OnUnlink(XRGrabInteractable)
    MonoBehaviour.IsInvoking()
    MonoBehaviour.CancelInvoke()
    MonoBehaviour.Invoke(string, float)
    MonoBehaviour.InvokeRepeating(string, float, float)
    MonoBehaviour.CancelInvoke(string)
    MonoBehaviour.IsInvoking(string)
    MonoBehaviour.StartCoroutine(string)
    MonoBehaviour.StartCoroutine(string, object)
    MonoBehaviour.StartCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.useGUILayout
    MonoBehaviour.runInEditMode
    Behaviour.enabled
    Behaviour.isActiveAndEnabled
    Component.GetComponent(Type)
    Component.GetComponent<T>()
    Component.TryGetComponent(Type, out Component)
    Component.TryGetComponent<T>(out T)
    Component.GetComponent(string)
    Component.GetComponentInChildren(Type, bool)
    Component.GetComponentInChildren(Type)
    Component.GetComponentInChildren<T>(bool)
    Component.GetComponentInChildren<T>()
    Component.GetComponentsInChildren(Type, bool)
    Component.GetComponentsInChildren(Type)
    Component.GetComponentsInChildren<T>(bool)
    Component.GetComponentsInChildren<T>(bool, List<T>)
    Component.GetComponentsInChildren<T>()
    Component.GetComponentsInChildren<T>(List<T>)
    Component.GetComponentInParent(Type, bool)
    Component.GetComponentInParent(Type)
    Component.GetComponentInParent<T>(bool)
    Component.GetComponentInParent<T>()
    Component.GetComponentsInParent(Type, bool)
    Component.GetComponentsInParent(Type)
    Component.GetComponentsInParent<T>(bool)
    Component.GetComponentsInParent<T>(bool, List<T>)
    Component.GetComponentsInParent<T>()
    Component.GetComponents(Type)
    Component.GetComponents(Type, List<Component>)
    Component.GetComponents<T>(List<T>)
    Component.GetComponents<T>()
    Component.CompareTag(string)
    Component.SendMessageUpwards(string, object, SendMessageOptions)
    Component.SendMessageUpwards(string, object)
    Component.SendMessageUpwards(string)
    Component.SendMessageUpwards(string, SendMessageOptions)
    Component.SendMessage(string, object)
    Component.SendMessage(string)
    Component.SendMessage(string, object, SendMessageOptions)
    Component.SendMessage(string, SendMessageOptions)
    Component.BroadcastMessage(string, object, SendMessageOptions)
    Component.BroadcastMessage(string, object)
    Component.BroadcastMessage(string)
    Component.BroadcastMessage(string, SendMessageOptions)
    Component.transform
    Component.gameObject
    Component.tag
    Object.GetInstanceID()
    Object.GetHashCode()
    Object.Equals(object)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Transform)
    Object.Instantiate(Object, Transform, bool)
    Object.Instantiate<T>(T)
    Object.Instantiate<T>(T, Vector3, Quaternion)
    Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
    Object.Instantiate<T>(T, Transform)
    Object.Instantiate<T>(T, Transform, bool)
    Object.Destroy(Object, float)
    Object.Destroy(Object)
    Object.DestroyImmediate(Object, bool)
    Object.DestroyImmediate(Object)
    Object.FindObjectsOfType(Type)
    Object.FindObjectsOfType(Type, bool)
    Object.FindObjectsByType(Type, FindObjectsSortMode)
    Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode)
    Object.DontDestroyOnLoad(Object)
    Object.FindObjectsOfType<T>()
    Object.FindObjectsByType<T>(FindObjectsSortMode)
    Object.FindObjectsOfType<T>(bool)
    Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
    Object.FindObjectOfType<T>()
    Object.FindObjectOfType<T>(bool)
    Object.FindFirstObjectByType<T>()
    Object.FindAnyObjectByType<T>()
    Object.FindFirstObjectByType<T>(FindObjectsInactive)
    Object.FindAnyObjectByType<T>(FindObjectsInactive)
    Object.FindObjectOfType(Type)
    Object.FindFirstObjectByType(Type)
    Object.FindAnyObjectByType(Type)
    Object.FindObjectOfType(Type, bool)
    Object.FindFirstObjectByType(Type, FindObjectsInactive)
    Object.FindAnyObjectByType(Type, FindObjectsInactive)
    Object.ToString()
    Object.name
    Object.hideFlags
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: UnityEngine.XR.Interaction.Toolkit.Transformers
    Assembly: Unity.XR.Interaction.Toolkit.dll
    Syntax
    [AddComponentMenu("XR/Transformers/AR Transformer", 11)]
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.0/api/UnityEngine.XR.Interaction.Toolkit.Transformers.ARTransformer.html")]
    public class ARTransformer : XRBaseGrabTransformer, IXRDropTransformer, IXRGrabTransformer
    Remarks

    Assumes that AR raycast hits are enabled in the corresponding IARInteractor.

    Properties

    canProcessOnDrop

    Whether this grab transformer opts-in to allowing Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3) to be called by Unity once more after the interactable is deselected by all interactors.

    Declaration
    public bool canProcessOnDrop { get; }
    Property Value
    Type Description
    bool
    Remarks

    When the grab transformer implements this interface and this property and canProcess both returns true, the Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3) method will be called once more after OnDrop(XRGrabInteractable, DropEventArgs).

    See Also
    canProcess
    Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3)

    elasticBreakLimit

    The break limit of the elastic ratio used when scaling the object. Returns to min/max range over time after scaling beyond this limit.

    Declaration
    public float elasticBreakLimit { get; set; }
    Property Value
    Type Description
    float
    See Also
    enableElasticBreakLimit

    elasticity

    Amount of over scale allowed after hitting min/max of range.

    Declaration
    public float elasticity { get; set; }
    Property Value
    Type Description
    float
    See Also
    XRRayInteractor

    enableElasticBreakLimit

    Whether to enable the elastic break limit when scaling the object beyond range.

    Declaration
    public bool enableElasticBreakLimit { get; set; }
    Property Value
    Type Description
    bool
    See Also
    elasticBreakLimit

    enablePlaneClassificationFilter

    Enabling this will filter interactable manipulation down to only planes that match any of the allowed plane classifications.

    Declaration
    public bool enablePlaneClassificationFilter { get; set; }
    Property Value
    Type Description
    bool
    See Also
    planeClassificationsList
    planeClassifications

    maxScale

    The maximum scale of the object.

    Declaration
    public float maxScale { get; set; }
    Property Value
    Type Description
    float
    See Also
    XRRayInteractor

    minScale

    The minimum scale of the object.

    Declaration
    public float minScale { get; set; }
    Property Value
    Type Description
    float
    See Also
    XRRayInteractor

    objectPlaneTranslationMode

    Controls whether the grab interactable will be constrained vertically, horizontally, or free to move in all axes.

    Declaration
    public ARTransformer.PlaneTranslationMode objectPlaneTranslationMode { get; set; }
    Property Value
    Type Description
    ARTransformer.PlaneTranslationMode
    See Also
    ARTransformer.PlaneTranslationMode

    planeClassifications

    The classifications a plane needs to match one of to allow interactable manipulation with. Only used if enablePlaneClassificationFilter is enabled.

    Declaration
    public PlaneClassifications planeClassifications { get; set; }
    Property Value
    Type Description
    PlaneClassifications
    Remarks

    Only available with AR Foundation version 6.0 or newer.

    See Also
    enablePlaneClassificationFilter

    planeClassificationsList

    The classifications a plane needs to match one of to allow interactable manipulation with. Only used if enablePlaneClassificationFilter is enabled.

    Declaration
    public List<PlaneClassification> planeClassificationsList { get; set; }
    Property Value
    Type Description
    List<PlaneClassification>
    See Also
    enablePlaneClassificationFilter

    scaleSensitivity

    Sensitivity to movement being translated into scale.

    Declaration
    public float scaleSensitivity { get; set; }
    Property Value
    Type Description
    float
    See Also
    XRRayInteractor

    useInteractorOrientation

    Controls whether the interactable will use the orientation of the interactor, or not.

    Declaration
    public bool useInteractorOrientation { get; set; }
    Property Value
    Type Description
    bool
    See Also
    XRRayInteractor

    Methods

    OnDrop(XRGrabInteractable, DropEventArgs)

    Called by Unity when the given Interactable is dropped (in other words, when exiting the Select state). This method won't be called until the Interactable is released by every Interactor. Use this to do any code deinitialization based on the interactable being dropped.

    Declaration
    public void OnDrop(XRGrabInteractable grabInteractable, DropEventArgs args)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable being dropped.

    DropEventArgs args

    The event args associated with the select exit event.

    Remarks

    In other words, this will be called when the selection count changes from 1 to 0.
    args is only valid during this method call, do not hold a reference to it.

    See Also
    OnGrab(XRGrabInteractable)
    Drop()

    OnEnable()

    See MonoBehaviour.

    Declaration
    protected void OnEnable()
    See Also
    XRRayInteractor

    OnGrab(XRGrabInteractable)

    Called by Unity when the given Interactable is grabbed (in other words, when entering the Select state). This method won't be called again until the Interactable is released by every Interactor. Use this to do any code initialization based on the first Interactor that selects the Interactable.

    Declaration
    public override void OnGrab(XRGrabInteractable grabInteractable)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable being grabbed.

    Overrides
    XRBaseGrabTransformer.OnGrab(XRGrabInteractable)
    Remarks

    In other words, this will be called when the selection count changes from 0 to 1.

    See Also
    OnGrabCountChanged(XRGrabInteractable, Pose, Vector3)
    Grab()

    OnGrabCountChanged(XRGrabInteractable, Pose, Vector3)

    Called by Unity each time the number of selections changes for the given Interactable while grabbed by at least one Interactor, including when it is first grabbed. Use this to do any code initialization based on each Interactor currently selecting the Interactable, for example computing the initial distance between both Interactors grabbing the object.

    Declaration
    public override void OnGrabCountChanged(XRGrabInteractable grabInteractable, Pose targetPose, Vector3 localScale)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable being grabbed.

    Pose targetPose

    The current target pose for the current frame.

    Vector3 localScale

    The current target scale of the Interactable's transform relative to the GameObject's parent.

    Overrides
    XRBaseGrabTransformer.OnGrabCountChanged(XRGrabInteractable, Pose, Vector3)
    Remarks

    There will always be at least one Interactor selecting the Interactable when this method is called. In other words, this will be called when the selection count changes from 0 to 1 and whenever it subsequently changes while still above 0. This method is called by Unity right before Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3) if the selection count changed.

    Examples

    To get the number of Interactors selecting the Interactable in your implementation method:

      grabInteractable.interactorsSelecting.Count
    
    See Also
    XRRayInteractor

    Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3)

    Called by the linked Interactable to calculate the target pose and scale. Modify the value of targetPose and/or localScale (or neither).

    Declaration
    public override void Process(XRGrabInteractable grabInteractable, XRInteractionUpdateOrder.UpdatePhase updatePhase, ref Pose targetPose, ref Vector3 localScale)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable to calculate the target pose and scale for.

    XRInteractionUpdateOrder.UpdatePhase updatePhase

    The update phase this is called during.

    Pose targetPose

    The target pose for the current frame.

    Vector3 localScale

    The target scale of the Interactable's transform relative to the GameObject's parent.

    Overrides
    XRBaseGrabTransformer.Process(XRGrabInteractable, XRInteractionUpdateOrder.UpdatePhase, ref Pose, ref Vector3)
    Remarks

    When there is more than one linked grab transformer that can process, the updated value of each ref parameter is passed to each in series according to its order in the list. You can utilize this by, for example, having the first grab transformer compute the target pose, and the second compute just the scale.

    Examples

    If your transformer requires the use of two or more selections, you should first check for that condition in your implementation method:

      if (grabInteractable.interactorsSelecting.Count < 2) return;
    
    See Also
    ProcessInteractable(UpdatePhase)
    XRInteractionUpdateOrder.UpdatePhase

    Start()

    This function is called just before any of the Update methods is called the first time. See MonoBehaviour.

    Declaration
    protected override void Start()
    Overrides
    XRBaseGrabTransformer.Start()
    See Also
    XRRayInteractor

    Implements

    IXRDropTransformer
    IXRGrabTransformer

    See Also

    XRRayInteractor
    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)