From 53de54390e1527b9f34e1b92940d044779bbf10e Mon Sep 17 00:00:00 2001 From: Rostislav Vasilikhin Date: Wed, 22 Dec 2021 23:04:27 +0300 Subject: [PATCH 1/2] HashTSDF fixes backported --- modules/rgbd/src/hash_tsdf.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/rgbd/src/hash_tsdf.cpp b/modules/rgbd/src/hash_tsdf.cpp index 4e492064a44..98019d2d54f 100644 --- a/modules/rgbd/src/hash_tsdf.cpp +++ b/modules/rgbd/src/hash_tsdf.cpp @@ -796,11 +796,11 @@ void HashTSDFVolumeCPU::fetchPointsNormals(OutputArray _points, OutputArray _nor if (voxel.tsdf != -128 && voxel.weight != 0) { Point3f point = base_point + volume.voxelCoordToVolume(voxelIdx); - localPoints.push_back(toPtype(point)); + localPoints.push_back(toPtype(this->pose * point)); if (needNormals) { Point3f normal = volume.getNormalVoxel(point); - localNormals.push_back(toPtype(normal)); + localNormals.push_back(toPtype(this->pose.rotation() * normal)); } } } @@ -1685,11 +1685,11 @@ void HashTSDFVolumeGPU::fetchPointsNormals(OutputArray _points, OutputArray _nor { Point3f point = base_point + volume.voxelCoordToVolume(voxelIdx); - localPoints.push_back(toPtype(point)); + localPoints.push_back(toPtype(this->pose * normal)); if (needNormals) { Point3f normal = volume.getNormalVoxel(point); - localNormals.push_back(toPtype(normal)); + localNormals.push_back(toPtype(this->pose.rotation() * normal)); } } } From 46cd3149fab82125e62ad1b0e0a918ef04ee7eb4 Mon Sep 17 00:00:00 2001 From: Rostislav Vasilikhin Date: Thu, 23 Dec 2021 16:42:53 +0300 Subject: [PATCH 2/2] typo fixed --- modules/rgbd/src/hash_tsdf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/rgbd/src/hash_tsdf.cpp b/modules/rgbd/src/hash_tsdf.cpp index 98019d2d54f..9cf05e55691 100644 --- a/modules/rgbd/src/hash_tsdf.cpp +++ b/modules/rgbd/src/hash_tsdf.cpp @@ -1685,7 +1685,7 @@ void HashTSDFVolumeGPU::fetchPointsNormals(OutputArray _points, OutputArray _nor { Point3f point = base_point + volume.voxelCoordToVolume(voxelIdx); - localPoints.push_back(toPtype(this->pose * normal)); + localPoints.push_back(toPtype(this->pose * point)); if (needNormals) { Point3f normal = volume.getNormalVoxel(point);