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();
149 source = vtkSphereSourcePtr::New();
150 source->SetRadius(4);
155 source->SetThetaResolution(16);
156 source->SetPhiResolution(12);
157 source->LatLongTessellationOn();
160 normals->SetInputConnection(source->GetOutputPort());
163 mapper = vtkPolyDataMapperPtr::New();
164 mapper->SetInputConnection(normals->GetOutputPort());
166 actor = vtkActorPtr::New();
167 actor->SetMapper(mapper);
181 mRenderer->RemoveActor(actor);
184 mRenderer = renderer;
188 mRenderer->AddActor(actor);
194 source->SetRadius(radius);
209 actor->SetPosition(point.begin());
214 return Vector3D(actor->GetPosition());
224 return source->GetOutput();
235 mRenderer = renderer;
236 source = vtkLineSourcePtr::New();
237 mapper = vtkPolyDataMapperPtr::New() ;
238 actor = vtkActorPtr::New() ;
240 mapper->SetInputConnection( source->GetOutputPort() );
241 actor->SetMapper (mapper );
254 mRenderer->RemoveActor(actor);
257 mRenderer = renderer;
261 mRenderer->AddActor(actor);
272 source->SetPoint1(point1.begin());
273 source->SetPoint2(point2.begin());
278 actor->GetProperty()->SetLineStipplePattern(stipple);
297 mRenderer = renderer;
298 source = vtkArcSourcePtr::New();
299 source->SetResolution(20);
300 mapper = vtkPolyDataMapperPtr::New() ;
301 actor = vtkActorPtr::New() ;
303 mapper->SetInputConnection( source->GetOutputPort() );
304 actor->SetMapper (mapper );
306 mRenderer->AddActor(actor);
312 mRenderer->RemoveActor(actor);
322 source->SetPoint1(point1.begin());
323 source->SetPoint2(point2.begin());
324 source->SetCenter(center.begin());
329 actor->GetProperty()->SetLineStipplePattern(stipple);
348 mRenderer = renderer;
349 source = vtkArrowSourcePtr::New();
350 source->SetTipResolution(24);
351 source->SetShaftResolution(24);
352 mapper = vtkPolyDataMapperPtr::New() ;
353 actor = vtkActorPtr::New() ;
355 mapper->SetInputConnection( source->GetOutputPort() );
356 actor->SetMapper (mapper );
358 mRenderer->AddActor(actor);
364 mRenderer->RemoveActor(actor);
388 source->SetTipLength(0.35);
389 source->SetTipRadius(0.1*(length));
390 source->SetShaftRadius(0.03*(length));
391 actor->SetUserMatrix(M.getVtkMatrix());
401 mRenderer = renderer;
402 mapper = vtkPolyDataMapperPtr::New();
403 actor = vtkActorPtr::New();
405 actor->SetMapper(mapper);
407 mRenderer->AddActor(actor);
409 mPolyData = vtkPolyDataPtr::New();
410 mPoints = vtkPointsPtr::New();
411 mSide = vtkCellArrayPtr::New();
413 vtkIdType cells[5] = { 0,1,2,3,0 };
414 mSide->InsertNextCell(5, cells);
416 mPolyData->SetPoints(mPoints);
417 mapper->SetInputData(mPolyData);
424 mPolyData->SetLines(mSide);
425 actor->GetProperty()->SetLineWidth(width);
429 mPolyData->SetLines(NULL);
437 mPolyData->SetPolys(mSide);
438 actor->GetProperty()->SetOpacity(1.0);
442 mPolyData->SetPolys(NULL);
449 mRenderer->RemoveActor(actor);
459 mPoints = vtkPointsPtr::New();
460 mPoints->InsertPoint(0, M.coord(bb.
corner(0,0,0)).
begin());
461 mPoints->InsertPoint(1, M.coord(bb.
corner(0,1,0)).
begin());
462 mPoints->InsertPoint(2, M.coord(bb.
corner(1,1,0)).
begin());
463 mPoints->InsertPoint(3, M.coord(bb.
corner(1,0,0)).
begin());
464 mPolyData->SetPoints(mPoints);
479 mText = vtkVectorTextPtr::New();
481 mapper->SetInputConnection(mText->GetOutputPort());
482 mFollower = vtkFollowerPtr::New();
483 mFollower->SetMapper(mapper);
486 mFollower->SetScale(mTextScale.begin());
497 mRenderer->RemoveActor(mFollower);
498 mViewportListener->stopListen();
501 mRenderer = renderer;
505 mRenderer->AddActor(mFollower);
506 mFollower->SetCamera(mRenderer->GetActiveCamera());
507 if (mViewportListener)
508 mViewportListener->startListen(mRenderer);
515 mRenderer->RemoveActor(mFollower);
528 if (!mViewportListener)
536 mViewportListener.reset();
555 mFollower->SetPosition(pos.begin());
571 if (!mViewportListener || !mViewportListener->isListening())
577 double size = mViewportListener->getVpnZoom();
579 double scale = mSize/size;
581 Vector3D mTextScale(scale,scale,scale);
583 mFollower->SetScale(mTextScale.begin());
593 mText = vtkCaptionActor2DPtr::New();
597 mText->GetCaptionTextProperty()->BoldOff();
598 mText->GetCaptionTextProperty()->ItalicOff();
599 mText->GetCaptionTextProperty()->ShadowOff();
601 mText->SetHeight(0.03);
610 mRenderer->RemoveActor(mText);
613 mRenderer = renderer;
617 mRenderer->AddActor(mText);
624 mRenderer->RemoveActor(mText);
629 mText->SetHeight(val);
644 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)