AdvancedVisualizationFactory.h
Go to the documentation of this file.
1
2/* This file is part of ArmarX.
3*
4* ArmarX is free software; you can redistribute it and/or modify
5* it under the terms of the GNU General Public License version 2 as
6* published by the Free Software Foundation.
7*
8* ArmarX is distributed in the hope that it will be useful, but
9* WITHOUT ANY WARRANTY; without even the implied warranty of
10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11* GNU General Public License for more details.
12*
13* You should have received a copy of the GNU General Public License
14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15*
16* @package ArmarXGuiPlugins::RobotTrajectoryDesigner::Visualization
17* @author Timo Birr
18* @date 2018
19* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20* GNU General Public License
21*/
22#ifndef ADVANCEDVISUALIZATIONFACTORY_H
23#define ADVANCEDVISUALIZATIONFACTORY_H
24
25#include <memory>
26
27#include <VirtualRobot/Primitive.h>
28#include <VirtualRobot/Robot.h>
29#include <VirtualRobot/Visualization/VisualizationFactory.h>
30#include <VirtualRobot/Visualization/VisualizationNode.h>
31
33#include "VirtualRobot/BoundingBox.h"
34#include "VirtualRobot/MathTools.h"
35#include "VirtualRobot/Trajectory.h"
36#include "VirtualRobot/Visualization/TriMeshModel.h"
37
38namespace armarx
39{
40 /**
41 * @brief The AdvancedVisualizationFactory class is the abstract decorator of the Decorator-Pattern and decorates the VisualizationFactoy in Simox
42 *
43 * The additional Functionality is that it can also generate the Visualization for a Manipulator
44 */
45 class AdvancedVisualizationFactory : public VirtualRobot::VisualizationFactory
46 {
47
48
49 public:
50 /**
51 * @brief createManipulator
52 * @param kc
53 * @param robot
54 * @return
55 */
58
59 virtual void
60 init(int& argc, char* argv[], const std::string& appName) override
61 {
62 }
63
64 virtual VirtualRobot::VisualizationNodePtr
66 const std::vector<VirtualRobot::Primitive::PrimitivePtr>& primitives,
67 bool boundingBox = false,
68 Color color = Color::Gray()) override
69 {
70 return component.getVisualizationFromPrimitives(primitives, boundingBox, color);
71 }
72
73 virtual VirtualRobot::VisualizationNodePtr
74 getVisualizationFromFile(const std::string& filename,
75 bool boundingBox = false,
76 float scaleX = 1.0f,
77 float scaleY = 1.0f,
78 float scaleZ = 1.0f) override
79 {
80 return component.getVisualizationFromFile(
81 filename, boundingBox, scaleX, scaleY, scaleZ);
82 }
83
84 virtual VirtualRobot::VisualizationNodePtr
85 getVisualizationFromFile(const std::ifstream& ifs,
86 bool boundingBox = false,
87 float scaleX = 1.0f,
88 float scaleY = 1.0f,
89 float scaleZ = 1.0f) override
90 {
91 return component.getVisualizationFromFile(ifs, boundingBox, scaleX, scaleY, scaleZ);
92 }
93
94 virtual VirtualRobot::VisualizationNodePtr
95 createBox(float width,
96 float height,
97 float depth,
98 float colorR = 0.5f,
99 float colorG = 0.5f,
100 float colorB = 0.5f) override
101 {
102 return component.createBox(width, height, depth, colorR, colorG, colorB);
103 }
104
105 virtual VirtualRobot::VisualizationNodePtr
106 createLine(const Eigen::Vector3f& from,
107 const Eigen::Vector3f& to,
108 float width = 1.0f,
109 float colorR = 0.5f,
110 float colorG = 0.5f,
111 float colorB = 0.5f) override
112 {
113 return component.createLine(from, to, width, colorR, colorG, colorB);
114 }
115
116 virtual VirtualRobot::VisualizationNodePtr
117 createLine(const Eigen::Matrix4f& from,
118 const Eigen::Matrix4f& to,
119 float width = 1.0f,
120 float colorR = 0.5f,
121 float colorG = 0.5f,
122 float colorB = 0.5f) override
123 {
124 return component.createLine(from, to, width, colorR, colorG, colorB);
125 }
126
127 virtual VirtualRobot::VisualizationNodePtr
128 createSphere(float radius,
129 float colorR = 0.5f,
130 float colorG = 0.5f,
131 float colorB = 0.5f) override
132 {
133 return component.createSphere(radius, colorR, colorG, colorB);
134 }
135
136 virtual VirtualRobot::VisualizationNodePtr
137 createCircle(float radius,
138 float circleCompletion,
139 float width,
140 float colorR = 1.0f,
141 float colorG = 0.5f,
142 float colorB = 0.5f,
143 size_t numberOfCircleParts = 30) override
144 {
145 return component.createCircle(
146 radius, circleCompletion, width, colorR, colorG, colorB, numberOfCircleParts);
147 }
148
149 virtual VirtualRobot::VisualizationNodePtr
150 createTorus(float radius,
151 float tubeRadius,
152 float completion = 1.0f,
153 float colorR = 0.5f,
154 float colorG = 0.5f,
155 float colorB = 0.5f,
156 float transparency = 0.0f,
157 int sides = 8,
158 int rings = 30) override
159 {
160 return component.createTorus(
161 radius, tubeRadius, completion, colorR, colorG, colorB, transparency, sides, rings);
162 }
163
164 virtual VirtualRobot::VisualizationNodePtr
165 createCircleArrow(float radius,
166 float tubeRadius,
167 float completion = 1,
168 float colorR = 0.5f,
169 float colorG = 0.5f,
170 float colorB = 0.5f,
171 float transparency = 0.0f,
172 int sides = 8,
173 int rings = 30) override
174 {
175 return component.createCircleArrow(
176 radius, tubeRadius, completion, colorR, colorG, colorB, transparency, sides, rings);
177 }
178
179 virtual VirtualRobot::VisualizationNodePtr
180 createCylinder(float radius,
181 float height,
182 float colorR = 0.5f,
183 float colorG = 0.5f,
184 float colorB = 0.5f) override
185 {
186 return component.createCylinder(radius, height, colorR, colorG, colorB);
187 }
188
189 virtual VirtualRobot::VisualizationNodePtr
190 createCoordSystem(float scaling = 1.0f,
191 std::string* text = NULL,
192 float axisLength = 100.0f,
193 float axisSize = 3.0f,
194 int nrOfBlocks = 10) override
195 {
196 return component.createCoordSystem(scaling, text, axisLength, axisSize, nrOfBlocks);
197 }
198
199 virtual VirtualRobot::VisualizationNodePtr
200 createBoundingBox(const VirtualRobot::BoundingBox& bbox, bool wireFrame = false) override
201 {
202 return component.createBoundingBox(bbox, wireFrame);
203 }
204
205 virtual VirtualRobot::VisualizationNodePtr
206 createVertexVisualization(const Eigen::Vector3f& position,
207 float radius,
208 float transparency,
209 float colorR = 0.5f,
210 float colorG = 0.5f,
211 float colorB = 0.5f) override
212 {
213 return component.createVertexVisualization(
214 position, radius, transparency, colorR, colorG, colorB);
215 }
216
217 virtual VirtualRobot::VisualizationNodePtr
218 createTriMeshModelVisualization(VirtualRobot::TriMeshModelPtr model,
219 Eigen::Matrix4f& pose,
220 float scaleX = 1.0f,
221 float scaleY = 1.0f,
222 float scaleZ = 1.0f) override
223 {
224 return component.createTriMeshModelVisualization(model, pose, scaleX, scaleY, scaleZ);
225 }
226
227 virtual VirtualRobot::VisualizationNodePtr
228 createTriMeshModelVisualization(VirtualRobot::TriMeshModelPtr model,
229 bool showNormals,
230 Eigen::Matrix4f& pose,
231 bool showLines = true) override
232 {
233 return component.createTriMeshModelVisualization(model, showNormals, pose, showLines);
234 }
235
236 virtual VirtualRobot::VisualizationNodePtr
237 createPlane(const Eigen::Vector3f& position,
238 const Eigen::Vector3f& normal,
239 float extend,
240 float transparency,
241 float colorR = 0.5f,
242 float colorG = 0.5f,
243 float colorB = 0.5f) override
244 {
245 return component.createPlane(
246 position, normal, extend, transparency, colorR, colorG, colorB);
247 }
248
249 virtual VirtualRobot::VisualizationNodePtr
250 createPlane(const VirtualRobot::MathTools::Plane& plane,
251 float extend,
252 float transparency,
253 float colorR = 0.5f,
254 float colorG = 0.5f,
255 float colorB = 0.5f) override
256 {
257 return component.createPlane(plane, extend, transparency, colorR, colorG, colorB);
258 }
259
260 virtual VirtualRobot::VisualizationNodePtr
261 createArrow(const Eigen::Vector3f& n,
262 float length = 50.0f,
263 float width = 2.0f,
264 const Color& color = Color::Gray()) override
265 {
266 return component.createArrow(n, length, width, color);
267 }
268
269 virtual VirtualRobot::VisualizationNodePtr
270 createTrajectory(VirtualRobot::TrajectoryPtr t,
271 Color colorNode = Color::Blue(),
272 Color colorLine = Color::Gray(),
273 float nodeSize = 15.0f,
274 float lineSize = 4.0f) override
275 {
276 return component.createTrajectory(t, colorNode, colorLine, nodeSize, lineSize);
277 }
278
279 virtual VirtualRobot::VisualizationNodePtr
280 createText(const std::string& text,
281 bool billboard = false,
282 float scaling = 1.0f,
283 Color c = Color::Black(),
284 float offsetX = 20.0f,
285 float offsetY = 20.0f,
286 float offsetZ = 0.0f) override
287 {
288 return component.createText(text, billboard, scaling, c, offsetX, offsetY, offsetZ);
289 }
290
291 virtual VirtualRobot::VisualizationNodePtr
293 float y,
294 float z,
295 bool showAxes = true,
296 float axesHeight = 4.0f,
297 float axesWidth = 8.0f) override
298 {
299 return component.createEllipse(x, y, z, showAxes, axesHeight, axesWidth);
300 }
301
302 virtual void
303 applyDisplacement(VirtualRobot::VisualizationNodePtr o, Eigen::Matrix4f& m) override
304 {
305 }
306
307 virtual VirtualRobot::VisualizationNodePtr
309 {
310 return component.createVisualization();
311 }
312
313 virtual VirtualRobot::VisualizationNodePtr
315 const std::vector<VirtualRobot::VisualizationNodePtr>& visualizations) const override
316 {
317 return component.createUnitedVisualization(visualizations);
318 }
319
320 /**
321 * @brief createCurve creates the visualization of a curve that goes through the Waypoints in transition
322 * @param transition the curve/transition to visualize
323 * @param highligt true when the Transition should be highlighted(red) , false if not (blue)
324 * @return the visualization node in the visualization method of this factory
325 */
326 virtual VirtualRobot::VisualizationNodePtr
327 createCurve(const std::vector<PoseBasePtr> transition, bool highligt);
328
329
330 protected:
331 VisualizationFactory component;
332 };
333
334 using AdvancedVisualizationFactoryPtr = std::shared_ptr<AdvancedVisualizationFactory>;
335} // namespace armarx
336
337#endif
constexpr T c
The AdvancedVisualizationFactory class is the abstract decorator of the Decorator-Pattern and decorat...
virtual VirtualRobot::VisualizationNodePtr createCoordSystem(float scaling=1.0f, std::string *text=NULL, float axisLength=100.0f, float axisSize=3.0f, int nrOfBlocks=10) override
virtual VirtualRobot::VisualizationNodePtr createCurve(const std::vector< PoseBasePtr > transition, bool highligt)
createCurve creates the visualization of a curve that goes through the Waypoints in transition
virtual VirtualRobot::VisualizationNodePtr createEllipse(float x, float y, float z, bool showAxes=true, float axesHeight=4.0f, float axesWidth=8.0f) override
virtual VirtualRobot::VisualizationNodePtr getVisualizationFromFile(const std::string &filename, bool boundingBox=false, float scaleX=1.0f, float scaleY=1.0f, float scaleZ=1.0f) override
virtual VirtualRobot::VisualizationNodePtr createCircleArrow(float radius, float tubeRadius, float completion=1, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f, float transparency=0.0f, int sides=8, int rings=30) override
AbstractManipulatorVisualizationPtr createManipulator(VirtualRobot::RobotNodeSetPtr kc, VirtualRobot::RobotPtr robot)
createManipulator
virtual VirtualRobot::VisualizationNodePtr createTorus(float radius, float tubeRadius, float completion=1.0f, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f, float transparency=0.0f, int sides=8, int rings=30) override
virtual VirtualRobot::VisualizationNodePtr createTriMeshModelVisualization(VirtualRobot::TriMeshModelPtr model, Eigen::Matrix4f &pose, float scaleX=1.0f, float scaleY=1.0f, float scaleZ=1.0f) override
virtual VirtualRobot::VisualizationNodePtr createLine(const Eigen::Vector3f &from, const Eigen::Vector3f &to, float width=1.0f, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual void applyDisplacement(VirtualRobot::VisualizationNodePtr o, Eigen::Matrix4f &m) override
virtual VirtualRobot::VisualizationNodePtr getVisualizationFromPrimitives(const std::vector< VirtualRobot::Primitive::PrimitivePtr > &primitives, bool boundingBox=false, Color color=Color::Gray()) override
virtual VirtualRobot::VisualizationNodePtr createVertexVisualization(const Eigen::Vector3f &position, float radius, float transparency, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual VirtualRobot::VisualizationNodePtr getVisualizationFromFile(const std::ifstream &ifs, bool boundingBox=false, float scaleX=1.0f, float scaleY=1.0f, float scaleZ=1.0f) override
virtual VirtualRobot::VisualizationNodePtr createVisualization() override
virtual VirtualRobot::VisualizationNodePtr createLine(const Eigen::Matrix4f &from, const Eigen::Matrix4f &to, float width=1.0f, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual VirtualRobot::VisualizationNodePtr createSphere(float radius, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual VirtualRobot::VisualizationNodePtr createTriMeshModelVisualization(VirtualRobot::TriMeshModelPtr model, bool showNormals, Eigen::Matrix4f &pose, bool showLines=true) override
virtual VirtualRobot::VisualizationNodePtr createArrow(const Eigen::Vector3f &n, float length=50.0f, float width=2.0f, const Color &color=Color::Gray()) override
virtual void init(int &argc, char *argv[], const std::string &appName) override
virtual VirtualRobot::VisualizationNodePtr createTrajectory(VirtualRobot::TrajectoryPtr t, Color colorNode=Color::Blue(), Color colorLine=Color::Gray(), float nodeSize=15.0f, float lineSize=4.0f) override
virtual VirtualRobot::VisualizationNodePtr createBoundingBox(const VirtualRobot::BoundingBox &bbox, bool wireFrame=false) override
virtual VirtualRobot::VisualizationNodePtr createBox(float width, float height, float depth, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual VirtualRobot::VisualizationNodePtr createCylinder(float radius, float height, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual VirtualRobot::VisualizationNodePtr createUnitedVisualization(const std::vector< VirtualRobot::VisualizationNodePtr > &visualizations) const override
virtual VirtualRobot::VisualizationNodePtr createPlane(const VirtualRobot::MathTools::Plane &plane, float extend, float transparency, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual VirtualRobot::VisualizationNodePtr createText(const std::string &text, bool billboard=false, float scaling=1.0f, Color c=Color::Black(), float offsetX=20.0f, float offsetY=20.0f, float offsetZ=0.0f) override
virtual VirtualRobot::VisualizationNodePtr createPlane(const Eigen::Vector3f &position, const Eigen::Vector3f &normal, float extend, float transparency, float colorR=0.5f, float colorG=0.5f, float colorB=0.5f) override
virtual VirtualRobot::VisualizationNodePtr createCircle(float radius, float circleCompletion, float width, float colorR=1.0f, float colorG=0.5f, float colorB=0.5f, size_t numberOfCircleParts=30) override
uint32_t Color
RGBA color.
Definition color.h:8
std::shared_ptr< class Robot > RobotPtr
Definition Bus.h:19
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< AdvancedVisualizationFactory > AdvancedVisualizationFactoryPtr
std::shared_ptr< AbstractManipulatorVisualization > AbstractManipulatorVisualizationPtr