Class ARCameraManager
Manages the life cycle of the XRCameraSubsystem. Add one of these to a Camera
in your scene
if you want camera texture and light estimation information to be available.
Inheritance
Inherited Members
Namespace: UnityEngine.XR.ARFoundation
Syntax
[DefaultExecutionOrder(-2147483647)]
[DisallowMultipleComponent]
[RequireComponent(typeof(Camera))]
public sealed class ARCameraManager : SubsystemLifecycleManager<XRCameraSubsystem, XRCameraSubsystemDescriptor, XRCameraSubsystem.Provider>, ISerializationCallbackReceiver
Properties
autoFocusEnabled
Get the current focus mode in use by the subsystem.
Declaration
public bool autoFocusEnabled { get; }
Property Value
Type | Description |
---|---|
Boolean | true if auto focus is enabled. false if fixed focus is enabled or if there is no loaded XRCameraSubsystem. |
autoFocusRequested
Get or set whether auto focus is requested.
Declaration
public bool autoFocusRequested { get; set; }
Property Value
Type | Description |
---|---|
Boolean |
cameraMaterial
The Material used in background rendering.
Declaration
public Material cameraMaterial { get; }
Property Value
Type | Description |
---|---|
UnityEngine.Material | The Material used in background rendering. |
currentConfiguration
The current camera configuration.
Declaration
public XRCameraConfiguration? currentConfiguration { get; set; }
Property Value
Type | Description |
---|---|
Nullable<XRCameraConfiguration> | The current camera configuration, if it exists. Otherwise, null. |
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown when setting the current configuration if the implementation does not support camera configurations. |
ArgumentNullException | Thrown when setting the current configuration if the given configuration is null. |
ArgumentException | Thrown when setting the current configuration if the given configuration is not a supported camera configuration. |
InvalidOperationException | Thrown when setting the current configuration if the implementation is unable to set the current camera configuration. |
currentFacingDirection
The current camera facing direction. This should usually match requestedFacingDirection but might be different if the platform cannot service the requested camera facing direction, or it might take a few frames for the requested facing direction to become active.
Declaration
public CameraFacingDirection currentFacingDirection { get; }
Property Value
Type | Description |
---|---|
CameraFacingDirection |
currentLightEstimation
Get the current light estimation mode used by the subsystem, or LightEstimation.None
if there is no subsystem.
Declaration
public LightEstimation currentLightEstimation { get; }
Property Value
Type | Description |
---|---|
LightEstimation |
currentRenderingMode
The current XRCameraBackgroundRenderingMode of the XRCameraSubsystem, or None if the subsystem is null.
Declaration
public XRCameraBackgroundRenderingMode currentRenderingMode { get; }
Property Value
Type | Description |
---|---|
XRCameraBackgroundRenderingMode | The current camera background rendering mode. |
focusMode
Get or set the focus mode. This method is obsolete. The getter uses autoFocusEnabled and the setter uses autoFocusRequested.
Declaration
[Obsolete("Use autoFocusEnabled or autoFocusRequested instead. (2019-12-13)")]
public CameraFocusMode focusMode { get; set; }
Property Value
Type | Description |
---|---|
CameraFocusMode |
lightEstimationMode
Get or set the light estimation mode. This method is obsolete. The getter uses currentLightEstimation and the setter uses requestedLightEstimation.
Declaration
[Obsolete("Use currentLightEstimation or requestedLightEstimation instead. (2019-12-13)")]
public LightEstimationMode lightEstimationMode { get; set; }
Property Value
Type | Description |
---|---|
LightEstimationMode |
permissionGranted
Indicates whether camera permission has been granted.
Declaration
public bool permissionGranted { get; }
Property Value
Type | Description |
---|---|
Boolean |
requestedBackgroundRenderingMode
The current requested CameraBackgroundRenderingMode. When set, this value is converted to an XRCameraBackgroundRenderingMode and passed to requestedCameraBackgroundRenderingMode if the camera subsystem is non-null.
Declaration
public CameraBackgroundRenderingMode requestedBackgroundRenderingMode { get; set; }
Property Value
Type | Description |
---|---|
CameraBackgroundRenderingMode |
requestedFacingDirection
Get or set the requested camera facing direction.
Declaration
public CameraFacingDirection requestedFacingDirection { get; set; }
Property Value
Type | Description |
---|---|
CameraFacingDirection |
requestedLightEstimation
Get or set the requested LightEstimation for the camera.
Declaration
public LightEstimation requestedLightEstimation { get; set; }
Property Value
Type | Description |
---|---|
LightEstimation | The light estimation mode for the camera. |
Methods
GetConfigurations(Allocator)
Get the camera configurations currently supported for the implementation.
Declaration
public NativeArray<XRCameraConfiguration> GetConfigurations(Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
Unity.Collections.Allocator | allocator | The allocation strategy to use for the returned data. |
Returns
Type | Description |
---|---|
Unity.Collections.NativeArray<XRCameraConfiguration> | The supported camera configurations. |
OnAfterDeserialize()
Part of the ISerializationCallbackReceiver interface. Invoked after deserialization.
Declaration
public void OnAfterDeserialize()
Implements
OnBeforeSerialize()
Part of the ISerializationCallbackReceiver interface. Invoked before serialization.
Declaration
public void OnBeforeSerialize()
Implements
OnBeforeStart()
Invoked after creating the subsystem and before calling Start on it.
The subsystem is not null
.
Declaration
protected override void OnBeforeStart()
Overrides
OnDisable()
Stops the TSubsystem
.
Declaration
protected override void OnDisable()
Overrides
TryAcquireLatestCpuImage(out XRCpuImage)
Attempts to acquire the latest camera image. This provides direct access to the raw pixel data, as well as to utilities to convert to RGB and Grayscale formats.
Declaration
public bool TryAcquireLatestCpuImage(out XRCpuImage cpuImage)
Parameters
Type | Name | Description |
---|---|---|
XRCpuImage | cpuImage | A valid |
Returns
Type | Description |
---|---|
Boolean | true if the latest camera image was successfully acquired. Otherwise, false. |
Remarks
The XRCpuImage must be disposed to avoid resource leaks.
TryGetIntrinsics(out XRCameraIntrinsics)
Tries to get camera intrinsics. Camera intrinsics refers to properties of a physical camera which might be useful when performing additional computer vision processing on the camera image.
Declaration
public bool TryGetIntrinsics(out XRCameraIntrinsics cameraIntrinsics)
Parameters
Type | Name | Description |
---|---|---|
XRCameraIntrinsics | cameraIntrinsics | The camera intrinsics to be populated if the camera supports intrinsics. |
Returns
Type | Description |
---|---|
Boolean |
Remarks
Note
The intrinsics may change each frame. You should call this each frame that you need intrinsics in order to ensure you are using the intrinsics for the current frame.
TryGetLatestImage(out XRCpuImage)
Attempts to acquire the latest camera image. This provides direct access to the raw pixel data, as well as to utilities to convert to RGB and Grayscale formats. This method is deprecated. Use TryAcquireLatestCpuImage(out XRCpuImage) instead.
Declaration
[Obsolete("Use TryAcquireLatestCpuImage instead. (2020-05-19")]
public bool TryGetLatestImage(out XRCpuImage cpuImage)
Parameters
Type | Name | Description |
---|---|---|
XRCpuImage | cpuImage | A valid XRCpuImage if this method returns true. |
Returns
Type | Description |
---|---|
Boolean | true if the latest camera image was successfully acquired. Otherwise, false. |
Remarks
The XRCpuImage
must be disposed to avoid resource leaks.
Events
frameReceived
An event which fires each time a new camera frame is received.
Declaration
public event Action<ARCameraFrameEventArgs> frameReceived
Event Type
Type | Description |
---|---|
Action<ARCameraFrameEventArgs> |