VTK纹理映射之vtkTransformTextureCoods

VTK将二维图像向三维空间中无参数化的曲面表面进行纹理映射(含代码) 而对于简单的参数模型,可以方便地建立模型与纹理空间的映射关系,例如。,例如,如果要实现重复纹理,只需通过 vtkTransformTextureCoords::SetScale()将纹理坐标每个方向进行放大,如由[0,1]变换到[0,101即可。而根据图形学三维空间变换容易实现模型空间到屏幕空间的变换,因此最终显示在计算机屏幕上的图像即是纹理映射后的结果。实现纹理映射主要是建立纹理空间与模型空间、模型空间与屏幕空间之间的映射关系。的纹理映射技术,通常需要将纹理空间到模型空间的映射分解为两。 阅读详情
本文介绍vtkTransformTextureCoods类。

纹理坐标系

  在《VTK纹理映射》文中,我们其实用的都是2D纹理,使用一张图片。它的坐标系是(s,t),即前面提到的u-v。

这里写图片描述

也可以有3D纹理,它被认为是多个2D Texture。,坐标系s-t-r。

这里写图片描述

vtkTransformTextureCoods

  vtkTransformTextureCoods类用来变换纹理坐标的,包括缩放、旋转和平移。即它是一个操作纹理坐标的filter,任何数据集都可以作为输入,同时输出和输入类型一直的数据集。被操作的纹理坐标被看作r-s-t,如上图所示。如果纹理映射是二维的,t 坐标就会被忽略。

vtkSmartPointer<vtkBMPReader> texReader =
        vtkSmartPointer<vtkBMPReader>::New();
    texReader->SetFileName("E:/TestData/masonry.bmp");

    vtkSmartPointer<vtkTexture> texture =
        vtkSmartPointer<vtkTexture>::New();
    texture->SetInputConnection(texReader->GetOutputPort());

    vtkSmartPointer<vtkXMLPolyDataReader> modelReader =
        vtkSmartPointer<vtkXMLPolyDataReader>::New();
    modelReader->SetFileName("E:/TestData/cow.vtp");

    vtkSmartPointer<vtkTextureMapToCylinder> texturemap =
        vtkSmartPointer<vtkTextureMapToCylinder>::New();
    texturemap->SetInputConnection(modelReader->GetOutputPort());

    vtkSmartPointer<vtkTransformTextureCoords> transformTexture =
        vtkSmartPointer<vtkTransformTextureCoords>::New();
    transformTexture->SetInputConnection(texturemap->GetOutputPort());
    transformTexture->SetScale(1, 1, 0);  //由于是二维映射,所以第三个参数r-Axis是不起作用的。

    vtkSmartPointer<vtkPolyDataMapper> mapper =
        vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputConnection(texturemap->GetOutputPort());

    vtkSmartPointer<vtkActor> actor =
        vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);
    actor->SetTexture(texture);

将actor加入自己的vtkRenderer实例中,运行结果:

这里写图片描述

验证修改r-axis参数,不起作用:

这里写图片描述

实现重复纹理,将纹理坐标s、t方向进行放大,有[0,1]变换成[0,5]:

这里写图片描述

VTK渲染raw格式的三维点云数据,并纹理贴图(纹理映射) #include<vtkSmartPointer.h> #include<vtkRenderWindow.h> #include<vtkRenderer.h> #include<vtkRenderWindowInteractor.h> #include<vtkInteractorStyleTrackballCamera.h> #incl... 阅读详情

相关推荐

vtkTransform 空间变换

图像处理与VTK/ITK文章列表 VTK笔记——空间几何变换(Transform),平移、旋转和缩放 其中注意,在进行旋转和缩放操作时,都需要先将该polydata整体平移回它的中心位置,然后再进行旋转和缩放操作,最后再将其移回到原来的位置处。 vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTra...

C++ 爱好者 make_it_simple888 2665

VTK笔记——空间几何变换(Transform),平移、旋转和缩放

先看一张图,下图是一个三维的Cow, 试想在使用中,是否会遇到如下场景? 1.将Cow移动到某个位置 2.旋转Cow到背面 3.想看清楚Cow面部的细节,改变它大小等等 可能你会说,这还不简单,通过操作相机就好了。操作相机,使得相机的空间位置发生了变化,但对三维物体的空间位置并没有改变,要想改变模型的空间位置,就需要对模形本身做空间变换。 空间变换的基础知识 变换矩阵(Trans...

Andy的专栏 3万+

VTK-API_23:vtkTransform 详解

是VTK中用于描述和管理几何变换的类。它继承自,能够表示平移、旋转、缩放、错切以及它们的组合。可以用来构造4x4变换矩阵(齐次坐标矩阵)支持将变换应用到点、向量、法线等几何数据可以进行变换的组合(先旋转再平移等)变换是以矩阵的形式存储和操作的。

yumeiguo的博客 200

vtkTransform的一点理解

vtkAbstractTransform是所有几何变换类的基类, 提供了管线机制。基类中包括几个主要的变换函数如下图所示,用来对点、点的法向量、点的向量进行变换。

ljy338的博客 1100

VTK纹理映射体绘制_三维纹理映射

用VS2013配置PCL后可以运行此程序,程序有PCL的属性列表,改一下就好,此程序为VTK的纹理映射体绘制_三维纹理映射,内含vtk文件

制造业批次管理中双计量单位动态转换的实践指南

本文详细介绍了制造业批次管理中双计量单位动态转换的实践指南,特别是在SAP系统中的配置与操作步骤。通过实际案例展示了如何解决采购与生产部门计量单位不一致的问题,提升物料管理效率。重点讲解了批次特性配置、移动类型调整及常见问题排查方法,适用于金属加工、化工等多个行业。

weixin_29228203的博客 159

VTK 中的坐标变换 | 基础

VTK 中的坐标变换 | 基础

ProgramNovice的博客 1556

硬件基础(4):(6)高精度ADC设计中模拟地与数字地的划分与连接

在实际 PCB 设计中,**接地与布线**对于获得干净的参考电压和高精度 ADC 测量至关重要。下面详细阐述**如何在硬件层面减少数字噪声耦合到模拟电路、保障参考电压的稳定性**。

FCZlll的博客 2646

VTK 模型的旋转与平移

当从外界读入STL等三维模型时,其会按照它内部的坐标位置进行显示。因此它的位置和大小是确定的。但是在实际应用中,有可能需要人为地对这个模型在空间中进行旋转、平移或缩放等操作。VTK中有许多和旋转、平移相关的函数,下面一一进行测试。 RotateX、RotateY、RotateZ(绕自身坐标轴旋转)   Rotate the Prop3Din degreesabout the X/Y/Z axis using theright hand rule. The axis isthe Prop3D's X...

laziji的专栏 6355

神经网络基础-从零开始搭建一个神经网络

人工神经网络(Articial Neural Network,简写为ANN)也称为神经网络(NN),是一种模仿生物神经网络和功能的计算模型,人脑可以看做是一个生物神经网络,由众多的神经元连接而成,各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通过轴突输出信号。人工神经网络也是类似,通过模仿人脑的“学习机器”,通过不断“看”数据(比如图片,数字),自己总结规律,最终学会预测(比如分类图片)在深度学习中,损失函数是用来衡量模型参数的质量的函数,衡量的方式是比较网络输出和真实输出的差异。

Zach的博客 4014

AltiumDesigner相同模块复用操作

AltiumDesigner相同模块复用操作框选已布局好的A电路,作为复用模块创建Room同样的操作,框选C电路,然后也创建Room查看A电路的Chanel Offset显示设置复制Channel Offset查看B电路的Channel Offset复制A电路的Channel Offset到C电路Room格式的复制 框选已布局好的A电路,作为复用模块 创建Room 同样的操作,框选C电路,然后也创建Room 查看A电路的Chanel Offset 框选A模块的,然后点右下角的菜单——PCB——PCB

weixin_41947101的博客 5963

VTK修炼之道59:图形基本操作进阶_纹理映射

1.纹理映射 纹理映射是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。纹理生成过程实质上是将所定义的

沈春旭的博客 3392

批量读取_MCGS触摸屏如何实现批量读取modbus数据的方法?

前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。一、工具1.modsim:仿真PLC或者第三方设备。2.MCGS组态软件3.串口软件:在电脑中生成两不...

weixin_32511509的博客 8161

VTK颜色映射处理

颜色查找表我们可以手动创建一个颜色查找表,如果没有创造的话,贴心的vtk会自动为我们生成一个默认的颜色查找表,颜色查找表中允许我们自由设定颜色值。vtkLookupTable可以帮助我们来完成这个工作,同时,设定了颜色数量时,SetTabValue()方法可以将颜色值插入到指定的位置。另外,SetScalarRange()告诉我们采取什么方法映射,标量值大于最大值的将被归为最大值,标量值小于最小值...

sinat_23619409的博客 1万+

[明道云] -基础教学1- 创建第一个工作表:从 0 到实用

明道云工作表相当于数据库表,是存储业务数据的核心组件。创建工作表主要有两种方式:1)从空白新建,通过添加字段(最多200个)、设置属性、配置表单样式;2)从Excel导入,需选择sheet、配置字段映射。创建后系统自动生成默认视图,支持多种视图形式(看板/日历等)。建议设置合适的标题字段和关联关系,初学者可在一小时内完成基础应用搭建。后续可扩展权限控制、工作流自动化等功能。

每日出拳老爷子的博客 556

Gemini-CLI 登录失败?解决报错 This account requires setting the GOOGLE_CLOUD_PROJECT env var 的问题

🚀 刚装好 `gemini-cli` 就遇到登录拦路虎?别慌!本文带你深入解析 `GOOGLE_CLOUD_PROJECT` 环境变量错误的根源,并提供超详细的图文解决方案,让你丝滑开启 AI 命令行之旅!快来抄作业!✍️

XiaoqiangClub的博客 5140

VTK transform空间变换

vtk transform 矩阵变换顺序

ahy86045的博客 612

【docker】第10篇 Failed with result ‘exit-code和Start request repeated too quickly和Failed to start Docker

【docker】解决 Failed with result 'exit-code'和Start request repeated too quickly和Failed to start Docker。

Fanjufei的博客 6819

VTK纹理映射

本文介绍VTK中纹理映射。 纹理映射  纹理映射是创建逼真效果的强大的图形工具,其原理是渲染时把二维的图像“贴”到物体的表面啥昂,根据二维图像渲染出丰富多彩的效果,所有也叫纹理贴图。纹理映射需要三个要素:带贴图的表面、纹理映射以及纹理坐标。其中纹理映射在VTK中就是vtkImageData的数据集,而纹理坐标则用于控制纹理图在表面的位置,作为被贴对象数据的属性。vtkSmartPointer<vtk

阿兵-AI医疗的专栏 5377

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

vtk中的纹理贴图详解

vtk中的纹理贴图要用 vtkTextureMapToPlane vtkTextureMapToSphere  vtkTextureMapToCylinder与 vtkTransformTextureCoords 配合使用才能达到最好的效果。目前vtk只支持2维纹理,3维纹理似乎并不支持。那么vtk的纹理是如何工作的呢??那么我们通过自己的一段代码来解释一下:我们用vtk的tcl来解释代码了。首先

yqxx的专栏 8898

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[实验]用VTK给立方体贴纹理

今天需要用vtk实现贴图功能,搜遍网上居然都没有找到很好的学习资料,只是找到一篇写于07年的“vtk中的纹理贴图详解”里面有一个例子,是在一个平面上贴图,但我要实现的是三维空间中的贴图,类似于在一个立方体上面贴图,有参考的例子了,开始实验: 1、VTK纹理贴图基础: 见vtk中的纹理贴图详解(点击进入)     2、实验开始:   预定义

3742

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VtkTransform 和 SetPosition的区别

想要对原始数据进行位置操作,一定要搞清楚VtkTransform 和 SetPosition的区别啊!!!SetPosition这是改变Actor的显示位置,原始数据的位置是不变的,而VtkTransform是对原始数据进行平移,旋转的,是改变原始数据位置的,切记别入坑。 #include <vtkSmartPointer.h> #include <vtkSphereSou...

AIGC Studio:分享AIGC前沿知识和好玩应用,公众号同名。 3534

Python调用vtk库和numpy绘制自定义曲面,并进行纹理映射

使用vtk库进行自定义曲面的三维绘制,并进行纹理映射,适用于已知曲面公式的三维物体的建模和纹理映射。

m0_57315535的博客 3265

vtk用户指南 第五章 可视化技术

在前一章中介绍了一些渲染和交互数据的基本工具。在本章中,我们将向您展示各种可视化技术。这些技术(作为过滤器实现)根据它们操作的数据类型进行组织。一些过滤器是通用的,可以应用于任何类型的数据——那些接受vtkDataSet类(或任何子类)输入的过滤器。许多过滤器更专门于它们接受的输入类型(例如,vtkPolyData)。有一类过滤器——那些接受vtkImageData类型输入的过滤器(或其过时的子类vtkStructuredPoints)——在本章中没有提到。相反,这种类型的过滤器将在下一章(第103页的“图

qq_39966730的博客 1661

vtkTransform实例 1

1. 4*4矩阵类vtkMatrix4x4   接口函数:void SetElement(int i, int j, double value),i行、j列的值为value 1 #ifndef INITIAL_OPENGL 2 #define INITIAL_OPENGL 3 #include <vtkAutoInit.h> 4 VTK_MODU...

weixin_30681615的博客 403

VTK之基于Qt的VTK应用程序

  友好的用户图形界面是应用程序必须的因素之一,对于VTK应用程序也是如此。VTK附带的程序示例大多数是基于控制台的,但是VTK也可以与很多流行的GUI开发工具整合。本文介绍如何把VTK(7.1.0)和GUI开发工具Qt(5.x)进行整合。 VTK之基于Qt的VTK应用程序   Qt是跨平台的GUI开发工具,VTK也提供了大量的类支持Qt。VTK工程是用CMake进行管理的,而Qt自身有qma...

阿兵-AI医疗的专栏 1万+
上一篇: VTK基本概念之主要对象
下一篇: VTK纹理映射
暮-成-雪
博客等级 码龄12年 5328粉丝 319原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值