Skip to content

Usage and Examples

Marek Kulawiak edited this page Aug 16, 2026 · 3 revisions

PCC-HAUS operates in three main steps: preprocessing, inference, and postprocessing. At least one point cloud completion framework must be installed in the system in order to perform the inference step. In addition, a configuration file must be prepared, based on one of the provided presets. Example usage scenarios are provided at the bottom of this page.

Configuration file structure

Each preset file follows a standard JSON structure and contains parameters for both the external point cloud completion framework and the PCC-HAUS framework. It is recommended to choose a preset preconfigured for your preferred model and only modify the root path under fullRootDir.

Parameters related to the point cloud completion framework:

"type": name of the framework and the dataset used for training
"fullRootDir": path to the root directory to the framework
"runDir": subdirectory used for running the inference commands
"inferenceCommand": bash command used to start the inferencing process
"directoriesToClear": paths to subdirectories which will be cleared before inferencing
"partialDir": path to the subdirectory with input partial data
"completeDir": path to the subdirectory with reference complete data
"datasetConfigDir": path to subdirectory with configuration files used for ShapeNet-55 models
"outputsDir": path to the subdirectory with the point cloud completion results

Parameters related to PCC-HAUS processing:

"create_variants": repeat the partitioning process with four extra offsets
"skipMerging": disable the leaf node merging step during preprocessing
"prefix": prefix for files with partitioned data
"copiedOutputsDir": directory inside <temp_results_dir> to which the point cloud completion results will be copied
"optimal_points": the exact number of points required for performing point cloud completion
"max_points": check the paper for "maximum value"
"remove_duplicates": remove redundant points which occupy virtually the same coordinates as their neighbors
"max_outlier_distances": values used for outlier removal; each result will be saved to a separate file
"partitioningType": the partitioning scheme used; default is "QUADTREE", can also be set to "GRID"
"gridDensity": number of divisions on the X and Y axes, used only if the "GRID" partitioning is selected

Step 1: Preprocessing Partial Data

This step prepares the partitioned data.

python pcc-haus.py sf_preproc <input_dir> <temp_results_dir> <preset_file> \
[--reference_dir <dir>]
  • input_dir: Path to the directory with partial point clouds.
  • temp_results_dir: Path to the directory which will contain partitioned data.
  • preset_file: Path to the preset JSON file.
  • --reference_dir (optional): Path to the directory with ground-truth data.

Step 2: Inference

This step executes the chosen point cloud completion model. PCC-HAUS automatically copies all necessary input and output files.

python pcc-haus.py sf_inference <temp_results_dir> <preset_file>
  • temp_results_dir: Path to the directory with partitioned data.
  • preset_file: Path to the preset JSON file.

Note: If processing appears stuck, you can interrupt the process and run the inference command directly to diagnose the issue.

Step 3: Postprocessing Completion Results

This step handles the final merging and outlier removal.

python pcc-haus.py sf_postproc <input_dir> <temp_results_dir> <preset_file> \
[--merge]
  • input_dir: Path to the directory with point cloud completion results.
  • temp_results_dir: Path to the directory with partitioned data.
  • preset_file: Path to the preset JSON file.
  • --merge (optional): Path to the directory with the partial data, used to merge final results with the input point clouds.

Examples

Both scenarios assume that input data is in partial_data/, ground-truth is in reference_data/, and results will be saved to processing_results/.

Scenario 1: SeedFormer Model (ShapeNet-55)

  1. Create partitioned data:
python pcc-haus.py sf_preproc partial_data processing_results _Presets/SeedFormer-SN55.json --reference_dir reference_data
  1. Run inference:
python pcc-haus.py sf_inference processing_results _Presets/SeedFormer-SN55.json
  1. Perform postprocessing:
python pcc-haus.py sf_postproc processing_results/predicted processing_results _Presets/SeedFormer-SN55.json --merge partial_data

Scenario 2: AdaPoinTr Model (PCN)

  1. Create partitioned data:
python pcc-haus.py sf_preproc partial_data processing_results _Presets/AdaPoinTr-PCN.json --reference_dir reference_data
  1. Run inference:
python pcc-haus.py sf_inference processing_results _Presets/AdaPoinTr-PCN.json
  1. Perform postprocessing:
python pcc-haus.py sf_postproc processing_results/predicted processing_results _Presets/AdaPoinTr-PCN.json --merge partial_data