interface IDepthBuffer (Niantic.ARDK.AR.Awareness.Depth.IDepthBuffer)
Overview
interface IDepthBuffer: Niantic.ARDK.AR.Awareness.IDataBufferFloat32 { // properties float FarDistance; float NearDistance; Vector4 ZBufferParams; // methods IDepthBuffer FitToViewport(int viewportWidth, int viewportHeight); IDepthBuffer Interpolate( IARCamera arCamera, int viewportWidth, int viewportHeight, float backProjectionDistance = AwarenessParameters.DefaultBackProjectionDistance ); IDepthBuffer RotateToScreenOrientation(); };
Inherited Members
public: // properties UInt32 Height; CameraIntrinsics Intrinsics; bool IsKeyframe; Matrix4x4 ViewMatrix; UInt32 Width; NativeArray<T> Data; // methods IAwarenessBuffer GetCopy(); T Sample(Vector2 uv); T Sample(Vector2 uv, Matrix4x4 transform); bool CreateOrUpdateTextureARGB32( ref Texture2D texture, FilterMode filterMode = FilterMode.Point, Func<float, float> valueConverter = null ); bool CreateOrUpdateTextureRFloat( ref Texture2D texture, FilterMode filterMode = FilterMode.Point );
Detailed Documentation
Properties
float FarDistance
The maximum distance from the camera (in meters) captured by this depth buffer. Depths farther out will be assigned this distance.
float NearDistance
The minimum distance from the camera (in meters) captured by this depth buffer. Depths closer in will be assigned this distance.
Vector4 ZBufferParams
This can be used to linearize depth or convert it to non-linear.
Note
These values are different than ones provided by Unity for your shaders with the name ZBufferParams. The built-in ZBufferParams is calculated from the camera’s clipping planes and the values accessed here are calculated from the depth buffer’s value range.
Methods
IDepthBuffer FitToViewport(int viewportWidth, int viewportHeight)
Fits the depth buffer to the given dimensions.
Note
The returned depth buffer will be rotated to match the screen orientation, if it has not been already.
Note
This method is deprecated and will be removed in a future update. Use DepthBufferProcessor’s CopyToAlignedTexture to get a texture fitted to the screen.
Parameters:
viewportWidth |
Width of the viewport. In most cases this equals the screen resolution’s width. |
viewportHeight |
Height of the viewport. In most cases this equals the screen resolution’s height. |
Returns:
A new buffer sized to the given viewport dimensions, and rotated to the screen rotation.
IDepthBuffer Interpolate( IARCamera arCamera, int viewportWidth, int viewportHeight, float backProjectionDistance = AwarenessParameters.DefaultBackProjectionDistance )
Interpolate the depth buffer using the given camera and viewport information. Since the depth buffer served by an ARFrame was likely generated using a camera image from a previous frame, always interpolate the buffer in order to get the best depth estimation.
Note
This method is deprecated and will be removed in a future update. Use DepthBufferProcessor’s CopyToAlignedTexture to get a texture fitted to the screen.
Parameters:
arCamera |
ARCamera with the pose to interpolate this buffer to. |
viewportWidth |
Width of the viewport. In most cases this equals to the rendering camera’s pixel width. This is used to calculate the new projection matrix. |
viewportHeight |
Height of the viewport. In most cases this equals to the rendering camera’s pixel height. This is used to calculate the new projection matrix. |
backProjectionDistance |
This value sets the normalized distance of the back-projection plane. Lower values result in depths more accurate for closer pixels, but pixels further away will move faster than they should. Use 0.5f if your subject in the scene is always closer than ~2 meters from the device, and use 1.0f if your subject is further away most of the time. |
Returns:
A new IDepthBuffer with data interpolated using the camera and viewport inputs.
IDepthBuffer RotateToScreenOrientation()
Rotates the depth buffer so it is oriented to the screen.
Note
The raw buffer, not yet rotated to screen orientation, will be oriented the same as the device’s raw camera image. In most cases, gravity points to the right.
Note
This method is deprecated and will be removed in a future update. Use DepthBufferProcessor’s CopyToAlignedTexture to get a texture fitted to the screen.
Returns:
A new depth buffer rotated.