Class XRCameraSubsystem
Provides access to a device's camera.
Inherited Members
Namespace: UnityEngine.XR.ARSubsystems
Syntax
public abstract class XRCameraSubsystem : XRSubsystem<XRCameraSubsystemDescriptor>
Remarks
The XRCameraSubsystem links a Unity Camera to a device camera for video overlay (pass-thru
rendering). It also allows developers to query for environmental light estimation, when available.
Constructors
XRCameraSubsystem()
Construct the XRCameraSubsystem.
Declaration
public XRCameraSubsystem()
Properties
cameraMaterial
Get the material used by XRCameraSubsystem to render the camera texture.
Declaration
public Material cameraMaterial { get; }
Property Value
| Type | Description |
|---|---|
| Material | The material to render the camera texture. |
currentConfiguration
The current camera configuration.
Declaration
public virtual XRCameraConfiguration? currentConfiguration { get; set; }
Property Value
| Type | Description |
|---|---|
| Nullable<XRCameraConfiguration> | The current camera configuration if it exists. Otherise, |
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 |
| 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. |
focusMode
Get or set the focus mode for the camera.
Declaration
public CameraFocusMode focusMode { get; set; }
Property Value
| Type | Description |
|---|---|
| CameraFocusMode | The focus mode for the camera. |
invertCulling
Whether to invert the culling mode during rendering. Some front-facing camera modes may require this.
Declaration
public bool invertCulling { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
lightEstimationMode
Specifies the light estimation mode.
Declaration
public LightEstimationMode lightEstimationMode { get; set; }
Property Value
| Type | Description |
|---|---|
| LightEstimationMode | The light estimation mode. |
permissionGranted
Determines whether camera permission has been granted.
Declaration
public bool permissionGranted { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
|
Methods
CreateProvider()
Method for the implementation to create the camera functionality provider.
Declaration
protected abstract XRCameraSubsystem.Provider CreateProvider()
Returns
| Type | Description |
|---|---|
| XRCameraSubsystem.Provider | The camera functionality provider. |
GetConfigurations(Allocator)
Queries for the supported camera configurations.
Declaration
public NativeArray<XRCameraConfiguration> GetConfigurations(Allocator allocator)
Parameters
| Type | Name | Description |
|---|---|---|
| Allocator | allocator | The allocation strategy to use for the returned data. |
Returns
| Type | Description |
|---|---|
| NativeArray<XRCameraConfiguration> | The supported camera configurations. |
GetTextureDescriptors(Allocator)
Gets the XRTextureDescriptors associated with the
current frame. The caller owns the returned NativeArray
and is responsible for calling Dispose on it.
Declaration
public NativeArray<XRTextureDescriptor> GetTextureDescriptors(Allocator allocator)
Parameters
| Type | Name | Description |
|---|---|---|
| Allocator | allocator | The allocator to use when creating
the returned |
Returns
| Type | Description |
|---|---|
| NativeArray<XRTextureDescriptor> | An array of texture descriptors. |
OnDestroyed()
Destroy the camera subsystem.
Declaration
protected override sealed void OnDestroyed()
Overrides
OnStart()
Start the camera subsystem.
Declaration
protected override sealed void OnStart()
Overrides
OnStop()
Stop the camera subsystem.
Declaration
protected override sealed void OnStop()
Overrides
Register(XRCameraSubsystemCinfo)
Registers a camera subsystem implementation based on the given subsystem parameters.
Declaration
public static bool Register(XRCameraSubsystemCinfo cameraSubsystemParams)
Parameters
| Type | Name | Description |
|---|---|---|
| XRCameraSubsystemCinfo | cameraSubsystemParams | The parameters defining the camera subsystem functionality implemented by the subsystem provider. |
Returns
| Type | Description |
|---|---|
| Boolean |
|
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | Thrown when the values specified in the XRCameraSubsystemCinfo parameter are invalid. Typically, this will occur
|
TryGetIntrinsics(out XRCameraIntrinsics)
Returns the camera intrinsics information.
Declaration
public bool TryGetIntrinsics(out XRCameraIntrinsics cameraIntrinsics)
Parameters
| Type | Name | Description |
|---|---|---|
| XRCameraIntrinsics | cameraIntrinsics | The camera intrinsics information returned from the method. |
Returns
| Type | Description |
|---|---|
| Boolean |
|
TryGetLatestFrame(XRCameraParams, out XRCameraFrame)
Get the latest frame from the provider.
Declaration
public bool TryGetLatestFrame(XRCameraParams cameraParams, out XRCameraFrame frame)
Parameters
| Type | Name | Description |
|---|---|---|
| XRCameraParams | cameraParams | The Unity |
| XRCameraFrame | frame | The camera frame to be populated if the subsystem is running and successfully provides the latest camera frame. |
Returns
| Type | Description |
|---|---|
| Boolean |
|
TryGetLatestImage(out XRCameraImage)
Attempt to get the latest camera image. This provides directly access to the raw pixel data, as well as utilities to convert to RGB and Grayscale formats.
Declaration
public bool TryGetLatestImage(out XRCameraImage cameraImage)
Parameters
| Type | Name | Description |
|---|---|---|
| XRCameraImage | cameraImage | A valid XRCameraImage if this method returns |
Returns
| Type | Description |
|---|---|
| Boolean |
|
Remarks
The returned XRCameraImage must be disposed to avoid resource leaks.
Exceptions
| Type | Condition |
|---|---|
| NotSupportedException | Thrown if the implementation does not support camera image. |