interface IARCamera (Niantic.ARDK.AR.IARCamera)

Overview

Interface for platform specific implementations of an ARCamera. Contains information about the camera position and imaging characteristics for a captured video frame in an AR session. More…

interface IARCamera: IDisposable {
    // properties

    Resolution CPUImageResolution;
    CameraIntrinsics CPUIntrinsics;
    Resolution ImageResolution;
    CameraIntrinsics Intrinsics;
    Matrix4x4 ProjectionMatrix;
    TrackingState TrackingState;
    TrackingStateReason TrackingStateReason;
    Matrix4x4 Transform;
    float WorldScale;

    // methods

    Matrix4x4 CalculateProjectionMatrix(
        ScreenOrientation orientation,
        int viewportWidth,
        int viewportHeight,
        float nearClipPlane,
        float farClipPlane
    );

    Matrix4x4 GetViewMatrix(ScreenOrientation orientation);

    Vector2 ProjectPoint(
        Vector3 point,
        ScreenOrientation orientation,
        int viewportWidth,
        int viewportHeight
    );
};

Detailed Documentation

Interface for platform specific implementations of an ARCamera. Contains information about the camera position and imaging characteristics for a captured video frame in an AR session.

Properties

Resolution CPUImageResolution

The resolution of the CPU captured image, in pixels.

CameraIntrinsics CPUIntrinsics

The focal length and principal point of the camera used to generate the CPU image.

Resolution ImageResolution

The width and height of the captured image, in pixels.

CameraIntrinsics Intrinsics

The focal length and principal point of this camera.

Matrix4x4 ProjectionMatrix

A transform matrix appropriate for rendering 3D content to match the image captured by the camera.

This property is equivalent to Camera.CalculateProjectionMatrix called with the captured image’s properties and default zNear and zFar of 0.001 and 1000.0, respectively.

TrackingState TrackingState

The general quality of position tracking available when the camera captured a frame.

Use this property to keep your users informed as well as internally for peerState and whether to process the enclosed data or not.

TrackingStateReason TrackingStateReason

A possible diagnosis for limited position tracking quality as of when the camera captured a frame.

Note

This is an iOS-only value.

Matrix4x4 Transform

The position and orientation of the camera in world coordinate space.

This transform’s coordinate space is always constant relative to the device orientation.

float WorldScale

The scaling factor applied to this camera’s Transform.

Methods

Matrix4x4 CalculateProjectionMatrix(
    ScreenOrientation orientation,
    int viewportWidth,
    int viewportHeight,
    float nearClipPlane,
    float farClipPlane
)

Returns a transform matrix appropriate for rendering 3D content to match the image captured by the camera, using the specified parameters.

Note

Returns a pre-calculated value in Remote Debugging.

Parameters:

orientation

The current orientation of the interface.

viewportWidth

Viewport width, in pixels.

viewportHeight

Viewport height, in pixels.

nearClipPlane

Near clip plane, in meters.

farClipPlane

Far clip plane, in meters.

Matrix4x4 GetViewMatrix(ScreenOrientation orientation)

Returns a transform matrix for converting from world space to camera space. This matrix is in a left-handed coordinate system with the camera’s forward direction along the positive Z-axis. This is unlike Unity’s camera worldToCameraMatrix, which uses a OpenGL-style, right-handed coordinate system with the camera’s forward direction along the negative Z-axis. Convert from this coordinate system to the Unity/OpenGL system by negating the Z-axis, for example:

var UnityViewMatrix = ARDKViewMatrix;
UnityViewMatrix.m20 *= -1.0f;
UnityViewMatrix.m21 *= -1.0f;
UnityViewMatrix.m22 *= -1.0f;
UnityViewMatrix.m23 *= -1.0f;

Note

Returns a pre-calculated value in Remote Debugging.

Parameters:

orientation

The current orientation of the interface.

Vector2 ProjectPoint(
    Vector3 point,
    ScreenOrientation orientation,
    int viewportWidth,
    int viewportHeight
)

Returns the projection of a point from the 3D world space detected by the session into the 2D space of a view rendering the scene.

Note

This is an iOS-only method.

Note

Not currently supported in Remote Debugging.

Parameters:

point

A point in 3D world space.

orientation

The current orientation of the interface.

viewportWidth

Viewport width, in pixels.

viewportHeight

Viewport height, in pixels.