做seo推广手机网站,福鼎整站优化,友言 wordpress,wordpress中文菜单文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容#x1f449;内容导航 #x1f448;#x1f449;VTK开发 #x1f448; 1. 概述 将图片纹理贴到球体上#xff0c;实现3D地球的效果。 该代码使用了 VTK (Visualization Toolkit) 库来创建一个纹理… 文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容内容导航 VTK开发 1. 概述 将图片纹理贴到球体上实现3D地球的效果。 该代码使用了 VTK (Visualization Toolkit) 库来创建一个纹理化的球体并将其渲染到窗口中。以下是代码的主要功能概述 加载纹理图像 通过 vtkImageReader2Factory 和 vtkImageReader2 加载指定路径的纹理图像文件如 earthmap2k.jpg。将图像数据传递给 vtkTexture 对象用于生成纹理。 创建球体几何体 使用 vtkTexturedSphereSource 创建一个球体几何体。设置球体的纬度和经度分辨率SetPhiResolution 和 SetThetaResolution。 纹理映射 使用 vtkTransformTextureCoords 对球体的纹理坐标进行变换目前未启用平移功能。将纹理映射到球体表面。 渲染设置 创建 vtkPolyDataMapper 将几何体数据映射为图形数据。创建 vtkActor将纹理和几何体绑定到一起。创建 vtkRenderer将演员Actor添加到渲染器中并设置背景颜色为黑色。 窗口和交互 创建 vtkRenderWindow用于显示渲染结果。创建 vtkRenderWindowInteractor允许用户与渲染窗口进行交互。设置窗口大小为 600x600并命名为 “TexturedSphere”。 渲染与交互 调用 Render() 方法渲染场景。调用 Start() 方法启动交互模式允许用户旋转、缩放和移动视图。 演示文件下载地址 环境说明系统ubuntu22.04、windows11cmake3.22、3.25Qt5.14.2编译器g11.4、msvc2017VTK9.4.1
纹理图片
2. CMake链接VTK
cmake_minimum_required(VERSION 3.20 FATAL_ERROR) # 设置CMake最低版本
project(vtk2) # 设置项目名称
# 查找VTK库
find_package(VTK COMPONENTS
CommonColor
CommonCore
FiltersSources
FiltersTexture
IOImage
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-22 22:05:38
* 开发者 MHF
* 邮箱 1603291350qq.com
* 功能
*********************************************************************************/
#includeiostream
#include vtkActor.h
#include vtkCamera.h
#include vtkImageReader.h
#include vtkImageReader2Factory.h
#include vtkNamedColors.h
#include vtkNew.h
#include vtkPolyDataMapper.h
#include vtkProperty.h
#include vtkRenderWindow.h
#include vtkRenderWindowInteractor.h
#include vtkRenderer.h
#include vtkSmartPointer.h
#include vtkTexture.h
#include vtkTextureMapToSphere.h
#include vtkTexturedSphereSource.h
#include vtkTransformTextureCoords.h
using namespace std;int main()
{// string fileName e:/lib/VTK/vtk-data/Data/earth.ppm;string fileName e:/lib/VTK/vtk-data/Data/earthmap2k.jpg;// string fileName e:/lib/VTK/vtk-data/Data/mercurymap.jpg;vtkNewvtkTexturedSphereSource sphere; //创建一个球体sphere-SetPhiResolution(100); //设置球体的纬度分辨率sphere-SetThetaResolution(100); //设置球体的经度分辨率vtkNewvtkImageReader2Factory readerFactory; //创建一个图像读取器工厂vtkSmartPointervtkImageReader2 reader; //创建一个图像读取器reader readerFactory-CreateImageReader2(fileName.c_str()); //创建一个图像读取器reader-SetFileName(fileName.c_str()); //设置图像文件名vtkNewvtkTexture texture; //创建一个纹理texture-SetInputConnection(reader-GetOutputPort()); //设置纹理的输入连接texture-InterpolateOn(); //开启纹理插值vtkNewvtkTransformTextureCoords transformTexture; //创建一个纹理坐标变换器transformTexture-SetInputConnection(sphere-GetOutputPort()); //设置输入连接
#if 0// 设置纹理坐标在 U/V/W 三个方向上的平移量double translate[3] {0, 0, 0.0};transformTexture-SetPosition(translate); //设置位置
#endifvtkNewvtkPolyDataMapper mapper; //创建一个多边形数据映射器mapper-SetInputConnection(transformTexture-GetOutputPort()); //设置输入连接vtkNewvtkActor actor; //创建一个演员actor-SetMapper(mapper); //设置映射器actor-SetTexture(texture); //设置纹理vtkNewvtkNamedColors colors; //创建一个颜色vtkNewvtkRenderer renderer; //创建一个渲染器renderer-AddActor(actor); //添加演员renderer-SetBackground(colors-GetColor3d(Black).GetData()); //设置背景颜色vtkNewvtkRenderWindow renderWindow; //创建一个渲染窗口renderWindow-AddRenderer(renderer); //添加渲染器renderWindow-SetWindowName(TexturedSphere); //设置窗口名称renderWindow-SetSize(600, 600);vtkNewvtkRenderWindowInteractor renderWindowInteractor; //创建一个渲染窗口交互器renderWindowInteractor-SetRenderWindow(renderWindow); //设置渲染窗口renderWindow-Render(); //渲染renderWindowInteractor-Start(); //开始交互return 0;
}4. 演示效果