docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class ARSessionOrigin

    An ARSessionOrigin is the parent for an AR setup. It contains a Camera and any GameObjects created from detected features, such as planes or point clouds.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    XROrigin
    ARSessionOrigin
    Inherited Members
    XROrigin.Camera
    XROrigin.TrackablesParent
    XROrigin.TrackablesParentTransformChanged
    XROrigin.Origin
    XROrigin.CameraFloorOffsetObject
    XROrigin.RequestedTrackingOriginMode
    XROrigin.CameraYOffset
    XROrigin.CurrentTrackingOriginMode
    XROrigin.OriginInCameraSpacePos
    XROrigin.CameraInOriginSpacePos
    XROrigin.CameraInOriginSpaceHeight
    XROrigin.RotateAroundCameraUsingOriginUp(float)
    XROrigin.RotateAroundCameraPosition(Vector3, float)
    XROrigin.MatchOriginUp(Vector3)
    XROrigin.MatchOriginUpCameraForward(Vector3, Vector3)
    XROrigin.MatchOriginUpOriginForward(Vector3, Vector3)
    XROrigin.MoveCameraToWorldLocation(Vector3)
    XROrigin.Awake()
    XROrigin.OnEnable()
    XROrigin.OnDisable()
    XROrigin.OnValidate()
    XROrigin.Start()
    XROrigin.OnDestroy()
    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.StartCoroutine_Auto(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.destroyCancellationToken
    MonoBehaviour.useGUILayout
    MonoBehaviour.didStart
    MonoBehaviour.didAwake
    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.GetComponentIndex()
    Component.CompareTag(string)
    Component.CompareTag(TagHandle)
    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.InstantiateAsync<T>(T)
    Object.InstantiateAsync<T>(T, Transform)
    Object.InstantiateAsync<T>(T, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int)
    Object.InstantiateAsync<T>(T, int, Transform)
    Object.InstantiateAsync<T>(T, int, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion, CancellationToken)
    Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, CancellationToken)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Scene)
    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.DestroyObject(Object, float)
    Object.DestroyObject(Object)
    Object.FindSceneObjectsOfType(Type)
    Object.FindObjectsOfTypeIncludingAssets(Type)
    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.FindObjectsOfTypeAll(Type)
    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.ARFoundation
    Assembly: Unity.XR.ARFoundation.dll
    Syntax
    [DisallowMultipleComponent]
    [Obsolete("ARSessionOrigin has been deprecated. Use XROrigin instead.")]
    public class ARSessionOrigin : XROrigin
    Remarks

    Session space vs. Unity space

    Because an AR device will be used to drive the Camera's position and rotation, you cannot directly place the Camera at an arbitrary position in the Unity scene. Instead, you should position the ARSessionOrigin. This makes the Camera (and any detected features) relative to that as a result.

    It is important to keep the Camera and detected features in the same space relative to each other (otherwise, detected features like planes won't appear in the correct place relative to the Camera). The space relative to the AR device's starting position is called "session space" or "device space". For example, when the AR session begins, the device might report its position as (0, 0, 0). Detected features, such as planes, will be reported relative to this starting position. The purpose of the ARSessionOrigin is to convert the session space to Unity world space.

    To facilitate this, the ARSessionOrigin creates a new GameObject called "Trackables" as a sibling of its Camera. This should be the parent GameObject for all detected features.

    At runtime, a typical scene graph might look like this:

    • AR Session Origin
      • Camera
      • Trackables
        • Detected plane 1
        • Detected plane 2
        • Point cloud
        • etc...

    You can access the "trackables" GameObject with trackablesParent.

    Note that the localPosition and localRotation of detected trackables remain in real-world meters relative to the AR device's starting position and rotation.

    Scale

    If you want to scale the content rendered by the ARSessionOrigin you should apply the scale to the ARSessionOrigin's transform. This is preferrable to scaling the content directly, which can have undesirable side effects. Physics and NavMeshes, for example, do not perform well when scaled very small.

    Properties

    camera

    (Deprecated) The Camera to associate with the AR device. It must be a child of this ARSessionOrigin.

    Declaration
    [Obsolete("camera has been deprecated. Use Camera instead.")]
    public Camera camera { get; set; }
    Property Value
    Type Description
    Camera

    trackablesParent

    (Deprecated) The parent Transform for all "trackables" (for example, planes and feature points).

    Declaration
    [Obsolete("trackablesParent has been deprecated. Use TrackablesParent instead.")]
    public Transform trackablesParent { get; }
    Property Value
    Type Description
    Transform
    In This Article
    Back to top
    Copyright © 2024 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)