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

包头正大光电 做网站网站网页设计平台

包头正大光电 做网站,网站网页设计平台,域名注册和网站设计服务,英文网站怎么建文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 具有透明纹理的球体切割。 该代码实现了一个使用 VTK 库进行三维可视化渲染的示例,主要包含两个核心功能…

文章目录

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


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

1. 概述

具有透明纹理的球体切割。

该代码实现了一个使用 VTK 库进行三维可视化渲染的示例,主要包含两个核心功能:

一、基础球体渲染

  1. 创建白色球体
    • 半径 0.5 的小球体
    • 使用 vtkSphereSource 生成高精度网格(经纬分辨率 100)
    • 通过 vtkPolyDataMapper 映射几何数据
    • 渲染为 MistyRose 颜色(浅粉色)
  2. 交互式窗口
    • 创建 640x480 渲染窗口
    • 设置 SlateGray 石板灰背景色
    • 集成交互器支持用户视角操作

二、高级纹理映射

  1. 外层球体构造
    • 半径 1.0 的透明球体(包裹内层小球)
    • 使用vtkImplicitTextureCoords实现:
      • 通过 vtkPlanes 定义两个切割平面(XY平面和YZ平面)
      • 结合 vtkStructuredPointsReader 读取 texThres.vtk 纹理数据
  2. 特殊纹理效果
    • 禁用纹理插值(保持锐利边缘)
    • 关闭纹理重复模式
    • 最终呈现 LightSalmon 颜色(浅橙红色)的纹理效果

三、可视化效果

双球嵌套结构呈现:

  • 内层:纯色实体球体
  • 外层:带平面切割效果的透明纹理球体
  • 通过交互器可旋转观察三维效果
环境说明
系统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
CommonDataModel
FiltersSources
FiltersTexture
IOLegacy
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-23 14:07:19
* 开发者:   MHF
* 邮箱:     1603291350@qq.com
* 功能:     
*********************************************************************************/
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkDataSetMapper.h>
#include <vtkDoubleArray.h>
#include <vtkImplicitTextureCoords.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPlanes.h>
#include <vtkPoints.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSphereSource.h>
#include <vtkStructuredPointsReader.h>
#include <vtkTexture.h>using namespace std;int main()
{vtkNew<vtkNamedColors> colors; //创建颜色对象vtkNew<vtkSphereSource> sphere1; //创建一个球体sphere1->SetRadius(0.5);         //设置球体的半径sphere1->SetPhiResolution(100);   //设置球体的纬度分辨率,数值越大,球体的纬度越多,球体越圆润sphere1->SetThetaResolution(100); //设置球体的经度分辨率vtkNew<vtkPolyDataMapper> mapper1; //创建一个映射器mapper1->SetInputConnection(sphere1->GetOutputPort()); //设置映射器的输入vtkNew<vtkActor> actor1; //创建一个演员actor1->SetMapper(mapper1); //设置演员的映射器actor1->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData()); //设置演员的颜色vtkNew<vtkSphereSource> sphere2; //创建一个球体sphere2->SetRadius(1.0);         //设置球体的半径sphere2->SetPhiResolution(100);   //设置球体的纬度分辨率sphere2->SetThetaResolution(100); //设置球体的经度分辨率vtkNew<vtkPlanes> planes; //创建一个平面double pts[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; //设置平面的点vtkNew<vtkPoints> points; //创建点对象points->SetNumberOfPoints(2); //设置点的数量points->SetPoint(0, pts); //设置点的坐标points->SetPoint(1, pts + 3); //设置点的坐标double nrms[6] = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0}; //设置平面的法向量vtkNew<vtkDoubleArray> normals; //创建一个双精度数组normals->SetNumberOfComponents(3); //设置数组的组件数,即点的维度normals->SetNumberOfTuples(2); //设置数组的元组数,即点的数量normals->SetTuple(0, nrms); //设置数组的元组normals->SetTuple(1, nrms + 3); //设置数组的元组planes->SetPoints(points); //设置平面的点planes->SetNormals(normals); //设置平面的法向量vtkNew<vtkImplicitTextureCoords> tcoords; //创建一个隐式纹理坐标节点tcoords->SetInputConnection(sphere2->GetOutputPort()); //设置输入连接tcoords->SetRFunction(planes); //设置R函数vtkNew<vtkDataSetMapper> mapper2; //创建一个数据集映射器mapper2->SetInputConnection(tcoords->GetOutputPort()); //设置映射器的输入vtkNew<vtkStructuredPointsReader> reader; //创建一个结构化点读取器,专用于读取 .vtk 格式文件中存储的 vtkStructuredPoints 数据集支持旧版 VTK 文件格式(非 XML 格式)reader->SetFileName("e:/lib/VTK/vtk-data/Data/texThres.vtk"); //设置文件名vtkNew<vtkTexture> texture; //创建一个纹理texture->SetInputConnection(reader->GetOutputPort()); //设置纹理的输入texture->InterpolateOff(); //设置插值,关闭插值可以减少纹理的模糊效果。默认情况下,纹理插值为开(On),这意味着在渲染时会对纹理进行平滑处理以避免锯齿状边缘。如果你希望保持原始像素边界,可以将此选项设置为关(Off)。texture->RepeatOff(); //设置重复关闭vtkNew<vtkDataSetMapper> mapper3; //创建一个数据集映射器mapper3->SetInputConnection(tcoords->GetOutputPort()); //设置映射器的输入vtkNew<vtkActor> actor2; //创建一个演员actor2->SetMapper(mapper2); //设置演员的映射器actor2->SetTexture(texture); //设置演员的纹理actor2->GetProperty()->SetColor(colors->GetColor3d("LightSalmon").GetData()); //设置演员的颜色vtkNew<vtkRenderer> renderer; //创建一个渲染器renderer->AddActor(actor1); //添加演员renderer->AddActor(actor2); //添加演员renderer->SetBackground(colors->GetColor3d("SlateGray").GetData()); //设置背景颜色vtkNew<vtkRenderWindow> renderWindow; //创建一个渲染窗口renderWindow->AddRenderer(renderer); //添加渲染器renderWindow->SetSize(640, 480); //设置窗口大小vtkNew<vtkRenderWindowInteractor> renderWindowInteractor; //创建一个渲染窗口交互器renderWindowInteractor->SetRenderWindow(renderWindow); //设置渲染窗口renderWindow->Render(); //渲染renderWindowInteractor->Start(); //开始交互return 0;
}

4. 演示效果

在这里插入图片描述



http://www.dtcms.com/wzjs/585217.html

相关文章:

  • 绍兴做微网站个人介绍网页
  • 3g门户网站网站制作过程合理的步骤是
  • 建设银行网站 无法访问郑州做网站优化运营商
  • 游戏优化大师官方下载外贸seo培训
  • 网站如何做定级备案网站做系统下载
  • 软件公司网站模板下载龙岩网站建设亿网行
  • 长沙找人做网站wordpress 写入权限
  • 建站技术建立一个网站怎么做
  • 潍坊尚呈网站建设公司怎么样深圳代做网站后台
  • 江苏省住房和城市建设厅网站wordpress 3.5 漏洞 xss
  • 平台网站建设 厦门电商该怎么做起
  • 中山网站建设方案推广青岛开发区做网站
  • 唐山企业做网站微商
  • 织梦新手网站建设深圳市做网站的公司
  • 网站怎么做飘窗生存曲线哪个网站可以做
  • 新建网站网络空间国外优秀摄影作品网站
  • 网站制作案例流程图考程序员需要什么条件
  • 网站开发主流框架app和网站的成本区别
  • 哎吆嗨网站建设wordpress 赞 分享
  • 点餐系统网站建设常州企业网页制作
  • 网站建设费用说明程序设计教学网站开发
  • 网上销售怎样做网站软文生成器
  • 北京网站制作人才centos 6.8 wordpress
  • 比选三家网站建设公司简易平面画图
  • 建设银行网络连接异常网站服务器失去响应深圳外贸网站建设哪家好
  • 专业建设网站的公司为什么wordpress主题中字体不统一
  • 用户体验不好的网站wordpress自动标签添加内链插件
  • 响应式网站开发设计师简洁企业网站源码
  • 常平做网站营销型 展示类网站
  • 原创手做网站店铺推广软文范例