学习VTK9笔记(四)加入包围盒

上次打开了stl文件,其他文件的类似,先不一一介绍。这次按照书上的介绍,添加一个包围盒。不过书上的一些代码和VTK9有差异,需要注意。

#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkActor.h>
#include <vtkConeSource.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSTLReader.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkInteractorStyleTrackballCamera.h>

#include <vtkOutlineFilter.h>

#define vtkSPtr vtkSmartPointer
#define vtkSPtrNew(Var, Type) vtkSPtr<Type> Var = vtkSPtr<Type>::New();

#ifndef INITIAL_OPENGL
#define INITIAL_OPENGL
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)

#endif

int main()
{
    vtkSPtrNew(reader, vtkSTLReader);	    // 读取STL
    reader->SetFileName("D:\\bird.stl");      //设置一个stl文件
    reader->Update();

    vtkSPtrNew(mapper, vtkPolyDataMapper);
    mapper->SetInputConnection(reader->GetOutputPort());

    vtkSPtrNew(actor, vtkActor);
    actor->SetMapper(mapper);
    actor->GetProperty()->SetEdgeColor(255, 241, 0);	// 显示边框颜色
//    actor->GetProperty()->SetEdgeVisibility(1);			// 显示边框

    vtkSPtrNew(ren1, vtkRenderer);
    ren1->AddActor(actor);

    vtkSmartPointer<vtkOutlineFilter> outline =
            vtkSmartPointer<vtkOutlineFilter>::New();
//    outline->SetInputConnection(reader->GetOutputPort());  //这句和下面的都可以
    outline->SetInputData(reader->GetOutput());
    vtkSmartPointer<vtkPolyDataMapper> outlineMapper =
        vtkSmartPointer<vtkPolyDataMapper>::New();
    outlineMapper->SetInputConnection(outline->GetOutputPort());   //这句可以,VTK9和书上的例子不一样了。
//    outlineMapper->SetInputData(outline->GetOutput());           //这句不行,不会显示红色的框。
    vtkSmartPointer<vtkActor> outlineActor =
            vtkSmartPointer<vtkActor>::New();
    outlineActor->SetMapper(outlineMapper);
    outlineActor->GetProperty()->SetColor(1,0,0);
    ren1->AddActor(outlineActor);

    ren1->SetBackground(0.1, 0.2, 0.4);

    vtkSPtrNew(renWin, vtkRenderWindow);
    renWin->AddRenderer(ren1);
    renWin->SetSize(300, 300);

    vtkSPtrNew(iren, vtkRenderWindowInteractor);
    iren->SetRenderWindow(renWin);
    vtkSPtrNew(style, vtkInteractorStyleTrackballCamera);
    iren->SetInteractorStyle(style);
//    renWin->SetSize(600, 600);
    renWin->Render();

    iren->Start();
    return 0;
}

### VTK 学习教程第十篇 VTK (Visualization Toolkit) 是一个开源软件系统,主要用于三维计算机图形学、图像处理和可视化。对于希望深入理解并掌握 VTK学习者来说,获取高质量的学习资源至关重要。 #### 推荐的学习路径 针对不同层次的学习需求,建议采用分阶段的方式逐步深入了解 VTK: - **基础知识**:从官方文档入手,了解基本概念和技术背景[^1]。 - **实践案例**:通过实际项目练习来巩固理论知识。尝试重现经典例子,并在此基础上做适当修改以加深理解[^2]。 - **高级主题**:探索更复杂的算法实现细节以及性能优化技巧等进阶内容。注意版本差异可能带来的API变化影响。 #### 获取优质参考资料 为了确保所使用的材料既不过于陈旧又具有实用性,在选择学习资料时应注意以下几点: - 查看出版日期或更新时间,优先选用较新的版本; - 参考社区反馈评价较高的书籍或者在线课程; - 关注活跃开发者维护的技术博客和个人经验分享; 考虑到提到的 `vtkSweptSurface` 类已被移除的情况,当遇到特定功能不再可用的问题时,应当查阅最新版次的手册说明寻找替代方案或是向论坛求助寻求帮助。 ```python import vtk # 创建简单的几何对象作为演示用途 sphereSource = vtk.vtkSphereSource() coneSource = vtk.vtkConeSource() # 设置渲染窗口参数配置... renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) # 添加光源设置提高显示效果... # 将创建好的模型加入场景中展示出来 mapper = vtk.vtkPolyDataMapper() actor = vtk.vtkActor() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值