图形处理之纹理映射自定义Filter

OpenGL纹理贴图技术深入指南 纹理坐标也称为UV坐标,是映射纹理图像到3D模型表面的关键数据。UV坐标是一个二维坐标系统,其中U和V分别对应于纹理图像的宽度和高度方向。每个顶点都会有一个对应的UV坐标,定义了纹理在该点的具体位置。程序纹理通常通过算法在运行时生成,允许开发者创建无尽变化的纹理。以下是一些常见的动态纹理生成技术:噪声函数:使用柏林噪声、佩林噪声等生成自然外观的纹理。过程纹理:使用数学公式来描述纹理,如云层、山脉等。动画纹理:通过在纹理坐标中添加时间参数,实现纹理的动态变化。 阅读详情

自定义纹理映射Filter

利用VTK之自定义Filter类(https://blog.youkuaiyun.com/webzhuce/article/details/75905519)来写一个自己定义的纹理映射Filter。仿照vtkTextureMapToCylinder类,将 s设为0,t根据点投影到设置的vector上的位置求得,即(projectstion - minprojecttion) / (maxprojection - minprojecttion)。确保t在0和1之间。主要实现如下:

int vtkTextureMapToIrregularity::RequestData(vtkInformation *vtkNotUsed(request), vtkInformationVector **inputVector, vtkInformationVector *outputVector)
{
	//get th info objects
	vtkInformation* inInfo = inputVector[0]->GetInformationObject(0);
	vtkInformation* outInfo = outputVector->GetInformationObject(0);

	//get the input and output
	vtkDataSet *input = vtkDataSet::SafeDownCast(inInfo->Get(vtkDataObject::DATA_OBJECT()));
	vtkDataSet *output = vtkDataSet::SafeDownCast(outInfo->Get(vtkDataObject::DATA_OBJECT()));

	// First, copy the input to the output as a starting point
	output->CopyStructure(input);

	vtkIdType numPts = input->GetNumberOfPoints();
	vtkIdType ptId;
	if (numPts == 0) {
		vtkErrorMacro(<< "Can't generate texture coordinates without points");
		return 1;
	}
 
	double minProjection = VTK_DOUBLE_MAX;
	double maxProjection = VTK_DOUBLE_MIN;
	for (ptId = 0; ptId < numPts; ptId++) {
		double pos[3];
		input->GetPoint(ptId, pos);
		double projection = vtkMath::Dot(pos, this->Vector);
		if (projection < minProjection)
			minProjection = projection;
		if (projection > maxProjection)
			maxProjection = projection;
	}

	vtkFloatArray* newTCoords = vtkFloatArray::New();
	newTCoords->SetNumberOfComponents(2);
	for (ptId = 0; ptId < numPts; ptId++) {
		double pos[3];
		input->GetPoint(ptId, pos);
		double projection = vtkMath::Dot(pos, this->Vector);
		double t = (projection - minProjection) / (maxProjection - minProjection);
		if (t > 1.0)
			t = 1.0;
		if (t < 0.0)
			t = 0.0;
		newTCoords->InsertNextTuple2(0, t);
	}

	// Update ourselves
	output->GetPointData()->CopyTCoordsOff();
	output->GetPointData()->PassData(input->GetPointData());
	output->GetCellData()->PassData(input->GetCellData());

	output->GetPointData()->SetTCoords(newTCoords);
	newTCoords->Delete();

	return 1;
}

示例演示

我们将一张牛身体的截图作为纹理图片,如下图所示。
这里写图片描述
  和vtkTextureMapToCylinder类,我们自定义的类目的就是给数据的点设置纹理坐标,如下所示。
output->GetPointData()->SetTCoords(tCoords);

运行结果:

这里写图片描述

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

相关推荐

手把手教你用闲置安卓手机+蓝鲸支付,零成本搞定个人项目自动收款(附私有化部署教程)

本文详细介绍了如何利用闲置安卓手机和蓝鲸支付系统,零成本搭建个人项目自动收款解决方案。通过私有化部署教程,读者可以学习到从手机选择、系统配置到支付渠道对接的全流程,实现安全、高效的收款系统,特别适合个人开发者和小型项目使用。

weixin_29597551的博客 334

第01章 数据模型02 vtkPolyData类介绍

通过vtkPolyData,可以方便地管理和操作多边形数据,包括顶点坐标、顶点之间的连接关系以及各种属性数据。这些成员和方法为创建和渲染复杂的几何体提供了强大的支持。

捕鲸叉的专栏 1140

三轴云台稳定控制算法优化实战:从PID到模糊自适应

本文深入探讨了三轴云台稳定控制算法的优化实践,从经典PID控制到模糊自适应算法的进阶应用。通过实战案例和代码示例,详细解析了PID调参技巧、模糊控制实现及多传感器数据融合方法,帮助工程师在复杂环境下提升云台抗干扰能力和响应速度,特别适用于无人机航拍等场景。

green的博客 914

VTK纹理映射

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

阿兵-AI医疗的专栏 5377

ASTRA Toolbox学习笔记-Python

ASTRA Toolbox 是一个用于处理 X 射线相干散射和 X 射线传输成像的开源算法工具箱。本文档概述了该工具箱的基本概念。

hou9021的博客 8261

动态库加载失败终极指南:从libbz2.so.1错误看Linux依赖管理本质

本文以经典的libbz2.so.1加载错误为例,深入剖析Linux动态链接库管理的核心机制。文章不仅提供从ldd检查、符号链接创建到LD_LIBRARY_PATH设置等实战解决方案,更系统性地讲解了动态链接器的寻库路径、版本管理及依赖问题预防策略,帮助开发者从根本上理解和掌握Linux依赖管理本质。

weixin_29212429的博客 447

VTK对属性参数的设置,以及用vtkFieldData存储属性数据的方法

字段的模型是一个m × n的数据值矩阵,其中m是元组的数量,n是组件的数量。)该字段假定是由一个或多个数据数组组成的集合,其中数组中的数据是不同类型的(例如,int, double, char等),并且每个数组中可能有不同数量的组件。注意,假设每个数据数组的长度为“m”(即元组的数量),这通常对应于数据集中的点或单元格的数量。Interpolate使用提供的权重从源数据中选择的元组进行插值,以在目标数据中生成新的元组。vtkFieldData用来存储数据的属性数据,该数据是对拓扑结构和几何结构信息的补充。

weixin_55035144的博客 1416

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2687

VTK笔记-数据集与数据属性-vtkPolyData类

vtkCellArray vtkCellArray将数据集拓扑存储为一个显式连接表,其中列出了构成每个单元的点id。 在内部,连接性表表示为两个数组:偏移量和连接性。偏移量是一个[numCells+1]值的数组,表示连接数组中每个单元格的点开始的索引。最后一个值始终是连接数组的长度。连接数组存储每个单元的点ID列表。因此,对于由两个三角形、一个四边形和一条直线组成的数据集,内部数组将显示如下: Topology: --------- Cell 0: Triangle | point ids: {0,

黑山老妖的博客 4758

RK3588 hdmiout调试(一)

RK3588 hdmiout调试(一)

目前从事linux驱动开发,多交流多学习吧 5171

基于jeecgboot3.9.0的项目管理——项目工作台(二)

基于jeecgboot3.9.0的项目管理——项目工作台(二)

宁波阿成的博客 206

python vtk 画线_关于python:Vtk在将纹理映射到网格时在节点之间插入不正确的颜色...

嗨,我正在尝试使用Mayavi和vtk的Python绑定将纹理映射到3d网格。我正在可视化.obj波前。该obj是一张脸的3D照片。纹理图像是三张2D照片的合成。网格中的每个节点在图像中都有一个(uv)坐标,以定义其颜色。网格的不同区域从图像的不同部分绘制其颜色。为了说明这一点,我用此图像替换了实际的纹理图像:并将其映射到网格。我的问题在鼻子周围被说明。在红色和绿色之间的边界处有蓝色的轮廓。线框模...

weixin_39752352的博客 558

196、NPU的编译器开发:教程与示例代码编写

NPU编译器开发实战指南 摘要:本文分享了NPU编译器开发中的核心挑战与实战经验,通过具体代码示例展示了关键实现技术: 指令生成:必须考虑硬件特性(如地址对齐)和芯片配置抽象化 图优化:重点处理常见冗余结构(Reshape合并、BN融合),并注意数值稳定性 算子拆分:采用分块计算策略适配有限SRAM,需特别注意边界条件处理 内存分配:基于张量使用频率的贪心算法优化SRAM使用效率 文中包含多个真实踩坑案例: DMA地址未对齐导致硬件错误 BN融合时的除零风险 tile边界处理不当引起的精度下降 这些经验为开

m0_50546716的博客 89

图形处理之自定义纹理映射Filter

CMakeLists.txt文件代码如下:CMAKE_MINIMUM_REQUIRED(VERSION 2.8) PROJECT(TextureMap) FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE}) ADD_EXECUTABLE(TextureMap textureMap.cxx vtkTextureMapToIrregularity.

阿兵-AI医疗的专栏 431

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

计算机图形学【纹理映射】

一个简单的纹理映射

在下的博客 585

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【愚公系列】2024年02月 WEBGL专题-纹理

在WebGL中,纹理是一种可以应用到三角形网格的图像。纹理可以用于创建具有更高细节和更复杂外观的表面效果,而不会增加几何多边形的数量。WebGL中的纹理是由图像数据组成的,可以由图片、视频或其他类型的数据生成。这些数据会被上传到WebGL的图形处理单元中,然后被映射到三角形网格上的每个顶点。当绘制时,WebGL会使用纹理数据插值计算每个像素点的颜色值,从而使表面看起来更加真实。WebGL支持多种纹理类型,包括2D纹理、立方体纹理、3D纹理等。

愚公智库 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android OpenGL ES (八)纹理绘制

基本原理 与渐变色接近,但有些区别: 渐变色:光栅化过程中,计算出颜色值,然后在片段着色器的时候可以直接赋值 纹理:光栅化过程中,计算出当前片段在纹理上的坐标位置,然后在片段着色器的中,根据这个纹理上的坐标,去纹理中取出相应的颜色值。 纹理坐标 OpenGL中,2D纹理也有自己的坐标体系,取值范围在(0,0)到(1,1)内,两个维度分别是S、T,所以一般称为ST纹理坐标。而有些时候也叫UV坐...

android开发笔记 1037

android纹理坐标,Android OpenGL ES 7.1纹理绘制

基本原理与渐变色接近,但有些区别:渐变色:光栅化过程中,计算出颜色值,然后在片段着色器的时候可以直接赋值纹理:光栅化过程中,计算出当前片段在纹理上的坐标位置,然后在片段着色器的中,根据这个纹理上的坐标,去纹理中取出相应的颜色值。纹理坐标OpenGL中,2D纹理也有自己的坐标体系,取值范围在(0,0)到(1,1)内,两个维度分别是S、T,所以一般称为ST纹理坐标。而有些时候也叫UV坐标。纹理坐标方向...

weixin_39890633的博客 385

Real-Time Rendering——6.2.1 Magnification纹理放大(最近邻、双线性过滤(细节纹理、重新映射)、五次曲线,三次插值)

Real-Time Rendering——6.2.1 Magnification放大倍数

m0_37609239的博客 993

OpenGL* 性能提示:相比图像,纹理具有更出色的渲染性能

简介本文讨论了为何使用纹理而非图像可以提升 OpenGL 渲染性能。 为说明这一问题,我们在一款简单的 C++ 应用中轮流使用纹理和图像。 该应用旨在表明使用这两种技术时对渲染性能(每帧毫秒数)的影响。 尽管本文适用于图形游戏开发人员,但这些概念适用于使用 OpenGL 4.3 及更高版本的所有应用。 示例代码用 C ++ 编写,专为 Windows* 8.1 和 10 设备而设计。要求构建和运行...

intel_news的博客 1212

QT核心模块源码解析:图形处理与视觉效果

图形系统架构《QT核心模块源码解析,图形处理与视觉效果》正文——图形系统架构一、前言在现代软件开发中,图形用户界面(GUI)的开发变得越来越重要。QT是一款跨平台的C++图形用户界面应用程序框架,被广泛应用于开发GUI应用程序。QT框架提供了丰富的图形处理和视觉效果功能,使得开发出的应用程序具有更好的用户体验。本书旨在深入解析QT框架的核心模块,帮助读者理解QT的图形处理和视觉效果的实现原理。在本章中,我们将从整体上了解QT的图形系统架构,为后续各章的深入解析打下基础。

QT性能优化QT原理源码QT界面美化 889

Rendy高级技巧:使用Blitter实现高效纹理复制与格式转换

Rendy是基于gfx-hal构建的"构建你自己的引擎"工具包,为开发者提供了强大的图形渲染能力。在图形应用开发中,纹理复制和格式转换是常见的性能瓶颈,而Rendy的Blitter组件正是解决这一问题的高效方案。本文将介绍如何利用Blitter实现纹理的快速复制与格式转换,帮助开发者优化图形应用性能。 ## Blitter组件简介:Rendy高效纹理操作的核心 Blitter是Rendy工厂模

gitblog_00771的博客 918

Android OpenGL ES 7.1纹理绘制

基本原理 与渐变色接近,但有些区别: 渐变色:光栅化过程中,计算出颜色值,然后在片段着色器的时候可以直接赋值 纹理:光栅化过程中,计算出当前片段在纹理上的坐标位置,然后在片段着色器的中,根据这个纹理上的坐标,去纹理中取出相应的颜色值。 纹理坐标 OpenGL中,2D纹理也有自己的坐标体系,取值范围在(0,0)到(1,1)内,两个维度分别是S、T,所以一般称为ST纹理坐标。而有些时候也叫UV坐标。 ...

yiyiyi130的专栏 280

Win32 OpenGL编程(16) 纹理贴图

write by 九天雁翎(JTianLing) -- blog.youkuaiyun.com/vagrxie 讨论新闻组及文件 好久好久没有继续OpenGL了...中间发生了太多事情,比如Objective C及Cocoa的学习, 粗略看了一些游戏引擎的源代码,Google离开了,一个公司可以很有骨气的说走就走,暂时没有办法离开的人,该继续的还是得继续,现在回过神来,还是留...

webcenterol 245

Real-Time Rendering 第六章 texture

在计算机图形学中,纹理化就是使用一些图片,函数或者其它的一些数据,修改表面表现的一个过程 6.1 The Texturing Pipeline 纹理是通过修改shader 中算法中的值,来最终改变渲染结果的 纹理中的像素叫texel,纹理和屏幕上的pixel 区别开来,并没有其它含义 纹理管线的流程是:首先 获取模型上的某一点的位置,这个位置是在模型坐标空间下的,因为随着模型动,纹理也在动,然后经过 projector 方法,获得了纹理坐标(uv坐标,从0-1),这个过程又叫mapping,然后经

qq_37672438的博客 4635

html5 svg 第十章 filters过滤-上拿-理疗-脚底按摩

文章内容均来源于http://commons.oreilly.com/wiki/index.php/SVG_Essentials/Filters 前面的章节已经给你创造伟大的精度和细节传达信息的图形的基础。如果你打算在春季野餐,你想要的精确地图。当你在报纸上的天气预报的图形描述看,你想“只是事实。” 如果你问后来形容天的野餐,没有人希望气象部门统计清脆的朗诵。同样,没有人希望看到一个春天...

家门口种果树,不怕馋 5021
上一篇: 形态学图像处理之细化算法
下一篇: 形态学图像处理之凸壳
暮-成-雪
博客等级 码龄12年 5328粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值