我的第一个VTK程序--绘制球体

经过前面基础的学习,下面就来进行写写第一个VTK程序。

这里,我们选择一个比较简单的示例程序(最基本的一个管道实现)
这里是源码

引用自inter_peng的专栏

  • 建立一个文件夹,就取名为demo吧
  • 在demo文件夹下,新建CMakeLists.txt文件,注意大小写
  • 修改CMakeLists.txt文件内容为
cmake_minimum_required(VERSION 2.8)

PROJECT(Sphere)

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

add_executable(Sphere MACOSX_BUNDLE Sphere)

if(VTK_LIBRARIES)
  target_link_libraries(Sphere ${VTK_LIBRARIES})
else()
  target_link_libraries(Sphere vtkHybrid vtkWidgets)
endif()

保存

  • 细心的你可能已经发现Sphere在上面的出现,下面再在demo文件夹下建立Sphere.cpp文件,修改内容如下:
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int, char *[])
{
  // 创建一个球体
  vtkSmartPointer sphereSource = 
    vtkSmartPointer::New();
  sphereSource->SetCenter(0.0, 0.0, 0.0);   // 设置中心
  sphereSource->SetRadius(5.0);             // 设置半径

  // 映射、制图人
  vtkSmartPointer mapper = 
    vtkSmartPointer::New();
  mapper->SetInputConnection(sphereSource->GetOutputPort());    // 设置映射的渲染数据

  // 演员
  vtkSmartPointer actor = 
    vtkSmartPointer::New();
  actor->SetMapper(mapper); 

  // 渲染器
  vtkSmartPointer renderer = 
    vtkSmartPointer::New();
  // 渲染窗口
  vtkSmartPointer renderWindow = 
    vtkSmartPointer::New();
  renderWindow->AddRenderer(renderer);
  // 渲染窗口交互
  vtkSmartPointer renderWindowInteractor = 
    vtkSmartPointer::New();
  renderWindowInteractor->SetRenderWindow(renderWindow);
  // 添加演员
  renderer->AddActor(actor);

  renderer->SetBackground(.3, .6, .3); // Background color green

  renderWindow->Render();
  renderWindowInteractor->Start();

  return EXIT_SUCCESS;
}
  • 先让我们在demo文件夹中新建一个bin文件夹,用来存放cmake生成的项目。
  • 然后让我们打开CMake
    我的第一个VTK程序--绘制球体_第1张图片
    在上面的红框中添加demo的路径
    在下面的红框中添加bin的路径
    (有编译过vtk源码的经验这里很容易理解)
    点击configure,出错,设置一下VTK_DIR为你的VTKbin(VTK编译后生成的项目文件夹)
    再次configure,还是有红色TCL_LIBRARY、TK_LIBRARY,这里不管,点击Generate,生成项目

  • 大功告成后,bin目录下应该已经有了项目文件,如图:
    我的第一个VTK程序--绘制球体_第2张图片

  • 点击sln进入vs编译器

  • 右击Sphere项目,设置为启动项目
    我的第一个VTK程序--绘制球体_第3张图片

  • 运行

  • 结果如图
    我的第一个VTK程序--绘制球体_第4张图片

  • 大功告成~试试鼠标拖动下?效果还不错吧?

你可能感兴趣的:(VTK,vtk)