vtk入门学习(一)模仿VTK示例代码做了一个圆柱cmake+cpp

作者模仿VTK示例编写Cmake和cpp代码,解决cmake解析问题后,展示了创建圆柱、Mapper、Actor、Renderer和RenderWindow的步骤,以及遇到的鼠标交互问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


模仿VTK示例代码做了一个圆柱

写cmake的时候遇到了vtk_module_autoinit无法被解析为命令的错误,查了很久删了重写就没问题了,应该是在复制网页教程时复制了未知的字符

cmake + cpp代码(删改了)

cmake_minimum_required(VERSION 3.16)
project(VTKDemo)

find_package(VTK REQUIRED COMPONENTS 
    CommonColor
    CommonCore
    FiltersSources
    InteractionStyle
    RenderingContextOpenGL2
    RenderingCore
    RenderingFreeType
    RenderingGL2PSOpenGL2
    RenderingOpenGL2
)

if(NOT VTK_FOUND)
    message("vtk not found")
endif()

add_executable(
    HelloWorld
    HelloWorld.cpp
)

target_link_libraries(
    HelloWorld
    PRIVATE
    ${VTK_LIBRARIES}
)

vtk_module_autoinit(
  TARGETS HelloWorld
  MODULES ${VTK_LIBRARIES}
)

main.cpp:
这部分代码相比于示例删改很多,没有添加

#include <vtk-9.3/vtkPolyDataMapper.h>
#include <vtk-9.3/vtkRenderWindowInteractor.h>
#include <vtk-9.3/vtkRenderWindow.h>
#include <vtk-9.3/vtkAutoInit.h>
#include <vtk-9.3/vtkNew.h>
#include <vtk-9.3/vtkCylinderSource.h>
#include <vtk-9.3/vtkActor.h>
#include <vtk-9.3/vtkRenderer.h>
#include <vtk-9.3/vtkCamera.h>
//#include <iostream>

int main(int , char*[])
{

    vtkNew<vtkCylinderSource> cylinder;
    cylinder->SetResolution(8);	//默认不写是6


    vtkNew<vtkPolyDataMapper> mapper;
    mapper->SetInputConnection(cylinder->GetOutputPort());

    vtkNew<vtkActor> cylinderActor;
    cylinderActor->SetMapper(mapper);

    vtkNew<vtkRenderer> renderer;
    renderer->AddActor(cylinderActor);
    renderer->SetBackground(26, 51, 102);
    renderer->ResetCamera();
    renderer->GetActiveCamera()->Zoom(1.5);

    auto win = vtkRenderWindow::New();
    win->SetSize(600, 400);
    win->AddRenderer(renderer);
    win->SetWindowName("Cylinder");

    auto winInt = vtkRenderWindowInteractor::New();
    winInt->SetRenderWindow(win);

    win->Render();
    winInt->Start();

    //sleep(100);	//防止一闪而过,或者取消上面的注释,然后注释这一行

    return EXIT_SUCCESS;
}

效果如下,鼠标交互事件很奇怪,暂时不管
在这里插入图片描述


总结

大概分为几步:
1.创建CylinderSource
2.将CylinderSource的数据导入vtkPolyDataMapper
3.用mapper的数据创建vtkActor
4.添加actor至renderer中
5.创建vtkRenderWindow并设置renderer
6.创建vtkRenderWindowInteractor用于鼠标交互(可选)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值