# INuiFusionReconstruction::ExportVolumeBlock Method

Exports a part or all of the reconstruction volume as a short array.

## Syntax

```
public:
HRESULT ExportVolumeBlock(
UINT sourceOriginX,
UINT sourceOriginY,
UINT sourceOriginZ,
UINT destinationResolutionX,
UINT destinationResolutionY,
UINT destinationResolutionZ,
UINT voxelStep,
UINT cbVolumeBlock,
SHORT *pVolumeBlock
)
```

#### Parameters

*sourceOriginX*

Type: UINT

The reconstruction volume voxel index in the x-axis from which the extraction should begin. This value must be greater than or equal to zero and less than the reconstruction volume x-axis voxel resolution.*sourceOriginY*

Type: UINT

The reconstruction volume voxel index in the y-axis from which the extraction should begin. This value must be greater than or equal to zero and less than the reconstruction volume y-axis voxel resolution.*sourceOriginZ*

Type: UINT

The reconstruction volume voxel index in the z-axis from which the extraction should begin. This value must be greater than or equal to zero and less than the reconstruction volume z-axis voxel resolution.*destinationResolutionX*

Type: UINT

The x-axis resolution/width of the new voxel volume to return in the array. This value must be greater than zero and less than or equal to the current volume x-axis voxel resolution. The final count of (sourceOriginX+(destinationResolutionX*voxelStep) must not be greater than the current reconstruction volume x-axis voxel resolution.*destinationResolutionY*

Type: UINT

The y-axis resolution/height of the new voxel volume to return in the array. This value must be greater than zero and less than or equal to the current volume y-axis voxel resolution. The final count of (sourceOriginY+(destinationResolutionY*voxelStep) must not be greater than the current reconstruction volume y-axis voxel resolution.*destinationResolutionZ*

Type: UINT

The z-axis resolution/depth of the new voxel volume to return in the array. This value must be greater than zero and less than or equal to the current volume z-axis voxel resolution. The final count of (sourceOriginZ+(destinationResolutionZ*voxelStep) must not be greater than the current reconstruction volume z-axis voxel resolution.*voxelStep*

Type: UINT

The step value in integer voxels for sampling points to use in the volume when exporting. This value must be greater than zero and less than the smallest volume axis voxel resolution. To export the volume at its full resolution, use a step value of one. Use higher step values to skip voxels and return the new volume as if there were a lower effective resolution volume. For example, when exporting with a destination resolution of 320^3, setting voxelStep to two would actually cover a 640^3 voxel area (destinationResolution*voxelStep) in the source reconstruction, but the data returned would skip every other voxel in the original volume.Note

Any value higher than one for this value runs the risk of missing zero crossings, and hence missing surfaces or surface details.

*cbVolumeBlock*

Type: UINT

The size of the pVolumeBlock array.*pVolumeBlock*

Type: SHORT

A pre-allocated short array to be filled with volume data. The number of elements in this user array should be allocated as (destinationResolutionX*destinationResolutionY*destinationResolutionZ). To access the voxel located at x,y,z use pVolume[z][y][x], or index as a 1D array for a particular voxel(x,y,z) as follows: with pitch = x resolution, slice = (y resolution * pitch)`unsigned int index = (z * slice) + (y * pitch) + x;`

Note

A right handed coordinate system is used, with the origin of the volume (that is, voxel 0,0,0) at the top left of the front plane of the cube. Similar to bitmap images with top left origin, +X is to the right, +Y down, and +Z is forward from the origin into the reconstruction volume.

#### Return value

Type: HRESULT

S_OK if successful; otherwise, returns a failure code.

## Requirements

**Header:** nuikinectfusionvolume.h

**Library:** TBD