interface IRaycastBuffer (Niantic.ARDK.AR.Scanning.IRaycastBuffer)

Overview

Contains per-pixel color, normal, position, and confidence data. These are generated by raycasting a live reconstruction of the scanned scene from the current camera position. More…

interface IRaycastBuffer: IDisposable {
    // methods

    bool CreateOrUpdateColorTexture(
        ref Texture2D texture,
        FilterMode filterMode = FilterMode.Bilinear
    );

    bool CreateOrUpdateNormalTexture(
        ref Texture2D texture,
        FilterMode filterMode = FilterMode.Bilinear
    );

    bool CreateOrUpdatePositionTexture(
        ref Texture2D texture,
        FilterMode filterMode = FilterMode.Bilinear
    );
};

Detailed Documentation

Contains per-pixel color, normal, position, and confidence data. These are generated by raycasting a live reconstruction of the scanned scene from the current camera position.

This interface provides access to three Texture2D objects: one containing color, one containing normals, and one containing the position and confidence.

The textures are rendered in the same orientation as the camera image and will not necessarily match the screen orientation or the aspect ratio of the view in which the visualization is to be displayed.

Please see RaycastScanVisualizer for an example of IRaycastBuffer usage.

Methods

bool CreateOrUpdateColorTexture(
    ref Texture2D texture,
    FilterMode filterMode = FilterMode.Bilinear
)

Populates a texture containing RGBA pixel colors.

Parameters:

texture

Reference to a texture to be populated with the RGBA values. The texture will be created or resized if needed. If this parameter is null, a new texture will be allocated. For best performance, the Texture2D should be cached and reused across calls. The texture format will be set to TextureFormat.RGBA32.

filterMode

the FilterMode to use for the texture

Returns:

true if the texture was successfully populated, false if not

bool CreateOrUpdateNormalTexture(
    ref Texture2D texture,
    FilterMode filterMode = FilterMode.Bilinear
)

Populates a texture containing world-space unit normal vectors at each pixel.

The normals are packed into an RGBA32 texture with the X value in the red channel, Y in the green channel, and Z in the blue channel. The alpha channel is set to 1 if there is a valid normal in the pixel and 0 if not. Since each channel in an RGBA32 texture represents values between 0 and 1, the unit vectors are shifted and scaled. To recover the original unit normal, subtract 0.5 from each component, then multiply by 2.

Parameters:

texture

Reference to a texture to be populated with the normals. The texture will be created or resized if needed. If this parameter is null, a new texture will be allocated. For best performance, the Texture2D should be cached and reused across calls. The texture format will be set to TextureFormat.RGBA32.

filterMode

the FilterMode to use for the texture

Returns:

true if the texture was successfully populated, false if not

bool CreateOrUpdatePositionTexture(
    ref Texture2D texture,
    FilterMode filterMode = FilterMode.Bilinear
)

Populates a texture containing a world-space position (XYZ) and confidence value at each pixel.

The values are packed into an RGBAHalf texture with the X value in the red channel, Y in the green channel, Z in the blue channel, and confidence in the alpha channel. Confidence is a value between 0 and 1 representing how confident we are that this pixel accurately represents the surface of the object being scanned. It will increase over time as additional samples are collected until it reaches 1.

Parameters:

texture

Reference to a texture to be populated with the position and confidence data. The texture will be created or resized if needed. If this parameter is null, a new texture will be allocated. For best performance, the Texture2D should be cached and reused across calls. The texture format will be set to TextureFormat.RGBAHalf.

filterMode

the FilterMode to use for the texture

Returns:

true if the texture was successfully populated, false if not