VTK学习笔记(八)vtkVectorText和vtkFollower的用法

这个例子演示了vtkVectorText和vtkFollower的用法。vtkVectorText用于创建3D标注。vtkFollower用于定位3D文本,并确保文本始终面向渲染器的活动摄像机(即文本始终是可读的),文字始终面向一个固定的视角,也就是三维空间内其他物体怎么变都可以,但是文字的朝向不变。

VTK学习笔记(八)vtkVectorText和vtkFollower的用法_第1张图片

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int, char*[])
{
  vtkNew colors;

  // Create the axes and the associated mapper and actor.
  vtkNew axes;
  axes->SetOrigin(0, 0, 0);
  vtkNew axesMapper;
  axesMapper->SetInputConnection(axes->GetOutputPort());
  vtkNew axesActor;
  axesActor->SetMapper(axesMapper);

  // Create the 3D text and the associated mapper and follower (a type of
  // actor).  Position the text so it is displayed over the origin of the
  // axes.
  vtkNew atext;
  atext->SetText(Origin);
  vtkNew textMapper;
  textMapper->SetInputConnection(atext->GetOutputPort());
  vtkNew textActor;
  textActor->SetMapper(textMapper);
  textActor->SetScale(0.2, 0.2, 0.2);
  textActor->AddPosition(0, -0.1, 0);
  textActor->GetProperty()->SetColor(colors->GetColor3d(Peacock).GetData());

  // Create the Renderer, RenderWindow, and RenderWindowInteractor.
  vtkNew renderer;
  vtkNew renderWindow;
  renderWindow->AddRenderer(renderer);
  renderWindow->SetSize(640, 480);

  vtkNew interactor;
  interactor->SetRenderWindow(renderWindow);

  vtkNew style;
  interactor->SetInteractorStyle(style);

  // Add the actors to the renderer.
  renderer->AddActor(axesActor);
  renderer->AddActor(textActor);
  renderer->SetBackground(colors->GetColor3d(Silver).GetData());

  // Zoom in closer.
  renderer->ResetCamera();
  renderer->GetActiveCamera()->Zoom(1.6);

  // Reset the clipping range of the camera; set the camera of the
  // follower; render.
  renderer->ResetCameraClippingRange();
  textActor->SetCamera(renderer->GetActiveCamera());

  interactor->Initialize();
  renderWindow->SetWindowName(TextOrigin);
  renderWindow->Render();
  interactor->Start();

  return EXIT_SUCCESS;
}

如果不明白效果,可以将下面这句代码注释,然后再运行。

textActor->SetCamera(renderer->GetActiveCamera());

你可能感兴趣的:(VTK,Qt,c++,vtk,qt5)