34 virtual ensenso::std::optional<double>
scaling()
const
39 virtual ensenso::std::optional<int>
sizeWidth()
const
49 virtual ensenso::std::optional<double>
far()
const
54 virtual ensenso::std::optional<double>
near()
const
64 virtual ensenso::std::optional<tf2::Transform>
transform()
const
96 ensenso::std::optional<double>
scaling()
const override
111 ensenso::std::optional<tf2::Transform>
transform()
const override
127 ensenso::std::optional<double>
far()
const override
132 ensenso::std::optional<double>
near()
const override
145 cmdParams[itmUseOpenGL] = params->
useOpenGl();
148 cmdParams[itmPixelSize] = *params->
pixelScale();
152 cmdParams[itmScaling] = *params->
scaling();
160 cmdParams[itmSize][0] = *params->
sizeWidth();
164 cmdParams[itmSize][1] = *params->
sizeHeight();
174 cmdParams[itmFar] = *params->
far();
178 cmdParams[itmNear] = *params->
near();
182 std::unique_ptr<ensenso::pcl::PointCloud>
pointCloudFromNxLib(NxLibItem
const& node, std::string
const& frame,
183 bool isFileCamera =
false,
188 std::vector<float> data;
190 node.getBinaryDataInfo(&width, &height, 0, 0, 0, ×tamp);
191 node.getBinaryData(data, 0);
193 auto cloud = ensenso::std::make_unique<ensenso::pcl::PointCloud>();
197 cloud->header.frame_id = frame;
199 cloud->width = width;
200 cloud->height = height;
201 cloud->is_dense =
false;
202 cloud->points.resize(width * height);
204 for (
int i = 0; i < width * height; i++)
207 cloud->points[i].x = data[3 * i] / 1000.0f;
208 cloud->points[i].y = data[3 * i + 1] / 1000.0f;
209 cloud->points[i].z = data[3 * i + 2] / 1000.0f;
211 if (roi !=
nullptr && !roi->contains(cloud->points[i].x, cloud->points[i].y, cloud->points[i].z))
213 cloud->points[i].x = std::numeric_limits<float>::quiet_NaN();
214 cloud->points[i].y = std::numeric_limits<float>::quiet_NaN();
215 cloud->points[i].z = std::numeric_limits<float>::quiet_NaN();
223 NxLibItem
const& normalNode,
224 std::string
const& frame,
225 bool isFileCamera =
false,
230 std::vector<float> pointData;
231 std::vector<float> normalData;
233 pointMapNode.getBinaryDataInfo(&width, &height, 0, 0, 0, ×tamp);
234 pointMapNode.getBinaryData(pointData, 0);
235 normalNode.getBinaryData(normalData, 0);
237 auto cloud = ensenso::std::make_unique<ensenso::pcl::PointCloudNormals>();
241 cloud->header.frame_id = frame;
243 cloud->width = width;
244 cloud->height = height;
245 cloud->is_dense =
false;
246 cloud->points.resize(width * height);
248 for (
int i = 0; i < width * height; i++)
251 cloud->points[i].x = pointData[3 * i] / 1000.0f;
252 cloud->points[i].y = pointData[3 * i + 1] / 1000.0f;
253 cloud->points[i].z = pointData[3 * i + 2] / 1000.0f;
255 if (roi !=
nullptr && !roi->contains(cloud->points[i].x, cloud->points[i].y, cloud->points[i].z))
257 cloud->points[i].x = std::numeric_limits<float>::quiet_NaN();
258 cloud->points[i].y = std::numeric_limits<float>::quiet_NaN();
259 cloud->points[i].z = std::numeric_limits<float>::quiet_NaN();
263 cloud->points[i].normal_x = normalData[3 * i];
264 cloud->points[i].normal_y = normalData[3 * i + 1];
265 cloud->points[i].normal_z = normalData[3 * i + 2];
272 NxLibItem
const& pointsNode,
273 std::string
const& frame,
274 bool isFileCamera =
false,
279 std::vector<float> data;
280 std::vector<unsigned char> imageData;
282 pointsNode.getBinaryDataInfo(&width, &height, 0, 0, 0, 0);
283 pointsNode.getBinaryData(data, ×tamp);
284 imageNode.getBinaryData(imageData, 0);
286 auto cloud = ensenso::std::make_unique<ensenso::pcl::PointCloudColored>();
290 cloud->header.frame_id = frame;
292 cloud->width = width;
293 cloud->height = height;
294 cloud->is_dense =
false;
295 cloud->points.resize(width * height);
297 for (
int i = 0; i < width * height; i++)
300 cloud->points[i].x = data[3 * i] / 1000.0f;
301 cloud->points[i].y = data[3 * i + 1] / 1000.0f;
302 cloud->points[i].z = data[3 * i + 2] / 1000.0f;
304 cloud->points[i].r = imageData[4 * i];
305 cloud->points[i].g = imageData[4 * i + 1];
306 cloud->points[i].b = imageData[4 * i + 2];
307 cloud->points[i].a = imageData[4 * i + 3];
309 if (roi !=
nullptr && !roi->contains(cloud->points[i].x, cloud->points[i].y, cloud->points[i].z))
311 cloud->points[i].x = std::numeric_limits<float>::quiet_NaN();
312 cloud->points[i].y = std::numeric_limits<float>::quiet_NaN();
313 cloud->points[i].z = std::numeric_limits<float>::quiet_NaN();
321 std::string
const& frame,
322 bool isFileCamera =
false)
328 std::string
const& targetFrame,
329 bool isFileCamera =
false)
332 cmdResult[itmImages][itmRenderPointMap], targetFrame, isFileCamera);