17 #ifndef IGNITION_RENDERING_BASELIDARVISUAL_HH_ 18 #define IGNITION_RENDERING_BASELIDARVISUAL_HH_ 31 inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
45 public:
virtual void PreRender()
override;
48 public:
virtual void Destroy()
override;
51 public:
virtual void ClearPoints()
override;
54 public:
virtual void SetPoints(
63 public:
virtual void Update()
override;
66 public:
virtual void Init()
override;
69 public:
virtual void SetMinVerticalAngle(
70 double _minVerticalAngle)
override;
73 public:
virtual double MinVerticalAngle()
const override;
76 public:
virtual void SetMaxVerticalAngle(
77 double _maxVerticalAngle)
override;
80 public:
virtual double MaxVerticalAngle()
const override;
83 public:
virtual void SetMinHorizontalAngle(
84 double _minHorizontalAngle)
override;
87 public:
virtual double MinHorizontalAngle()
const override;
90 public:
virtual void SetMaxHorizontalAngle(
91 double _maxHorizontalAngle)
override;
94 public:
virtual double MaxHorizontalAngle()
const override;
97 public:
virtual void SetVerticalRayCount(
98 unsigned int _verticalRayCount)
override;
101 public:
virtual unsigned int VerticalRayCount()
const override;
104 public:
virtual void SetHorizontalRayCount(
105 unsigned int _horizontalRayCount)
override;
108 public:
virtual unsigned int HorizontalRayCount()
const override;
111 public:
virtual void SetMinRange(
double _minRange)
override;
114 public:
virtual double MinRange()
const override;
117 public:
virtual void SetMaxRange(
double _maxRange)
override;
120 public:
virtual double MaxRange()
const override;
123 public:
virtual void SetOffset(
130 public:
virtual unsigned int PointCount()
const override;
142 public:
virtual void CreateMaterials();
145 public:
virtual void SetDisplayNonHitting(
bool _display)
override;
148 public:
virtual bool DisplayNonHitting()
const override;
151 protected:
double minVerticalAngle = 0;
154 protected:
double maxVerticalAngle = 0;
157 protected:
unsigned int verticalCount = 1u;
160 protected:
double verticalAngleStep = 0;
163 protected:
double minHorizontalAngle = 0;
166 protected:
double maxHorizontalAngle = 0;
169 protected:
unsigned int horizontalCount = 1u;
172 protected:
double horizontalAngleStep = 0;
175 protected:
double minRange = 0;
178 protected:
double maxRange = 0;
181 protected:
bool displayNonHitting =
true;
268 this->CreateMaterials();
274 double _minVerticalAngle)
276 this->minVerticalAngle = _minVerticalAngle;
283 return this->minVerticalAngle;
289 double _maxVerticalAngle)
291 this->maxVerticalAngle = _maxVerticalAngle;
298 return this->maxVerticalAngle;
304 unsigned int _verticalRayCount)
306 if (_verticalRayCount == 0)
308 ignwarn <<
"Cannot have zero vertical rays. Setting value to 1." 310 this->verticalCount = 1;
314 this->verticalCount = _verticalRayCount;
322 return this->verticalCount;
328 double _minHorizontalAngle)
330 this->minHorizontalAngle = _minHorizontalAngle;
337 return this->minHorizontalAngle;
343 double _maxHorizontalAngle)
345 this->maxHorizontalAngle = _maxHorizontalAngle;
352 return this->maxHorizontalAngle;
358 unsigned int _horizontalRayCount)
360 if (_horizontalRayCount == 0)
362 ignwarn <<
"Cannot have zero horizontal rays. Setting value to 1." 364 this->horizontalCount = 1u;
368 this->horizontalCount = _horizontalRayCount;
376 return this->horizontalCount;
383 this->minRange = _minRange;
390 return this->minRange;
397 this->maxRange = _maxRange;
404 return this->maxRange;
411 this->offset = _offset;
425 this->lidarVisualType = _type;
432 return this->lidarVisualType;
439 this->displayNonHitting = _display;
446 return this->displayNonHitting;
455 if (!this->
Scene()->MaterialRegistered(
"Lidar/BlueStrips"))
458 mtl->SetAmbient(0.0, 0.0, 1.0);
459 mtl->SetDiffuse(0.0, 0.0, 1.0);
460 mtl->SetEmissive(0.0, 0.0, 1.0);
461 mtl->SetTransparency(0.4);
462 mtl->SetCastShadows(
false);
463 mtl->SetReceiveShadows(
false);
464 mtl->SetLightingEnabled(
false);
465 mtl->SetMetalness(0.0f);
466 mtl->SetReflectivity(0.0);
469 if (!this->
Scene()->MaterialRegistered(
"Lidar/LightBlueStrips"))
472 mtl->SetAmbient(0.0, 0.0, 1.0);
473 mtl->SetDiffuse(0.0, 0.0, 1.0);
474 mtl->SetEmissive(0.0, 0.0, 1.0);
475 mtl->SetTransparency(0.8);
476 mtl->SetCastShadows(
false);
477 mtl->SetReceiveShadows(
false);
478 mtl->SetLightingEnabled(
false);
479 mtl->SetMetalness(0.0f);
480 mtl->SetReflectivity(0.0);
483 if (!this->
Scene()->MaterialRegistered(
"Lidar/TransBlack"))
486 mtl->SetAmbient(0.0, 0.0, 0.0);
487 mtl->SetDiffuse(0.0, 0.0, 0.0);
488 mtl->SetEmissive(0.0, 0.0, 0.0);
489 mtl->SetTransparency(0.4);
490 mtl->SetCastShadows(
false);
491 mtl->SetReceiveShadows(
false);
492 mtl->SetLightingEnabled(
false);
493 mtl->SetMetalness(0.5f);
494 mtl->SetReflectivity(0.2);
497 if (!this->
Scene()->MaterialRegistered(
"Lidar/BlueRay"))
500 mtl->SetAmbient(0.0, 0.0, 1.0);
501 mtl->SetDiffuse(0.0, 0.0, 1.0);
502 mtl->SetEmissive(0.0, 0.0, 1.0);
503 mtl->SetSpecular(0.0, 0.0, 1.0);
504 mtl->SetTransparency(0.0);
505 mtl->SetCastShadows(
false);
506 mtl->SetReceiveShadows(
false);
507 mtl->SetLightingEnabled(
false);
508 mtl->SetMetalness(0.1f);
509 mtl->SetReflectivity(0.2);
virtual void SetMinHorizontalAngle(double _minHorizontalAngle) override
Set minimum horizontal angle.
Definition: BaseLidarVisual.hh:327
virtual void SetPoints(const std::vector< double > &_points) override
Set lidar points to be visualised.
Definition: BaseLidarVisual.hh:250
virtual LidarVisualType Type() const override
Get the type for lidar visual.
Definition: BaseLidarVisual.hh:430
virtual void Destroy() override
Destroy any resources associated with this object. Invoking any other functions after destroying an o...
Definition: BaseLidarVisual.hh:214
virtual double MinHorizontalAngle() const override
Get minimum horizontal angle.
Definition: BaseLidarVisual.hh:335
virtual void Init() override
Definition: BaseLidarVisual.hh:265
virtual void SetMaxRange(double _maxRange) override
Set maximum range of lidar rays.
Definition: BaseLidarVisual.hh:395
virtual void SetDisplayNonHitting(bool _display) override
Set if non-hitting rays will be displayed (this does not work for TRIANGLE_STRIPS visual) ...
Definition: BaseLidarVisual.hh:437
virtual ~BaseLidarVisual()
Definition: BaseLidarVisual.hh:201
virtual void SetMaxVerticalAngle(double _maxVerticalAngle) override
Set maximum vertical angle.
Definition: BaseLidarVisual.hh:288
virtual double MaxHorizontalAngle() const override
Get maximum horizontal angle.
Definition: BaseLidarVisual.hh:350
static const Pose3< T > Zero
virtual void SetMinRange(double _minRange) override
Set minimum range of lidar rays.
Definition: BaseLidarVisual.hh:381
virtual void SetType(const LidarVisualType _type) override
Set type for lidar visual.
Definition: BaseLidarVisual.hh:423
virtual void SetMaxHorizontalAngle(double _maxHorizontalAngle) override
Set maximum horizontal angle.
Definition: BaseLidarVisual.hh:342
virtual void SetMinVerticalAngle(double _minVerticalAngle) override
Set minimum vertical angle.
Definition: BaseLidarVisual.hh:273
virtual void SetVerticalRayCount(unsigned int _verticalRayCount) override
Set number of vertical rays.
Definition: BaseLidarVisual.hh:303
virtual double MaxRange() const override
Get maximum range of lidar rays.
Definition: BaseLidarVisual.hh:402
virtual double MinVerticalAngle() const override
Get minimum vertical angle.
Definition: BaseLidarVisual.hh:281
Manages a single scene-graph. This class updates scene-wide properties and holds the root scene node...
Definition: Scene.hh:49
virtual unsigned int VerticalRayCount() const override
Get number of vertical rays.
Definition: BaseLidarVisual.hh:320
virtual void SetOffset(const ignition::math::Pose3d _offset) override
Set offset of visual.
Definition: BaseLidarVisual.hh:409
virtual void PreRender() override
Prepare this object and any of its children for rendering. This should be called for each object in a...
Definition: BaseLidarVisual.hh:207
BaseLidarVisual()
Definition: BaseLidarVisual.hh:195
virtual bool DisplayNonHitting() const override
Get if non-hitting rays will be displayed.
Definition: BaseLidarVisual.hh:444
virtual void SetHorizontalRayCount(unsigned int _horizontalRayCount) override
Set number of horizontal rays.
Definition: BaseLidarVisual.hh:357
virtual MaterialPtr CreateMaterial(const std::string &_name="")=0
Create new material with the given name. Created material will have default properties.
virtual unsigned int HorizontalRayCount() const override
Get number of horizontal rays.
Definition: BaseLidarVisual.hh:374
LidarVisualType
Enum for LidarVisual types.
Definition: LidarVisual.hh:37
virtual unsigned int PointCount() const override
Get number of points in laser data.
Definition: BaseLidarVisual.hh:228
virtual ignition::math::Pose3d Offset() const override
Get offset of visual.
Definition: BaseLidarVisual.hh:416
virtual void ClearPoints() override
Clear the points of the lidar visual.
Definition: BaseLidarVisual.hh:221
virtual double MaxVerticalAngle() const override
Get minimum vertical angle.
Definition: BaseLidarVisual.hh:296
virtual std::vector< double > Points() const override
Get the points in laser data.
Definition: BaseLidarVisual.hh:235
virtual double MinRange() const override
Get minimum range of lidar rays.
Definition: BaseLidarVisual.hh:388
Triangle strips visual.
Definition: LidarVisual.hh:49
Base implementation of a Lidar Visual.
Definition: BaseLidarVisual.hh:34
virtual void Update() override
Update the Visual.
Definition: BaseLidarVisual.hh:243
virtual void CreateMaterials()
Create predefined materials for lidar visual.
Definition: BaseLidarVisual.hh:451
A LidarVisual geometry class. The visual appearance is based on the type specified.
Definition: LidarVisual.hh:55