diff --git a/applications/reconstruct/include/ftl/voxel_hash_params.hpp b/applications/reconstruct/include/ftl/voxel_hash_params.hpp index aa19368ea83de8b885608c8bb265bbeea55f6f08..a08bc7a61d31043757151eb7aeabee7e1a053ccb 100644 --- a/applications/reconstruct/include/ftl/voxel_hash_params.hpp +++ b/applications/reconstruct/include/ftl/voxel_hash_params.hpp @@ -28,6 +28,7 @@ struct __align__(16) HashParams { float3 m_minBounds; float3 m_maxBounds; float m_spatialSmoothing; + float m_confidenceThresh; }; } // namespace voxhash diff --git a/applications/reconstruct/src/integrators.cu b/applications/reconstruct/src/integrators.cu index bc0baee89860f82dce69eb8af4d8e4f3a24c0ce5..203b1980132e82543038bf06fb470529cb5311c7 100644 --- a/applications/reconstruct/src/integrators.cu +++ b/applications/reconstruct/src/integrators.cu @@ -253,7 +253,8 @@ __global__ void integrateMLSKernel(HashData hashData, HashParams hashParams, int // Calculate voxel sign values across a warp int warpNum = i / WARP_SIZE; - uint solid_ballot = __ballot_sync(0xFFFFFFFF, (fabs(sdf) < 0.04f && weights > 20.0f) ? 1 : 0); + //uint laneMask = 1 << (i % WARP_SIZE); + uint solid_ballot = __ballot_sync(0xFFFFFFFF, (fabs(sdf) < hashParams.m_virtualVoxelSize && weights > hashParams.m_confidenceThresh) ? 1 : 0); //uint valid_ballot = __ballot_sync(0xFFFFFFFF, (weights >= 1.0f) ? 1 : 0); // Aggregate each warp result into voxel mask diff --git a/applications/reconstruct/src/voxel_scene.cpp b/applications/reconstruct/src/voxel_scene.cpp index 861e480e2f61ab63b3c180336de4c732b5bb38d6..a1cdba97ee211a099665bcd434d161b00856644d 100644 --- a/applications/reconstruct/src/voxel_scene.cpp +++ b/applications/reconstruct/src/voxel_scene.cpp @@ -284,6 +284,7 @@ HashParams SceneRep::_parametersFromConfig() { params.m_integrationWeightSample = value("SDFIntegrationWeightSample", 10); params.m_integrationWeightMax = value("SDFIntegrationWeightMax", 255); params.m_spatialSmoothing = value("spatialSmoothing", 0.04f); // 4cm + params.m_confidenceThresh = value("confidenceThreshold", 20.0f); params.m_maxBounds = make_float3( value("bbox_x_max", 2.0f), value("bbox_y_max", 2.0f),