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" 64 mActor = vtkActorPtr::New();
97 mActor->SetVisibility(visible);
103 mActor->GetProperty()->SetBackfaceCulling(val);
108 mActor->GetProperty()->SetFrontfaceCulling(val);
113 mActor->GetProperty()->SetColor(red, green, blue);
118 mActor->GetProperty()->SetColor(color.begin());
123 mActor->SetPosition(point.begin());
128 mActor->GetProperty()->SetOpacity(val);
133 mActor->SetUserMatrix(matrix);
183 mMapper = vtkPolyDataMapperPtr::New();
185 mActor->SetMapper(mMapper);
192 mActor->GetProperty()->SetRepresentationToWireframe();
200 mMapper->SetInputData(
mData);
205 mActor->SetTexture(texture);
221 mMapper = vtkSmartPointer<vtkGlyph3DMapper>::New();
222 vtkSmartPointer<vtkArrowSource> arrowSource = vtkSmartPointer<vtkArrowSource>::New();
223 mMapper->SetSourceConnection(arrowSource->GetOutputPort());
224 mMapper->ScalarVisibilityOn();
225 mMapper->SetUseLookupTableScalarRange(1);
226 mMapper->SetScalarMode(VTK_SCALAR_MODE_USE_POINT_FIELD_DATA);
227 mActor->SetMapper(mMapper);
237 mMapper->SetInputData(
mData);
242 mMapper->SetOrientationArray(orientationArray);
247 if(strlen(colorArray)>0)
254 mMapper->SelectColorArray(colorArray);
260 vtkSmartPointer<vtkColorSeries> colorSeries = vtkSmartPointer<vtkColorSeries>::New();
261 vtkSmartPointer<vtkLookupTable> table = vtkLookupTable::New();
262 colorSeries->SetColorSchemeByName(lut);
263 colorSeries->BuildLookupTable(table , vtkColorSeries::ORDINAL);
264 mMapper->SetLookupTable(table);
270 if(scaleFactor<=0)
return;
271 mMapper->SetScaleFactor(scaleFactor);
286 source = vtkSphereSourcePtr::New();
287 source->SetRadius(4);
292 source->SetThetaResolution(16);
293 source->SetPhiResolution(12);
294 source->LatLongTessellationOn();
297 normals->SetInputConnection(source->GetOutputPort());
300 mapper = vtkPolyDataMapperPtr::New();
301 mapper->SetInputConnection(normals->GetOutputPort());
303 actor = vtkActorPtr::New();
304 actor->SetMapper(mapper);
331 source->SetRadius(radius);
341 actor->SetPosition(point.begin());
346 return Vector3D(actor->GetPosition());
356 return source->GetOutput();
366 source = vtkLineSourcePtr::New();
367 mapper = vtkPolyDataMapperPtr::New() ;
368 actor = vtkActorPtr::New() ;
370 mapper->SetInputConnection( source->GetOutputPort() );
371 actor->SetMapper (mapper );
402 source->SetPoint1(point1.begin());
403 source->SetPoint2(point2.begin());
408 actor->GetProperty()->SetLineStipplePattern(stipple);
423 source = vtkArcSourcePtr::New();
424 source->SetResolution(20);
425 mapper = vtkPolyDataMapperPtr::New() ;
426 actor = vtkActorPtr::New() ;
428 mapper->SetInputConnection( source->GetOutputPort() );
429 actor->SetMapper (mapper );
447 source->SetPoint1(point1.begin());
448 source->SetPoint2(point2.begin());
449 source->SetCenter(center.begin());
454 actor->GetProperty()->SetLineStipplePattern(stipple);
469 source = vtkArrowSourcePtr::New();
470 source->SetTipResolution(24);
471 source->SetShaftResolution(24);
472 mapper = vtkPolyDataMapperPtr::New() ;
473 actor = vtkActorPtr::New() ;
475 mapper->SetInputConnection( source->GetOutputPort() );
476 actor->SetMapper (mapper );
508 source->SetTipLength(0.35);
509 source->SetTipRadius(0.1*(length));
510 source->SetShaftRadius(0.03*(length));
511 actor->SetUserMatrix(M.getVtkMatrix());
521 mapper = vtkPolyDataMapperPtr::New();
522 actor = vtkActorPtr::New();
524 actor->SetMapper(mapper);
528 mPolyData = vtkPolyDataPtr::New();
529 mPoints = vtkPointsPtr::New();
530 mSide = vtkCellArrayPtr::New();
532 vtkIdType cells[5] = { 0,1,2,3,0 };
533 mSide->InsertNextCell(5, cells);
535 mPolyData->SetPoints(mPoints);
536 mapper->SetInputData(mPolyData);
543 mPolyData->SetLines(mSide);
544 actor->GetProperty()->SetLineWidth(width);
548 mPolyData->SetLines(NULL);
556 mPolyData->SetPolys(mSide);
557 actor->GetProperty()->SetOpacity(1.0);
561 mPolyData->SetPolys(NULL);
578 mPoints = vtkPointsPtr::New();
579 mPoints->InsertPoint(0, M.coord(bb.
corner(0,0,0)).
begin());
580 mPoints->InsertPoint(1, M.coord(bb.
corner(0,1,0)).
begin());
581 mPoints->InsertPoint(2, M.coord(bb.
corner(1,1,0)).
begin());
582 mPoints->InsertPoint(3, M.coord(bb.
corner(1,0,0)).
begin());
583 mPolyData->SetPoints(mPoints);
592 mText = vtkVectorTextPtr::New();
594 mapper->SetInputConnection(mText->GetOutputPort());
595 mFollower = vtkFollowerPtr::New();
596 mFollower->SetMapper(mapper);
598 mFollower->SetScale(mTextScale.begin());
600 this->setSizeInNormalizedViewport(
true, 0.025);
609 mViewportListener->stopListen();
617 mFollower->SetCamera(
mRenderer->GetActiveCamera());
618 if (mViewportListener)
619 mViewportListener->startListen(
mRenderer);
639 if (!mViewportListener)
647 mViewportListener.reset();
665 mFollower->SetPosition(pos.begin());
681 if (!mViewportListener || !mViewportListener->isListening())
687 double size = mViewportListener->getVpnZoom(
Vector3D(mFollower->GetPosition()));
689 double scale = mSize/size;
691 Vector3D mTextScale(scale,scale,scale);
693 mFollower->SetScale(mTextScale.begin());
702 mText = vtkCaptionActor2DPtr::New();
706 mText->GetCaptionTextProperty()->BoldOff();
707 mText->GetCaptionTextProperty()->ItalicOff();
708 mText->GetCaptionTextProperty()->ShadowOff();
710 mText->SetHeight(0.03);
717 mText->SetPosition(-15, -30);
718 mText->SetPosition2(15, -10);
723 mText->SetPosition(-15, 2);
728 mText->SetVisibility(visible);
754 mText->SetHeight(val);
770 mText->SetAttachmentPoint(pos.begin());
void setRenderer(vtkRendererPtr renderer=vtkRendererPtr())
void setScaleFactor(double scaleFactor)
vtkSmartPointer< class vtkTexture > vtkTexturePtr
void setValue(Vector3D point1, Vector3D point2, Vector3D center)
void setPointSize(int pointSize)
CaptionText3D(vtkRendererPtr renderer=vtkRendererPtr())
GraphicalGlyph3DData(vtkPolyDataAlgorithmPtr source=vtkPolyDataAlgorithmPtr(), vtkRendererPtr renderer=vtkRendererPtr())
vtkSmartPointer< class vtkActor > vtkActorPtr
vtkPropertyPtr getProperty()
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
void setData(vtkPolyDataPtr data)
void setPosition(Vector3D point)
vtkSmartPointer< class vtkPolyDataMapper > vtkPolyDataMapperPtr
void setValue(Vector3D point)
Vector3D getPosition() const
GraphicalPoint3D(vtkRendererPtr renderer=vtkRendererPtr())
vtkCaptionActor2DPtr getActor()
Transform3D createTransformScale(const Vector3D &scale_)
vtkSmartPointer< class vtkProperty > vtkPropertyPtr
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
void setIsWireFrame(bool val)
void setOrientationArray(const char *orientationArray)
void setPosition(Vector3D pos)
void setColor(QColor color)
void setText(QString text)
GraphicalArc3D(vtkRendererPtr renderer=vtkRendererPtr())
Vector3D getPosition() const
void setColor(QColor color)
cstring_cast_Placeholder cstring_cast(const T &val)
Vector3D getValue() const
void setOpacity(double val)
virtual vtkMapperPtr getMapper()=0
Rect3D(vtkRendererPtr renderer, QColor color)
vtkFollowerPtr getActor()
void setColorArray(const char *colorArray)
void setScalarVisibility(bool show)
GraphicalLine3D(vtkRendererPtr renderer=vtkRendererPtr())
void setData(vtkPolyDataPtr data)
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)
GraphicalGeometricBase(vtkPolyDataAlgorithmPtr source=vtkPolyDataAlgorithmPtr(), vtkRendererPtr renderer=vtkRendererPtr())
void setRenderer(vtkRendererPtr renderer=vtkRendererPtr())
void setTexture(vtkTexturePtr texture)
Transform3D createTransformIJC(const Vector3D &ivec, const Vector3D &jvec, const Vector3D ¢er)
vtkSmartPointer< class vtkRenderer > vtkRendererPtr
vtkSmartPointer< class vtkFollower > vtkFollowerPtr
void setColor(double red, double green, double blue)
void scaleText()
internal method
vtkSmartPointer< class vtkMapper > vtkMapperPtr
void setPosition(Vector3D pos)
vtkPolyDataPtr getPolyData()
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)
void setUserMatrix(vtkMatrix4x4 *matrix)
vtkSmartPointer< class vtkCaptionActor2D > vtkCaptionActor2DPtr
void setColor(QColor color)
void setBackfaceCulling(bool val)
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 setSizeInNormalizedViewport(bool on, double size)
vtkPolyDataAlgorithmPtr getSource()
vtkSmartPointer< vtkPolyData > vtkPolyDataPtr
void updatePosition(const DoubleBoundingBox3D bb, const Transform3D &M)
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
void setFrontfaceCulling(bool val)
bool similar(const CameraInfo &lhs, const CameraInfo &rhs, double tol)
vtkSmartPointer< class vtkPolyDataAlgorithm > vtkPolyDataAlgorithmPtr
vtkPolyDataPtr getPolyData()
RealScalar length() const
void setVisibility(bool visible)
void setSource(vtkPolyDataAlgorithmPtr source)
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 setVisibility(bool visible)
void setLUT(const char *lut)
void setColor(QColor color)
void setColor(QColor color)
void setText(QString text)
vtkPolyDataAlgorithmPtr mSource
void setValue(Vector3D point1, Vector3D point2)
void setColorAndOpacity(vtkPropertyOrProperty2DPtr property, QColor color)
~GraphicalGeometricBase()
Namespace for all CustusX production code.