更多精彩内容 |
---|
👉内容导航 👈 |
👉VTK开发 👈 |
1. 概述
此示例演示如何读取文件,然后将其写入不同类型的文件。
在此示例中,我们读取一个 vtp 文件并写入一个 ply 文件,但只需更改实例化的 reader/writer 类,就可以实现不同的行为。
VTK是一个开源的、跨平台的、用于三维计算机图形学、图像处理和可视化的软件系统。
VTP(VTK PolyData)文件是一种用于存储三维几何数据的文件格式,它通常与VTK(Visualization Toolkit)库一起使用。
VTP文件主要存储多边形数据,包括顶点、面片、颜色、纹理坐标等信息。
PLY(Polygon File Format或Stanford Triangle Format)是一种用于存储三维多边形模型的文件格式。
PLY文件可以包含顶点、面片、颜色、法线、纹理坐标等多种信息。PLY格式最初由斯坦福大学开发,现在已被广泛用于三维图形和计算机视觉领域。
- VTP文件:主要用于存储与VTK库相关的三维多边形数据,广泛应用于科学计算和工程设计领域。
- PLY文件:一种通用的三维多边形文件格式,支持多种数据格式,广泛用于三维扫描、三维打印和计算机图形学等领域。
vtkXMLPolyDataReader
功能
- 数据读取:专门用于读取VTK的XML格式多边形数据文件(
.vtp
文件)。- 数据转换:将XML文件中存储的
vtkPolyData
结构(如点、线、多边形、顶点等几何拓扑数据)转换为内存中的VTK数据结构。关键特性
- 基于XML:支持VTK的XML数据格式,这种格式具有可读性好、扩展性强、支持并行IO等优点。
- 高效解析:利用VTK的XML解析器,可处理大规模数据集。
- 元数据支持:可读取文件中的字段数据(如标量、向量、张量等属性)。
vtkPLYWriter
功能
- 数据写入:将
vtkPolyData
对象写入斯坦福PLY格式文件(.ply
文件),常用于3D模型存储。- 格式支持:支持ASCII和二进制格式,默认使用二进制以减小文件体积。
关键特性
- 属性保留:可导出顶点颜色、法线、纹理坐标等附加属性。
- 兼容性:PLY是通用的3D模型格式,支持MeshLab、Blender等软件直接打开。
- 配置灵活:通过API控制输出格式(如是否包含法线、颜色等)。
演示使用的vtp文件下载地址
在线加载PLY文件地址:用于在线查看 3D PLY 文件的免费在线工具 - ImageToStl
环境 | 说明 |
---|---|
系统 | ubuntu22.04、windows11 |
cmake | 3.22、3.25 |
Qt | 5.14.2 |
编译器 | g++11.4、msvc2017 |
VTK | 9.4.1 |
2. CMake链接VTK
cmake_minimum_required(VERSION 3.20 FATAL_ERROR) # 设置CMake最低版本
project(vtk2) # 设置项目名称
# 查找VTK库
find_package(VTK COMPONENTS
CommonCore
IOPLY
IOXML
)
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-14 20:40:25
* 开发者: MHF
* 邮箱: 1603291350@qq.com
* 功能:
*********************************************************************************/
#include<iostream>
#include <vtkNew.h>
#include <vtkPLYWriter.h> // 读取ply文件的头文件
#include <vtkXMLPolyDataReader.h> // 读取xml文件的头文件
#include <string>
using namespace std;
int main()
{
string inFile = "E:/Code/C++/vtk1/bin/Bunny.vtp"; // 输入文件路径
string outFile = "E:/Code/C++/vtk1/bin/Bunny.ply"; // 输出文件路径
vtkNew<vtkXMLPolyDataReader> reader; // 读取xml文件
reader->SetFileName(inFile.c_str()); // 设置输入文件路径
reader->Update(); // 更新读取器
vtkNew<vtkPLYWriter> writer; // 写入ply文件
writer->SetFileName(outFile.c_str()); // 设置输出文件路径
writer->SetInputConnection(reader->GetOutputPort()); // 设置输入连接
writer->Write(); // 写入文件
cout << "转换完成" << endl; // 输出提示信息
return 0;
}
4. 演示效果
- 将转换后的文件拖进用于在线查看 3D PLY 文件的免费在线工具 - ImageToStl查看。