Configuration

Settings

Global meshing settings, independent of device configuration.

Enums

enum phoim_RasterizationEngine

Values:

enumerator PHOIM_RASTERIZATION_ENGINE_OPENGL
enumerator PHOIM_RASTERIZATION_ENGINE_CUDA
enumerator PHOIM_RASTERIZATION_ENGINE_VULKAN

Functions

void phoim_GetDefaultSettings(phoim_Settings *settings)

Get default settings (with the same values as in CPP API).

Parameters:

settings – [out] Pointer to settings structure to be filled with default values.

struct phoim_Settings
#include <Settings.h>

Public Members

uint8_t gpu_id

Index of GPU that will be used for computation.

uint8_t max_gpu_memory_usage

Maximum percentage of available GPU memory which can be used by the library in a standard scenario.

Note

If some other program that is also using GPU is running, the available GPU memory is smaller. This value can be exceeded in a few cases: 1.) Multiple devices with different resolutions are used. 2.) A device with a resolution higher than 1120 x 800 is used. 3.) If GetVirtualScan method is used.

float voxel_size

Size of one voxel (smallest unit of the internal volumetric structure). The smaller the value is, the more detailed will be the resulting mesh, but the worse performance and higher memory requirements will be.

float working_volume_edge_length

Edge length of the cubic working volume for 3D scan integration, in meters. The first scan always anchors at the center of this volume. When scanning objects that extend from one edge to the other, increase this value by approximately 2x the object length. Minimal allowed value is 4.0.

Note

CPU RAM usage scales cubically with this value, but is negligible up to 33 m.

uint8_t min_voxel_consensus

Minimum number of scans required to report voxel data for inclusion in the output mesh. A value of 0 will result in no filtering.

bool streaming_enabled

Enables streaming data between CPU and GPU. This feature enables scanning of much larger scenes by transferring data temporarily from GPU to CPU when they are not needed.

phoim_RasterizationEngine rasterization_engine

Rasterization engine selection between opengl (default), cuda and vulkan.

RasterizationEngine::cuda - Use for servers without display. It may have a negative impact on performance.

RasterizationEngine::vulkan - provides best performance but still in beta testing.

Warning

This is an Experimental setting and may be removed in near future.

bool color_intensity_auto_minmax_enabled

Enable calculating the color intensities automatically from the first frame of the input dataset.

float tracking_lost_tolerance

The transformation from tracking is considered invalid if the translation or rotation is too great. This number can lower or increase the threshold of how big can the transformation be before the tracking is lost. The higher this parameter is, the bigger can be the transformation found by tracking, but it also increases the chance that a wrongly aligned scan will be added.

Device Parameters

Per-device configuration passed to phoim_Create or phoim_CreateWithBatches.

Functions

void phoim_GetDefaultDeviceParameters(phoim_DeviceParameters *device_params)

Get default device parameters.

Parameters:

device_params – [out] Pointer to device parameters structure to be filled with default values.

struct phoim_CameraIntrinsics
#include <DeviceParameters.h>

Camera intrinsics.

Public Members

double fx
double fy
double cx
double cy
struct phoim_DistortionCoefficients
#include <DeviceParameters.h>

Camera distortion coefficients.

Public Members

double k1
double k2
double p1
double p2
double k3
struct phoim_DeviceParameters
#include <DeviceParameters.h>

PhoXi device parameters.

Note

Consider initializing this struct with phoim_GetDefaultDeviceParameters() to get safe defaults for fields you do not intend to set explicitly (e.g. depth range, tracking flags).

Public Members

const char *id

Unique identification of the Device.

int32_t width

Resolution of the device, width.

int32_t height

Resolution of the device, height.

bool orthogonal_projection

Enable orthogonal projection by setting this flag to true, set it to false for perspective projection.

phoim_CameraIntrinsics camera_intrinsics

Perspective camera intrinsics.

phoim_DistortionCoefficients distortion_coefficients

Perspective camera distortion coefficients.

float ortho_width

Width of the orthogonal view volume in millimeters.

float ortho_height

Height of the orthogonal view volume in millimeters.

float min_depth

Only points with greater depth than min_depth will be rendered.

float max_depth

Only points with lesser depth than max_depth will be rendered.

float sweet_spot_depth

Points near sweet spot are considered as most confident. Points with greater or smaller depth will have lower weight in integration to the final mesh. The value must lie between min_depth and max_depth. If the value equals zero, a mean value of min_depth and max_depth will be used instead.

float min_color_intensity

Minimal input intensity (for each channel in the case of RGB) will be mapped to 0.0f.

float max_color_intensity

Maximal input intensity (for each channel in the case of RGB) will be mapped to 1.0f.

bool tracking_enabled

Enable automatic tracking.

bool texture_tracking_enabled

Use information from Texture (RGB or intensity) to improve tracking.

bool movement_prediction_enabled

Enable prediction of camera movement based on camera positions and timestamps.

bool force_camera_space_enabled

If true, each added scan will be automatically transformed into camera space before further processing.

utils_Mat4f calibration_matrix

Deprecated parameter. The calibration matrix describes a transformation from this camera space to a mesh space. You can choose whether the mesh space is the “main” camera space, a marker space, or anything else.

struct phoim_DeviceParametersBatch
#include <DeviceParameters.h>

Array of configurations for all devices in a batch. Used with phoim_CreateWithBatches function.

Public Members

phoim_DeviceParameters *device_params

Array of device parameter structures, each defining configuration for a single device in this batch.

size_t device_count

Number of devices.

Camera Parameters

Virtual camera definitions for phoim_GetVirtualScanPerspective, phoim_GetVirtualScanOrthogonal, and the union functions.

struct phoim_CameraParams
#include <CameraParams.h>

Camera parameters for GetVirtualScan function, common for both projection types.

Public Members

utils_Vec3f position

Camera position vector.

utils_Vec3f forward_vector

Camera forward vector.

utils_Vec3f up_vector

Camera up vector.

int32_t width

Resolution of the camera, width.

int32_t height

Resolution of the camera, height.

float min_depth

Only points with greater depth than min_depth will be rendered.

float max_depth

Only points with lesser depth than max_depth will be rendered.

struct phoim_CameraParamsPerspective
#include <CameraParams.h>

Camera parameters for GetVirtualScan function with perspective projection.

Public Members

phoim_CameraParams common_params

Basic parameters.

phoim_CameraIntrinsics camera_intrinsics

Camera intrinsics.

struct phoim_CameraParamsOrthogonal
#include <CameraParams.h>

Camera parameters for GetVirtualScan function with orthogonal projection.

Public Members

phoim_CameraParams common_params

Basic parameters.

float width

Width of the view volume in millimeters.

float height

Height of the view volume in millimeters.