RealityScan CLI fails with calculateNormalModel/calculateHighModel in headless Docker container

I’m running RealityScan CLI 2.1.0.119013 in a headless Docker container (Ubuntu 24.04 based) and encountering issues with higher quality model generation.

Problem:

  • calculatePreviewModel works perfectly :white_check_mark:

  • calculateNormalModel creates a model but fails at the next step with “Processing failed: No model is selected” :cross_mark:

  • calculateHighModel fails with “Processing failed: No model is selected” after selectMaximalComponent :cross_mark:

My CLI sequence:

realityscan-cli -headless \
-newScene \
-addFolder "$INPUT_DIR" \
-align \
-selectMaximalComponent \
-setReconstructionRegionAuto \
-calculateNormalModel \    # or calculateHighModel
-selectMarginalTriangles \
-removeSelectedTriangles \
-save "$OUTPUT.rsproj" \
-exportSelectedModel "$OUTPUT.stl"

Environment:

  • Docker container with nvidia/cuda:12.6.1-base-ubuntu24.04

  • RealityScan CLI 2.1.0.119013

  • Running headless with Xvfb virtual display

  • Wine environment for Windows compatibility

Hardware:

  • NVIDIA GeForce RTX 3060 Laptop GPU (6GB VRAM)

  • 16 CPU cores

  • Driver: 550.54.14

The same workflow works fine with calculatePreviewModel. Am I missing a model selection step after calculateNormalModel? I tried adding -selectModel 0 but got “Model ‘0’ not found” error.

Any guidance on the correct command sequence for normal/high quality models in headless mode would be appreciated.

1 Like

Also seeing this with a pipeline that works fine on Windows, it seems calculateNormalModel is not actually doing anything, because I see (you might need -stdConsole -printProgress):

Executing command ‘calculateNormalModel’
Processing completed in 0.052 seconds.

Whereas calculatePreviewModel gives:

Executing command ‘calculatePreviewModel’
Reconstruction in Preview Mode completed in 2.421 seconds.
Processing completed in 2.775 seconds.

1 Like

Hello, this appears to be a GPU/Vulkan issue.

calculatePreviewModel (and alignment) They are CPU-based, so they function even if a GPU is not available. calculateNormalModel Higher-quality reconstructions require a GPU, so if the GPU isn’t detected, the command can exit almost immediately, which matches the very short runtime you’re seeing.

On Linux + Docker setups, please verify the following:

  • Official NVIDIA drivers are installed on the host (not nouveau), and nvidia-smi works on the host.

  • Vulkan is installed and working (vulkaninfo --summary should list the GPU.

  • Docker is started with GPU passthrough enabled (--gpus all), and both nvidia-smi and vulkaninfo work inside the container.

  • The NVIDIA Vulkan ICD files are shared in the container; otherwise, Vulkan cannot create an instance.

  • In headless setups, X11/Xvfb DISPLAY must be configured correctly.

As a quick sanity check, you can also run CudaDeviceQuery.exe inside the container using Wine to confirm the GPU is actually visible.

Once the GPU and Vulkan are correctly exposed inside Docker, calculateNormalModel it should no longer exit instantly

Cheers

MC

1 Like

@MC_Jut thank you for the reply. Where can I find CudaDeviceQuery.exe? I can’t seem to run it.

1 Like

(post deleted by author)

I got it working, it turns out I was missing vulkan-loader inside the container environment

1 Like

@MC_Jut @monumental_works
Thank you guys. Mine also worked!