当前位置: 首页 > news >正文

(31)VTK C++开发示例 ---绘制立方体

文章目录

    • 1. 概述
    • 2. CMake链接VTK
    • 3. main.cpp文件
    • 4. 演示效果


更多精彩内容
👉内容导航 👈
👉VTK开发 👈

1. 概述

使用VTK(Visualization Toolkit)库创建并显示3D立方体的C++程序,演示了 VTK 管道用法,不需要手动创建数据点。

核心功能

  • 创建了一个黄色立方体,并显示在灰色背景的3D渲染窗口中
  • 支持窗口交互操作(旋转/缩放等)
  • 窗口初始大小为600x600像素
  • 相机初始方位角为30度(Azimuth)和仰角30度(Elevation)

关键VTK类

类名作用
vtkCubeSource生成立方体几何数据
vtkPolyDataMapper将几何数据映射为可渲染的图形数据
vtkActor控制物体外观(颜色/纹理等)
vtkRenderer管理场景中的对象和光照
vtkRenderWindow显示3D场景的窗口
vtkRenderWindowInteractor处理用户交互事件

工作流程

  1. 初始化颜色库(vtkNamedColors)
  2. 创建渲染管线:数据源→映射器→演员
  3. 配置渲染窗口及交互器
  4. 设置相机视角和场景参数
  5. 启动渲染循环
环境说明
系统ubuntu22.04、windows11
cmake3.22、3.25
Qt5.14.2
编译器g++11.4、msvc2017
VTK9.4.1

2. CMake链接VTK

cmake_minimum_required(VERSION 3.20 FATAL_ERROR) # 设置CMake最低版本
project(vtk2) # 设置项目名称
# 查找VTK库
find_package(VTK COMPONENTS 
CommonColor
CommonCore
FiltersSources
InteractionStyle
RenderingContextOpenGL2
RenderingCore
RenderingFreeType
RenderingGL2PSOpenGL2
RenderingOpenGL2
)
if(NOT VTK_FOUND)
message("VTK not found")
return()
endif()add_executable(vtk2 main.cpp) # 添加可执行文件target_link_libraries(vtk2 PRIVATE ${VTK_LIBRARIES}) # 链接VTK库
vtk_module_autoinit(TARGETS vtk2 MODULES ${VTK_LIBRARIES}) # 初始化VTK模块

3. main.cpp文件

/********************************************************************************
* 文件名:   main.cpp
* 创建时间: 2025-03-21 21:40:28
* 开发者:   MHF
* 邮箱:     1603291350@qq.com
* 功能:     
*********************************************************************************/
#include<iostream>
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCubeSource.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>using namespace std;int main()
{vtkNew<vtkNamedColors> colors;vtkNew<vtkRenderer> renderer; //渲染器vtkNew<vtkRenderWindow> renderWindow; //渲染窗口renderWindow->AddRenderer(renderer);vtkNew<vtkRenderWindowInteractor> iren; //渲染窗口交互器iren->SetRenderWindow(renderWindow);vtkNew<vtkCubeSource> cube; //创建一个立方体cube->Update(); //更新立方体vtkNew<vtkPolyDataMapper> mapper; //创建一个映射器mapper->SetInputConnection(cube->GetOutputPort()); //设置映射器输入vtkNew<vtkActor> actor; //创建一个演员actor->SetMapper(mapper); //设置演员映射器actor->GetProperty()->SetColor(colors->GetColor3d("Banana").GetData()); //设置演员颜色renderer->AddActor(actor); //添加演员renderer->SetBackground(colors->GetColor3d("SlateGray").GetData()); //设置背景颜色renderer->ResetCamera(); //重置相机renderer->GetActiveCamera()->Azimuth(30); //设置相机方位角renderer->GetActiveCamera()->Elevation(30); //设置相机仰角renderer->ResetCameraClippingRange(); //重置相机裁剪范围renderWindow->SetSize(600, 600); //设置窗口大小renderWindow->Render(); //渲染窗口iren->Start(); //开始交互器事件循环return 0;
}

4. 演示效果

在这里插入图片描述



相关文章:

  • springboot集成Lucene详细使用
  • 【文献分享】Modelling the species-area提供数据和代码
  • 短视频矩阵系统贴牌开发实战:批量剪辑文件夹功能设计与实现
  • JAVA SE 反射,枚举与lambda表达式
  • 基于go的简单管理系统(增删改查)
  • Sehll编程的函数于数组
  • nacos和redis本地启动
  • 黑群晖Moments视频无缩略图,安装第三方ffmpeg解决
  • 搭建PCDN大节点,服务器该怎么配
  • 企业微信jdk 授权 记录
  • SVTAV1源码-set_all_ref_frame_type
  • Mysql之数据库基础
  • 用TCP实现服务器与客户端的交互
  • python爬虫基础:requests库详解与案例
  • Microsoft Entra ID 免费版管理云资源详解
  • Vue:el-table-tree懒加载数据
  • Kaggle比赛入门攻略(以 Titanic 为例)
  • 【KWDB 创作者计划】_深度解析KWDB存储引擎
  • C++负载均衡远程调用学习之基础TCP服务
  • 如何做表征对齐?
  • 澎湃读报丨解放日报8个版聚焦:牢记嘱托,砥砺奋进
  • 专访 | 杜普兰蒂斯:爱上中国文化,下一步努力提升速度
  • 山西太原一处居民小区发生爆炸,现场产生大量浓烟
  • 庄语乐︱宋代历史是被“塑造”出来的吗?
  • “五一”假期逛上海车展请提前购票,展会现场不售当日票
  • 厚重与潮流交织,淮安展现“运河之都”全新城市想象