75 cloud.width =
polydata->GetNumberOfPoints ();
77 cloud.is_dense =
false;
78 cloud.resize (cloud.width * cloud.height);
81 std::vector<pcl::PCLPointField> fields;
86 for (std::size_t d = 0; d < fields.size (); ++d)
88 if (fields[d].name ==
"x")
89 x_idx = fields[d].offset;
90 else if (fields[d].name ==
"y")
91 y_idx = fields[d].offset;
92 else if (fields[d].name ==
"z")
93 z_idx = fields[d].offset;
98 for (std::size_t i = 0; i < cloud.
size (); ++i)
110 for (std::size_t d = 0; d < fields.size (); ++d)
112 if (fields[d].name ==
"normal_x")
114 else if (fields[d].name ==
"normal_y")
116 else if (fields[d].name ==
"normal_z")
123 for (std::size_t i = 0; i < cloud.
size (); ++i)
126 normals->GetTupleValue (i, normal);
136 for (std::size_t d = 0; d < fields.size (); ++d)
138 if (fields[d].name ==
"rgb" || fields[d].name ==
"rgba")
147 for (std::size_t i = 0; i < cloud.
size (); ++i)
149 unsigned char color[3];
150 colors->GetTupleValue (i,
color);
166 cloud.is_dense =
true;
167 cloud.resize (cloud.width * cloud.height);
170 std::vector<pcl::PCLPointField> fields;
175 for (std::size_t d = 0; d < fields.size (); ++d)
177 if (fields[d].name ==
"x")
178 x_idx = fields[d].offset;
179 else if (fields[d].name ==
"y")
180 y_idx = fields[d].offset;
181 else if (fields[d].name ==
"z")
182 z_idx = fields[d].offset;
187 for (std::size_t i = 0; i < cloud.width; ++i)
189 for (std::size_t j = 0; j < cloud.height; ++j)
211 for (std::size_t d = 0; d < fields.size (); ++d)
213 if (fields[d].name ==
"normal_x")
215 else if (fields[d].name ==
"normal_y")
217 else if (fields[d].name ==
"normal_z")
225 for (std::size_t i = 0; i < cloud.width; ++i)
227 for (std::size_t j = 0; j < cloud.height; ++j)
234 normals->GetTupleValue (i, normal);
250 for (std::size_t d = 0; d < fields.size (); ++d)
252 if (fields[d].name ==
"rgb" || fields[d].name ==
"rgba")
261 for (std::size_t i = 0; i < cloud.width; ++i)
263 for (std::size_t j = 0; j < cloud.height; ++j)
267 unsigned char color[3];
270 colors->GetTupleValue (i,
color);
289 std::vector<pcl::PCLPointField> fields;
295 points->SetNumberOfPoints (nr_points);
297 float *data = (
static_cast<vtkFloatArray*
> (points->GetData ()))->GetPointer (0);
302 for (
vtkIdType i = 0; i < nr_points; ++i)
303 memcpy (&data[i * 3], &cloud[i].x, 12);
308 for (
vtkIdType i = 0; i < nr_points; ++i)
311 if (!std::isfinite (cloud[i].x) ||
312 !std::isfinite (cloud[i].y) ||
313 !std::isfinite (cloud[i].z))
316 memcpy (&data[j * 3], &cloud[i].x, 12);
320 points->SetNumberOfPoints (nr_points);
329 for (std::size_t d = 0; d < fields.size (); ++d)
331 if (fields[d].name ==
"normal_x")
333 else if (fields[d].name ==
"normal_y")
335 else if (fields[d].name ==
"normal_z")
341 normals->SetNumberOfComponents (3);
342 normals->SetNumberOfTuples (cloud.
size ());
343 normals->SetName (
"Normals");
345 for (std::size_t i = 0; i < cloud.
size (); ++i)
351 normals->SetTupleValue (i, normal);
358 for (std::size_t d = 0; d < fields.size (); ++d)
360 if (fields[d].name ==
"rgb" || fields[d].name ==
"rgba")
369 colors->SetNumberOfComponents (3);
370 colors->SetNumberOfTuples (cloud.
size ());
371 colors->SetName (
"RGB");
373 for (std::size_t i = 0; i < cloud.
size (); ++i)
375 unsigned char color[3];
379 colors->SetTupleValue (i,
color);
397 std::vector<pcl::PCLPointField> fields;
400 int dimensions[3] = {cloud.width, cloud.height, 1};
404 points->SetNumberOfPoints (cloud.width * cloud.height);
406 for (std::size_t i = 0; i < cloud.width; ++i)
408 for (std::size_t j = 0; j < cloud.height; ++j)
412 const PointT &point = cloud (i, j);
416 float p[3] = {point.x, point.y, point.z};
429 for (std::size_t d = 0; d < fields.size (); ++d)
431 if (fields[d].name ==
"normal_x")
433 else if (fields[d].name ==
"normal_y")
435 else if (fields[d].name ==
"normal_z")
442 normals->SetNumberOfComponents (3);
443 normals->SetNumberOfTuples (cloud.width * cloud.height);
444 normals->SetName (
"Normals");
445 for (std::size_t i = 0; i < cloud.width; ++i)
447 for (std::size_t j = 0; j < cloud.height; ++j)
451 const PointT &point = cloud (i, j);
457 normals->SetTupleValue (
pointId, normal);
466 for (std::size_t d = 0; d < fields.size (); ++d)
468 if (fields[d].name ==
"rgb" || fields[d].name ==
"rgba")
478 colors->SetNumberOfComponents (3);
479 colors->SetNumberOfTuples (cloud.width * cloud.height);
480 colors->SetName (
"Colors");
481 for (std::size_t i = 0; i < cloud.width; ++i)
483 for (std::size_t j = 0; j < cloud.height; ++j)
487 const PointT &point = cloud (i, j);
492 unsigned char color[3];