VTK学习

VTK学习

渲染窗口的显示

    vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
    renWin->AddRenderer(renderer);
    renWin->SetSize(640, 480);
    renWin->Render();
    renWin->SetWindowName("002");

    vtkSmartPointer<vtkRenderWindowInteractor> iren =
        vtkSmartPointer<vtkRenderWindowInteractor>::New();
    iren->SetRenderWindow(renWin);
    iren->Initialize();
    iren->Start();

在这里插入图片描述

界面交互
1.鼠标左键+shift 整体移动
2.鼠标左键+ctrl 旋转
3.P键 显示外接长方体
4.E键 退出

数据源 生成柱体

//vtkCylinderSource 渲染柱体  生成的数据类型是vtkPolyData
 vtkSmartPointer<vtkCylinderSource> cylinder= vtkSmartPointer<vtkCylinderSource>::New();

 cylinder->SetHeight(3);
 cylinder->SetRadius(1);
 cylinder->SetResolution(10); //设置等边多边形边数

渲染数据

 //vtkPolyDataMapper 渲染多边形几何数据(vtkPolyData) 将输入的数据转换为几何图元(点、线、多边形)进行渲染
 //SetInputConnection VTK可视化管线的输入数据接口
 vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
 cylinderMapper->SetInputConnection(cylinder->GetOutputPort());

可视化数据

 //vtkActor 表达场景中的几何数据 数据可视化表达
 //SetMapper  设置生成几何图元的mapper 连接一个actor到可视化管线的末端
 vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
 cylinderActor->SetMapper(cylinderMapper);

管理渲染过程

 //vtkRenderer 管理场景的渲染过程
 vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
 renderer->AddActor(cylinderActor); //将vtkProp类型的对象添加到渲染场景中
 renderer->SetBackground(0.1, 0.2, 0.6);  //RGB  分量取值0-1

添加灯光

 //添加灯光
 vtkSmartPointer<vtkLight> light1 = vtkSmartPointer<vtkLight>::New();
 light1->SetColor(1, 0, 0);
 light1->SetPosition(0, 0, 1);
 light1->SetFocalPoint(renderer->GetActiveCamera()->GetFocalPoint());
 renderer->AddLight(light1);

 vtkSmartPointer<vtkLight> light2 = vtkSmartPointer<vtkLight>::New();
 light2->SetColor(0,0, 1);
 light2->SetPosition(0, 0, -1);
 light2->SetFocalPoint(renderer->GetActiveCamera()->GetFocalPoint());
 renderer->AddLight(light2);

设置相机

 //设置相机
 vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();
 camera->SetClippingRange(0.04, 2.4);
 camera->SetFocalPoint(0.05, -0.2, -0.05);
 camera->SetPosition(0.3, -0.1, -0.3);
 camera->SetViewUp(-0.2, 1, 0.03);
 renderer->SetActiveCamera(camera);

设置渐变背景

 renderer->SetGradientBackground(1);
 renderer->SetBackground2(0.1,0.2,0.6);

设置渲染窗口

 vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
 renWin->AddRenderer(renderer);
 renWin->SetSize(400,400); //设置窗口大小
 renWin->Render();

设置窗口鼠标、键盘的交互

 //vtkRenderWindowInteractor 提供平台独立的响应鼠标 键盘 和时钟事件的交互机制
 vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
 iren->SetRenderWindow(renWin); //设置渲染窗口

 //vtkInteractorStyleTrackballCamera  交互器样式 用户通过控制相机对物体作旋转 放大 缩小等操作
 vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
 iren->SetInteractorStyle(style); //定义交互器样式
 iren->Initialize();//为处理窗口事件做准备
 iren->Start(); //进入事件响应循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值