docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class CinemachineDeoccluder

    An add-on module for CinemachineCamera that post-processes the final position of the camera. Based on the supplied settings, the Deoccluder will attempt to preserve the line of sight with the LookAt target of the camera by moving away from objects that will obstruct the view.

    Additionally, the Deoccluder can be used to assess the shot quality and report this as a field in the camera State.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    CinemachineExtension
    CinemachineDeoccluder
    Implements
    IShotQualityEvaluator
    Inherited Members
    CinemachineExtension.Epsilon
    CinemachineExtension.ComponentOwner
    CinemachineExtension.Awake()
    CinemachineExtension.OnEnable()
    CinemachineExtension.ConnectToVcam(bool)
    CinemachineExtension.PrePipelineMutateCameraStateCallback(CinemachineVirtualCameraBase, ref CameraState, float)
    CinemachineExtension.InvokePostPipelineStageCallback(CinemachineVirtualCameraBase, CinemachineCore.Stage, ref CameraState, float)
    CinemachineExtension.ForceCameraPosition(Vector3, Quaternion)
    CinemachineExtension.OnTransitionFromCamera(ICinemachineCamera, Vector3, float)
    CinemachineExtension.GetExtraState<T>(CinemachineVirtualCameraBase)
    CinemachineExtension.GetAllExtraStates<T>(List<T>)
    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.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.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, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, InstantiateParameters)
    Object.InstantiateAsync<T>(T, int, InstantiateParameters)
    Object.InstantiateAsync<T>(T, Vector3, Quaternion, InstantiateParameters)
    Object.InstantiateAsync<T>(T, int, Vector3, Quaternion, InstantiateParameters)
    Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, InstantiateParameters)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Scene)
    Object.Instantiate<T>(T, InstantiateParameters)
    Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)
    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: Unity.Cinemachine
    Assembly: Unity.Cinemachine.dll
    Syntax
    [AddComponentMenu("Cinemachine/Procedural/Extensions/Cinemachine Deoccluder")]
    [ExecuteAlways]
    [DisallowMultipleComponent]
    [RequiredTarget(RequiredTargetAttribute.RequiredTargets.Tracking)]
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.cinemachine@3.1/manual/CinemachineDeoccluder.html")]
    public class CinemachineDeoccluder : CinemachineExtension, IShotQualityEvaluator

    Fields

    AvoidObstacles

    Settings for deoccluding the camera when obstacles are present

    Declaration
    [FoldoutWithEnabledButton("Enabled")]
    public CinemachineDeoccluder.ObstacleAvoidance AvoidObstacles
    Field Value
    Type Description
    CinemachineDeoccluder.ObstacleAvoidance

    CollideAgainst

    Objects on these layers will be detected.

    Declaration
    [Tooltip("Objects on these layers will be detected")]
    public LayerMask CollideAgainst
    Field Value
    Type Description
    LayerMask

    IgnoreTag

    Obstacles with this tag will be ignored. It is a good idea to set this field to the target's tag

    Declaration
    [Tooltip("Obstacles with this tag will be ignored.  It is a good idea to set this field to the target's tag")]
    public string IgnoreTag
    Field Value
    Type Description
    string

    MinimumDistanceFromTarget

    Obstacles closer to the target than this will be ignored

    Declaration
    [Tooltip("Obstacles closer to the target than this will be ignored")]
    public float MinimumDistanceFromTarget
    Field Value
    Type Description
    float

    ShotQualityEvaluation

    If enabled, will evaluate shot quality based on target distance and occlusion

    Declaration
    [FoldoutWithEnabledButton("Enabled")]
    public CinemachineDeoccluder.QualityEvaluation ShotQualityEvaluation
    Field Value
    Type Description
    CinemachineDeoccluder.QualityEvaluation

    TransparentLayers

    Objects on these layers will never obstruct view of the target.

    Declaration
    [Tooltip("Objects on these layers will never obstruct view of the target")]
    public LayerMask TransparentLayers
    Field Value
    Type Description
    LayerMask

    Methods

    CameraWasDisplaced(CinemachineVirtualCameraBase)

    See whether the virtual camera has been moved nby the collider

    Declaration
    public bool CameraWasDisplaced(CinemachineVirtualCameraBase vcam)
    Parameters
    Type Name Description
    CinemachineVirtualCameraBase vcam

    The virtual camera in question. This might be different from the virtual camera that owns the deoccluder, in the event that the camera has children

    Returns
    Type Description
    bool

    True if the virtual camera has been displaced due to collision or target obstruction

    DebugCollisionPaths(List<List<Vector3>>, List<List<Collider>>)

    Debug API for discovering which objects are occluding the camera, and the path taken by the camera to ist deoccluded position. Note that this information is only collected while running in the editor. In the build, the return values will always be empty. This is for performance reasons.

    Declaration
    public void DebugCollisionPaths(List<List<Vector3>> paths, List<List<Collider>> obstacles)
    Parameters
    Type Name Description
    List<List<Vector3>> paths

    A container to hold lists of points representing the camera path.
    There will be one path per CinemachineCamera influenced by this deoccluder. This parameter may be null.

    List<List<Collider>> obstacles

    A container to hold lists of Colliders representing the obstacles encountered.
    There will be one list per CinemachineCamera influenced by this deoccluder. This parameter may be null.

    GetCameraDisplacementDistance(CinemachineVirtualCameraBase)

    See how far the virtual camera wa moved nby the collider

    Declaration
    public float GetCameraDisplacementDistance(CinemachineVirtualCameraBase vcam)
    Parameters
    Type Name Description
    CinemachineVirtualCameraBase vcam

    The virtual camera in question. This might be different from the virtual camera that owns the deoccluder, in the event that the camera has children

    Returns
    Type Description
    float

    True if the virtual camera has been displaced due to collision or target obstruction

    GetMaxDampTime()

    Report maximum damping time needed for this component.

    Declaration
    public override float GetMaxDampTime()
    Returns
    Type Description
    float

    Highest damping setting in this component

    Overrides
    CinemachineExtension.GetMaxDampTime()

    IsTargetObscured(CinemachineVirtualCameraBase)

    See whether an object is blocking the camera's view of the target

    Declaration
    public bool IsTargetObscured(CinemachineVirtualCameraBase vcam)
    Parameters
    Type Name Description
    CinemachineVirtualCameraBase vcam

    The virtual camera in question. This might be different from the virtual camera that owns the deoccluder, in the event that the camera has children

    Returns
    Type Description
    bool

    True if something is blocking the view

    OnDestroy()

    Cleanup

    Declaration
    protected override void OnDestroy()
    Overrides
    CinemachineExtension.OnDestroy()

    OnTargetObjectWarped(CinemachineVirtualCameraBase, Transform, Vector3)

    This is called to notify the extension that a target got warped, so that the extension can update its internal state to make the camera also warp seamlessly. Base class implementation does nothing.

    Declaration
    public override void OnTargetObjectWarped(CinemachineVirtualCameraBase vcam, Transform target, Vector3 positionDelta)
    Parameters
    Type Name Description
    CinemachineVirtualCameraBase vcam

    Virtual camera to warp

    Transform target

    The object that was warped

    Vector3 positionDelta

    The amount the target's position changed

    Overrides
    CinemachineExtension.OnTargetObjectWarped(CinemachineVirtualCameraBase, Transform, Vector3)

    PostPipelineStageCallback(CinemachineVirtualCameraBase, Stage, ref CameraState, float)

    Callback to do the collision resolution and shot evaluation

    Declaration
    protected override void PostPipelineStageCallback(CinemachineVirtualCameraBase vcam, CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
    Parameters
    Type Name Description
    CinemachineVirtualCameraBase vcam

    The virtual camera being processed

    CinemachineCore.Stage stage

    The current pipeline stage

    CameraState state

    The current virtual camera state

    float deltaTime

    The current applicable deltaTime

    Overrides
    CinemachineExtension.PostPipelineStageCallback(CinemachineVirtualCameraBase, CinemachineCore.Stage, ref CameraState, float)

    Implements

    IShotQualityEvaluator
    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)