(2)VTK C++开发示例 --- 绘制多面锥体

news/2025/5/24 1:13:46

文章目录

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


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

1. 概述

VTK C++开发示例程序;
使用C++ 和VTK绘制一个多面锥体。

环境说明
系统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最低版本, 如果版本低于3.20, 则报错project(vtk1) # 设置工程名
# 设置C++标准
set(CMAKE_CXX_STANDARD 14)# 设置MSVC编译器使用UTF-8编码
if(MSVC)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
endif()
# 输出路径
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
set(VTK_DIR "E:/lib/VTK/lib/cmake/vtk-9.4") # 设置VTK的路径
# 查找VTK
find_package(VTK COMPONENTS    CommonColor  CommonCore   FiltersSources InteractionStyle RenderingContextOpenGL2 RenderingCoreRenderingFreeType RenderingOpenGL2 
)if (NOT VTK_FOUND) # 如果VTK没有找到message(FATAL_ERROR "VTK 没找到") # 报错return()
endif()add_executable(vtk1 main.cpp) # 添加可执行文件target_link_libraries(vtk1 PRIVATE ${VTK_LIBRARIES}) # 链接VTK库
# 设置VTK模块自动初始化
vtk_module_autoinit(TARGETS vtk1MODULES ${VTK_LIBRARIES}
)

3. main.cpp文件

#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkConeSource.h>#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2); // 这个宏用于初始化渲染器
VTK_MODULE_INIT(vtkInteractionStyle); // 这个宏用于初始化交互样式int main(int, char*[])
{// 创建圆锥体数据源auto coneSource = vtkSmartPointer<vtkConeSource>::New(); coneSource->SetHeight(3.0); // 设置圆锥体的高度coneSource->SetRadius(1.5); // 设置圆锥体的半径coneSource->SetResolution(6); // 设置圆锥体的分辨率,即圆锥体的面数// 创建映射器和演员auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(coneSource->GetOutputPort()); // 设置输入数据auto actor = vtkSmartPointer<vtkActor>::New(); // 创建演员对象,并将其与映射器关联起来。actor->SetMapper(mapper);// 创建渲染器和窗口auto renderer = vtkSmartPointer<vtkRenderer>::New();  // 创建渲染器auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); // 创建渲染窗口renderWindow->SetWindowName("VTK最简单示例"); // 设置渲染窗口的标题renderWindow->AddRenderer(renderer); // 将渲染器添加到渲染窗口renderWindow->SetSize(800, 600); // 设置渲染窗口的大小// 设置交互器auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();interactor->SetRenderWindow(renderWindow);// 添加演员到场景renderer->AddActor(actor);renderer->SetBackground(0.2, 0.3, 0.4);  // 设置背景颜色// 启动渲染循环renderWindow->Render(); // 渲染窗口interactor->Start(); // 启动交互器,进入事件循环。等待用户进行操作(例如旋转、缩放等)return EXIT_SUCCESS;
}

4. 演示效果

在这里插入图片描述


https://dhexx.cn/news/show-5496891.html

相关文章

python每日一练

题目一 输入10个整数,输出其中不同的数,即如果一个数出现了多次,只输出一次(要求按照每一个不同的数第一次出现的顺序输出)。 解题 错误题解 a list(map(int,input().split())) b [] b.append(a[i]) for i in range(2,11):if a[i] not in b:b.append(a[i]) print(b)但是会…

第七届浙江省大学生网络与信息安全竞赛决赛Unserialize深度解析 1.0

花还会重新开&#xff0c;不同的春来了又来。 - 2025.4.11 0x01 声明 仅作为个人学习使用&#xff0c;仅供参考&#xff0c;欢迎交流 可能是新生赛缘故&#xff0c;突发奇想&#xff0c;想好好梳理此题&#xff0c;顺便写成参考&#xff0c;于是有了这篇文章 当然很多理解可…

记录一次TDSQL网关夯住故障

环境信息&#xff1a; TDSQL-MySQL同城双中心集群&#xff0c;集中式实例&#xff0c;一主三副本&#xff0c;每个中心两个db副本&#xff0c;每个中心一个VIP&#xff0c;V每个IP通过硬件做负载均衡指向该中心两个proxy&#xff0c;操作系统为麒麟v10 arm。 故障描述&#xf…

案例-索引对于并发Insert性能优化测试

前言 最近因业务并发量上升,开发反馈对订单表Insert性能降低。应开发要求对涉及Insert的表进行分析并提供优化方案。   一般对Insert 影响基本都在索引,涉及表已按创建日期做了分区表,索引全部为普通索引未做分区索引。 优化建议: 1、将UNIQUE改为HASH(64) GLOBAL IND…

【Python爬虫】简单案例介绍4

本文继续接着我的上一篇博客【Python爬虫】简单案例介绍3-CSDN博客 目录 3.4 完整代码 3.4 完整代码 此小节给出上述案例的完整代码&#xff0c; # encodingutf-8 import re, json, requests, xlwt, csv import pandas as pd from lxml import etree from bs4 import Beauti…

视觉slam框架从理论到实践-第一节绪论

从opencv的基础实现学习完毕后&#xff0c;接下来依照视觉slam框架从理论到实践&#xff08;第二版&#xff09;的路线进行学习&#xff0c;主要以学习笔记的形式进行要点记录。 目录 1.数据里程计 2.后端优化 3.回环检测 4.建图 在视觉SLAM 中整体作业流程可分为&#xff1…

Leetcode——137 260找出只出现一次的数

文章目录 找出只出现一次的数引入Leetcode 260Leetcode 137 找出只出现一次的数 对于数组中有一类题&#xff0c;即某些数据在数组中只出现一遍&#xff0c;需要我们找出&#xff0c;今天我们来看看这个类型的题。 引入 想必大家应该见过这么一道题&#xff1a; 现给定一个数…

【MySQL数据库】InnoDB存储引擎:逻辑存储结构、内存架构、磁盘架构

逻辑存储结构 一个数据库是由一张张表组成的&#xff0c;而表中是由一个个段构成的&#xff0c;一个段是由区构成的&#xff0c;区空间是由页构成的&#xff0c;页是行构成的。 ①表空间&#xff1a;.ibd文件&#xff0c;一个mysql实例可以对应多个表空间&#xff0c;用于存储…

Windows 系统如何使用Redis 服务

前言 在学习过程中&#xff0c;我们长期接触到的是Mysql 关系型数据库&#xff0c;也是够我们平时练习项目用的&#xff0c;但是后面肯定会有大型数据的访问就要借助新的新的工具。 一、什么是Redis Redis&#xff08;Remote Dictionary Server&#xff09;是一个基于内存的 键…

MuJoCo 机械臂关节路径规划+轨迹优化+末端轨迹可视化(附代码)

视频讲解&#xff1a; MuJoCo 机械臂关节路径规划轨迹优化末端轨迹可视化&#xff08;附代码&#xff09; 今天的实验测试目标就是随机给定两个关节空间位置&#xff0c;使用pyroboplan进行路径规划和轨迹优化&#xff0c; 完整代码仓库&#xff1a;https://github.com/Litchi…