35 #include "boost/bind.hpp"
36 #include <vtkSphereSource.h>
37 #include <vtkLineSource.h>
38 #include <vtkArcSource.h>
39 #include <vtkPolyDataMapper.h>
41 #include <vtkCellArray.h>
42 #include <vtkProperty.h>
43 #include <vtkRenderer.h>
44 #include <vtkCommand.h>
45 #include <vtkFollower.h>
46 #include <vtkVectorText.h>
47 #include <vtkCamera.h>
50 #include "vtkArrowSource.h"
51 #include "vtkMatrix4x4.h"
52 #include "vtkCaptionActor2D.h"
53 #include "vtkTextProperty.h"
55 #include "vtkPolyDataNormals.h"
62 mMapper = vtkPolyDataMapperPtr::New();
64 mActor = vtkActorPtr::New();
65 mActor->SetMapper(mMapper);
77 mMapper->SetInputConnection(mSource->GetOutputPort());
79 mMapper->SetInputConnection(NULL);
90 mRenderer->RemoveActor(mActor);
95 mRenderer->AddActor(mActor);
101 mActor->GetProperty()->SetColor(color.begin());
106 mActor->SetPosition(point.begin());
115 mMapper->SetInputData(mData);
120 return Vector3D(mActor->GetPosition());
131 return mSource->GetOutput();
148 source = vtkSphereSourcePtr::New();
149 source->SetRadius(4);
154 source->SetThetaResolution(16);
155 source->SetPhiResolution(12);
156 source->LatLongTessellationOn();
159 normals->SetInputConnection(source->GetOutputPort());
162 mapper = vtkPolyDataMapperPtr::New();
163 mapper->SetInputConnection(normals->GetOutputPort());
165 actor = vtkActorPtr::New();
166 actor->SetMapper(mapper);
180 mRenderer->RemoveActor(actor);
183 mRenderer = renderer;
187 mRenderer->AddActor(actor);
193 source->SetRadius(radius);
203 actor->SetPosition(point.begin());
208 return Vector3D(actor->GetPosition());
218 return source->GetOutput();
227 mRenderer = renderer;
228 source = vtkLineSourcePtr::New();
229 mapper = vtkPolyDataMapperPtr::New() ;
230 actor = vtkActorPtr::New() ;
232 mapper->SetInputConnection( source->GetOutputPort() );
233 actor->SetMapper (mapper );
246 mRenderer->RemoveActor(actor);
249 mRenderer = renderer;
253 mRenderer->AddActor(actor);
264 source->SetPoint1(point1.begin());
265 source->SetPoint2(point2.begin());
270 actor->GetProperty()->SetLineStipplePattern(stipple);
284 mRenderer = renderer;
285 source = vtkArcSourcePtr::New();
286 source->SetResolution(20);
287 mapper = vtkPolyDataMapperPtr::New() ;
288 actor = vtkActorPtr::New() ;
290 mapper->SetInputConnection( source->GetOutputPort() );
291 actor->SetMapper (mapper );
293 mRenderer->AddActor(actor);
299 mRenderer->RemoveActor(actor);
309 source->SetPoint1(point1.begin());
310 source->SetPoint2(point2.begin());
311 source->SetCenter(center.begin());
316 actor->GetProperty()->SetLineStipplePattern(stipple);
330 mRenderer = renderer;
331 source = vtkArrowSourcePtr::New();
332 source->SetTipResolution(24);
333 source->SetShaftResolution(24);
334 mapper = vtkPolyDataMapperPtr::New() ;
335 actor = vtkActorPtr::New() ;
337 mapper->SetInputConnection( source->GetOutputPort() );
338 actor->SetMapper (mapper );
340 mRenderer->AddActor(actor);
346 mRenderer->RemoveActor(actor);
370 source->SetTipLength(0.35);
371 source->SetTipRadius(0.1*(length));
372 source->SetShaftRadius(0.03*(length));
373 actor->SetUserMatrix(M.getVtkMatrix());
382 mRenderer = renderer;
383 mapper = vtkPolyDataMapperPtr::New();
384 actor = vtkActorPtr::New();
386 actor->SetMapper(mapper);
388 mRenderer->AddActor(actor);
390 mPolyData = vtkPolyDataPtr::New();
391 mPoints = vtkPointsPtr::New();
392 mSide = vtkCellArrayPtr::New();
394 vtkIdType cells[5] = { 0,1,2,3,0 };
395 mSide->InsertNextCell(5, cells);
397 mPolyData->SetPoints(mPoints);
398 mapper->SetInputData(mPolyData);
405 mPolyData->SetLines(mSide);
406 actor->GetProperty()->SetLineWidth(width);
410 mPolyData->SetLines(NULL);
418 mPolyData->SetPolys(mSide);
419 actor->GetProperty()->SetOpacity(1.0);
423 mPolyData->SetPolys(NULL);
430 mRenderer->RemoveActor(actor);
440 mPoints = vtkPointsPtr::New();
441 mPoints->InsertPoint(0, M.coord(bb.
corner(0,0,0)).
begin());
442 mPoints->InsertPoint(1, M.coord(bb.
corner(0,1,0)).
begin());
443 mPoints->InsertPoint(2, M.coord(bb.
corner(1,1,0)).
begin());
444 mPoints->InsertPoint(3, M.coord(bb.
corner(1,0,0)).
begin());
445 mPolyData->SetPoints(mPoints);
454 mText = vtkVectorTextPtr::New();
456 mapper->SetInputConnection(mText->GetOutputPort());
457 mFollower = vtkFollowerPtr::New();
458 mFollower->SetMapper(mapper);
460 mFollower->SetScale(mTextScale.begin());
470 mRenderer->RemoveActor(mFollower);
471 mViewportListener->stopListen();
474 mRenderer = renderer;
478 mRenderer->AddActor(mFollower);
479 mFollower->SetCamera(mRenderer->GetActiveCamera());
480 if (mViewportListener)
481 mViewportListener->startListen(mRenderer);
488 mRenderer->RemoveActor(mFollower);
501 if (!mViewportListener)
509 mViewportListener.reset();
527 mFollower->SetPosition(pos.begin());
543 if (!mViewportListener || !mViewportListener->isListening())
549 double size = mViewportListener->getVpnZoom();
551 double scale = mSize/size;
553 Vector3D mTextScale(scale,scale,scale);
555 mFollower->SetScale(mTextScale.begin());
564 mText = vtkCaptionActor2DPtr::New();
568 mText->GetCaptionTextProperty()->BoldOff();
569 mText->GetCaptionTextProperty()->ItalicOff();
570 mText->GetCaptionTextProperty()->ShadowOff();
572 mText->SetHeight(0.03);
581 mRenderer->RemoveActor(mText);
584 mRenderer = renderer;
588 mRenderer->AddActor(mText);
595 mRenderer->RemoveActor(mText);
600 mText->SetHeight(val);
615 mText->SetAttachmentPoint(pos.begin());
void setColor(Vector3D color)
void setValue(Vector3D point1, Vector3D point2, Vector3D center)
CaptionText3D(vtkRendererPtr renderer=vtkRendererPtr())
vtkSmartPointer< class vtkActor > vtkActorPtr
void setRenderer(vtkRendererPtr renderer=vtkRendererPtr())
Vector3D corner(int x, int y, int z) const
void setRenderer(vtkRendererPtr renderer=vtkRendererPtr())
Vector3D getColorAsVector3D(QColor color)
PlainObject normal() const
vtkSmartPointer< class vtkPolyDataMapper > vtkPolyDataMapperPtr
void setValue(Vector3D point)
GraphicalPoint3D(vtkRendererPtr renderer=vtkRendererPtr())
vtkCaptionActor2DPtr getActor()
Transform3D createTransformScale(const Vector3D &scale_)
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
void setPosition(Vector3D pos)
void setColor(QColor color)
void setText(QString text)
GraphicalArc3D(vtkRendererPtr renderer=vtkRendererPtr())
void setRenderer(vtkRendererPtr renderer=vtkRendererPtr())
void setColor(QColor color)
cstring_cast_Placeholder cstring_cast(const T &val)
Vector3D getValue() const
vtkPolyDataAlgorithmPtr getSource()
Rect3D(vtkRendererPtr renderer, QColor color)
vtkFollowerPtr getActor()
GraphicalLine3D(vtkRendererPtr renderer=vtkRendererPtr())
void setData(vtkPolyDataPtr data)
vtkSmartPointer< class vtkPolyData > vtkPolyDataPtr
bool similar(const DoubleBoundingBox3D &a, const DoubleBoundingBox3D &b, double tol)
Listens to changes in viewport and camera matrix.
Vector3D cross(const Vector3D &a, const Vector3D &b)
compute cross product of a and b.
void setStipple(int stipple)
void setRenderer(vtkRendererPtr renderer=vtkRendererPtr())
Transform3D createTransformIJC(const Vector3D &ivec, const Vector3D &jvec, const Vector3D ¢er)
vtkPolyDataPtr getPolyData()
vtkSmartPointer< class vtkRenderer > vtkRendererPtr
vtkSmartPointer< class vtkFollower > vtkFollowerPtr
void scaleText()
internal method
void setPosition(Vector3D pos)
void setLine(bool on, int width)
GraphicalPolyData3D(vtkPolyDataAlgorithmPtr source=vtkPolyDataAlgorithmPtr(), vtkRendererPtr renderer=vtkRendererPtr())
vtkSmartPointer< class vtkPolyDataNormals > vtkPolyDataNormalsPtr
FollowerText3D(vtkRendererPtr renderer=vtkRendererPtr())
void setRenderer(vtkRendererPtr renderer=vtkRendererPtr())
void setColor(QColor color)
vtkSmartPointer< class vtkCaptionActor2D > vtkCaptionActor2DPtr
void setColor(QColor color)
Representation of a floating-point bounding box in 3D. The data are stored as {xmin,xmax,ymin,ymax,zmin,zmax}, in order to simplify communication with vtk.
void setPosition(Vector3D point)
void setSizeInNormalizedViewport(bool on, double size)
void setSource(vtkPolyDataAlgorithmPtr source)
void updatePosition(const DoubleBoundingBox3D bb, const Transform3D &M)
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Vector3D getPosition() const
vtkSmartPointer< class vtkPolyDataAlgorithm > vtkPolyDataAlgorithmPtr
vtkPolyDataPtr getPolyData()
RealScalar length() const
void setStipple(int stipple)
void setColor(QColor color)
void setValue(Vector3D base, Vector3D normal, double length)
GraphicalArrow3D(vtkRendererPtr renderer=vtkRendererPtr())
void setRadius(double radius)
void setColor(QColor color)
void setColorAndOpacity(vtkPropertyPtr property, QColor color)
void setColor(QColor color)
void setText(QString text)
void setValue(Vector3D point1, Vector3D point2)