From 770a83807264d0176d62b0f331512e4de160e5ef Mon Sep 17 00:00:00 2001 From: Maximilien Cuony Date: Tue, 8 Sep 2015 11:09:38 +0200 Subject: [PATCH] Fix issues describled in #1324 (Color offset problem and wrong variable used) --- .../impl/point_cloud_color_handlers.hpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp b/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp index 81212ab9db5..1c98e0aeaba 100644 --- a/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp +++ b/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp @@ -143,6 +143,8 @@ pcl::visualization::PointCloudColorHandlerRGBField::getColor (vtkSmartPo if (rgba_index == -1) rgba_index = pcl::getFieldIndex (*cloud_, "rgba", fields); + int rgba_offset = fields[rgba_index].offset; + if (!scalars) scalars = vtkSmartPointer::New (); scalars->SetNumberOfComponents (3); @@ -170,7 +172,7 @@ pcl::visualization::PointCloudColorHandlerRGBField::getColor (vtkSmartPo !pcl_isfinite (cloud_->points[cp].z)) continue; - memcpy (&rgb, (reinterpret_cast (&cloud_->points[cp])) + rgba_index, sizeof (pcl::RGB)); + memcpy (&rgb, (reinterpret_cast (&cloud_->points[cp])) + rgba_offset, sizeof (pcl::RGB)); colors[j ] = rgb.r; colors[j + 1] = rgb.g; colors[j + 2] = rgb.b; @@ -183,10 +185,10 @@ pcl::visualization::PointCloudColorHandlerRGBField::getColor (vtkSmartPo for (vtkIdType cp = 0; cp < nr_points; ++cp) { int idx = static_cast (cp) * 3; - memcpy (&rgb, (reinterpret_cast (&cloud_->points[cp])) + rgba_index, sizeof (pcl::RGB)); - colors[j ] = rgb.r; - colors[j + 1] = rgb.g; - colors[j + 2] = rgb.b; + memcpy (&rgb, (reinterpret_cast (&cloud_->points[cp])) + rgba_offset, sizeof (pcl::RGB)); + colors[idx ] = rgb.r; + colors[idx + 1] = rgb.g; + colors[idx + 2] = rgb.b; } } return (true);