图文详解Unity3D中Material的Tiling和Offset是怎么回事

PPT储存文件发生错误?这些解决方法帮你搞定! PPT储存文件发生错误是一个令人烦恼的问题,但通过检查磁盘空间、文件名和路径、文件锁定状态、关闭后台程序、修复Office安装、使用文件恢复软件、检查系统更新和补丁以及定期备份重要文件等方法,我们可以有效地解决这一问题。希望本文的介绍能帮助你在面对PPT储存错误时更加从容不迫,保护你的工作成果不受损失。 阅读详情

原文地址:http://www.cnblogs.com/bitzhuwei/p/explain-offset-and-tiling-with-Unity-and-3ds.html

Tiling和Offset概述

Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置。

这样说当然是隔靴搔痒。

下面用*.3ds文件作为模型,介绍Tiling和Offset到底是怎么回事。

3DS格式解析

比如我有这样一个tank_player.3ds模型。右侧的'select'处的图片就是贴图。

*.3ds文件最基本的内容包括顶点列表Vertices、贴图坐标列表UVs、面列表Faces。其中Vertices和UVs的数目相等。下面就是用文本描述的tank_player.3ds文件的内容,这是一个树结构,用先序遍历即可将其改写为二进制的3ds文件。这个XML结构就是从二进制的tank_player.3ds分析来的。

复制代码
 1 <_MainChunk Length="8386">
 2   <_CVersion Length="10">3</_CVersion>
 3   <__3DEditorChunk Length="8370">
 4     <_ObjectBlock Length="8364">
 5       <String Length="16">Tank_PlayerMesh</String>
 6       <_TriangularMesh Length="8342">
 7         <_VerticesList Length="3776">
 8           <numVerts Length="2">314</numVerts>
 9           <Vector X="0.7707" Y="52.527" Z="104.4209" Length="12" />
10           <Vector X="6.2672" Y="58.6059" Z="104.4909" Length="12" />
11           …
12           <Vector X="-0.4168" Y="65.2885" Z="104.4949" Length="12" />
13         </_VerticesList>
14         <_MappingCoordinatesList Length="2520">
15           <TexCoordCount Length="2">314</TexCoordCount>
16           <TexCoord u="0.7052" v="0.9314" Length="8" />
17           <TexCoord u="0.7434" v="0.9053" Length="8" />
18           …
19           <TexCoord u="0.7701" v="0.9442" Length="8" />
20         </_MappingCoordinatesList>
21         <_FacesDescription Length="2040">
22           <numIndices Length="2">254</numIndices>
23           <triIndex v1="0" v2="1" v3="2" Length="8" />
24           <triIndex v1="0" v2="2" v3="3" Length="8" />
25           …
26           <triIndex v1="4" v2="5" v3="6" Length="8" />
27         </_FacesDescription>
28       </_TriangularMesh>
29     </_ObjectBlock>
30   </__3DEditorChunk>
31 </_MainChunk>
复制代码

这里面的_VerticesList 是顶点坐标列表,每个Vector都是3D模型中的一个顶点;_MappingCoordinatesList是贴图坐标列表UVs,每个TexCoord都是在贴图上的一个坐标点。FacesDescription则是面列表,由于Vertices和UVs的数目相等,每个triIndex都用索引指定了3个vertex和3个UV。3个vertex就在3D世界画了一个三角形,这些三角形就组成了上图所示的坦克模型。3个UV则在贴图上画了一个三角形。贴图是这样的:

而UVs在贴图上画出的三角形则如下图所示。

可以看到是完全对应的。一个triIndex指定了3D模型的一个三角形平面A,也指定了贴图上的一个三角形平面B,把B贴到A上,就是我们看到的3D模型了。

这么半天都在讲解3DS文件格式,是为了方便下面开始说明Tiling和Offset的用法。

Offset是什么意思

为了简单,我们看下面这个模型。它就是4个三角形拼接成的一个正方形。

此模型的UVs画出来是这样的:

此模型的贴图如下。

Offset这个概念就从这个贴图上开始说。

如下图所示,贴图左下角为原点(0, 0),右上角为(1, 1),画直角坐标系,横轴为X方向的Offset,纵轴为Y方向的Offset。

Offset的作用,就是决定UVs在贴图上的起始位置。

下图所示,是Offset在X和Y轴都为0时的样子。UVs坐标框住了贴图下半块左边的那一部分,那么这部分贴图就会被贴在模型上。

所以你会看到这样的结果。

现在我把Y轴的Offset设置为0.5。意思是UVs的左下角变成了(0, 0.5)。

那么UVs在贴图上的贴合情形就如下图所示了,此时UVs框住了贴图上半边左侧的那块(红色的半圆)。

可以想象现在的模型是什么样子了吧?

Tiling是什么意思

说完Offset,Tiling就好理解了。Offset控制了UVs的起始位置,Tiling则控制了UVs的缩放比例。默认(1, 1)的缩放比例就是原始比例。现在我把Y轴的Tiling改为2。

那么UVs与贴图的贴合情况就成了这样:

贴图还是那个贴图,UVs的纵坐标则都乘以2了。所以最后的模型就会是这样:

总结

Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置。

综合利用Offset和Tiling,就可以做一点有趣的事了。

本文的模型是从坦克舰队里分析转化得到的。我将在另一篇文章里说明转化方法。

Unity中Material的“Tiling" 和 "Offset"参数介绍     Unity粒子系统和3D模型里面会用到Material,而Material需要用到贴图。有些贴图是单张图片组成,有些贴图是由很多张图片组成的图集。如果Material的图片是从图集里面切割出来,就会需要修改Tiling 和 Offset参数。下面做简单的说明。     Tiling的作用是确定一张图片的尺寸     首先把图集图片的横坐标和纵坐标最大值取1,图片的左下角对应坐标系的原点... 阅读详情

相关推荐

unity设置材质偏移量

unity设置材质偏移量。材质偏移量(Material Offset)是一种在游戏开发中常用的技术,它通常用于实现一些特殊效果,比如纹理滚动、水面流动等。材质偏移量是指通过改变材质的UV坐标来实现纹理滚动等效果的方法。在Unity中,每个材质都有一个UV坐标,它用于定位纹理图像中的像素。通过改变材质的UV坐标,可以改变纹理的显示位置,从而实现纹理滚动的效果。具体来说,材质偏移量是指通过改变材质的UV坐标,使纹理像素的显示位置发生偏移,从而实现纹理滚动的效果。

qq_20179331的博客 1685

Unity中Shader 纹理属性 Tilling(缩放度) 和 Offset(偏移度)

Unity中Shader 纹理属性 Tilling(重复度) 和 Offset(偏移度)

楠溪泽岸的博客 6534

Material 的 Tiling 和 Offset

在 Unity 中,新建一个材质,会要求选择使用哪个着色器,默认的是 Diffuse 着色器。确定了着色器后,在材质属性面板中,就会出现该着色器需要用到的一些属性,一般是贴图及对应的属性。

一只程序猿 8642

告别深夜改Bug!CodeGenie帮你快速“驯服”鸿蒙编译错误!

内部测试期间,一位资深工程师感叹:“以前带新人最头疼的就是解决各种编译错误,现在AI能直接帮他们快速定位问题,不仅效率提升,学习曲线也平缓了许多。无论是拼写错误、类型不匹配,还是更隐蔽的语法问题,这些看似简单的错误往往需要花费大量时间排查。最重要的是,如果第一次修复后编译仍未通过,系统会自动提取新的报错信息,继续分析修复,直到完全通过为止。更让人崩溃的是,有些报错信息含糊其辞,你明明知道问题大概出在哪几行代码,却像大海捞针一样找不到具体位置。毕竟,你的时间应该花在创造性的编码上,而不是无尽的调试中。

【HarmonyOS开发者社区】官方小助手 479

Laya小游戏开发,laya3D美术篇——1——关于laya自带的几个shader的基础运用讲解。

用laya材质,还原app中的光照效果,以及laya几种shader的讲解与使用。

qq_37576129的博客 3644

Unity之ShaderGraph如何模拟水波实现顶点波动

今天我们实现类似水波纹的顶点波动效果。

TxNet 1444

AI如何帮你快速解决npm err! cb() never called!错误

不过现在有了AI辅助开发工具,解决问题变得轻松多了。上测试这个方案时,最惊喜的是它的响应速度。传统方式可能需要半小时的排查,AI工具通常在几秒内就能定位问题根源。而且平台的一键部署功能让分享解决方案变得特别简单 - 只需点击按钮就能将诊断工具部署为在线服务,团队其他成员随时可以使用。不再需要反复搜索论坛或尝试各种可能的修复命令,AI提供的精准建议让调试过程变得直观高效。这个错误的核心原因是npm在安装依赖时,某些异步操作没有正确完成回调。以往遇到这种问题,开发者需要像侦探一样逐一排查可能的原因,效率很低。

SilvermistFalcon19的博客 928

Qwen2.5-7B大模型实战:从零部署到高效推理全流程解析

本文详细解析了Qwen2.5-7B大模型从零部署到高效推理的全流程。内容涵盖环境准备、模型下载、使用Transformers进行核心对话推理,并深入介绍了vLLM与TGI生产级服务部署、GPTQ/AWQ量化技术以降低显存消耗,以及llama.cpp、Ollama等本地推理方案。旨在帮助开发者快速掌握部署技巧,实现大模型在消费级硬件上的高效运行。

weixin_29061425的博客 490

c++ 格式错误_【干货】帮你避坑!少出bug !我们帮你整理了17种C语言常犯错误...

相信这么努力的你 已经星标了我老九学堂 你身边的IT导师C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”。但由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,大雄通过对C的学习,积累了一些C编程时常犯的错误,写给各位小伙伴...

weixin_39956451的博客 463

基于74LS175的四人抢答电路设计(含详细设计分析及试错过程)

根据设计要求不难发现,只要有一人抢答,就会输出信号使指示灯常亮,此时其他人输入无效,适宜选择触发器,有人抢答时触发器输出由0变1,输出信号控制指示灯常亮,同时使CLR引脚输入0,触发器不工作,即其他选手不能再抢答。尝试加入一人抢答后其他人不可抢答功能,如下图,175四个~Q输出端接入同一个与非门,于是当有选手抢答时该与非门输出由0变1,将该信号输入U5A,U5A输出由1变0,接入~CLR即可使电路不再工作。但仿真时发现,该复位键仅可使抢答电路部分复位,计数部分只是暂停,并未复位。否则元器件将无法正常工作。

2202_75463653的博客 8188

Oracle EBS与SAP数据数据切换至迁移华为MetaERP分析

Oracle EBS到华为MetaERP的数据迁移可采用“表对表复制”思路,因其模块化设计下数据模型标准化、边界清晰。核心业务对象存储在结构明确的主表中,与MetaERP模型兼容度高,便于直接映射。而SAP到MetaERP的迁移则因SAP高度优化的复杂表结构(如簇表/池表)、数据分散冗余、深度依赖配置等特点,无法简单复制,必须采用基于业务对象的迁移方法,通过视图/BAPI提取数据并进行深度转换。两种迁移的本质差异源于源系统的数据模型设计理念不同。

金牌架构师 1378

Python新手最容易犯的4个错误,我来帮你避免!

python语言里面有一些小的坑,特别容易弄混弄错,初学者若不注意的话,很容易坑进去,下面我给大家深入解析一些这几个坑,希望对初学者有所帮助. 1.i+=1 不等于++i 初学者对Python语言不是特别了解的话,又正好有c++,java的语言背景,很容易把++i和i+=1弄混 先来看一个小例子: i=0 mylist=[1,2,3,4,5,6] while i <len(myl...

DLQFHL的博客 337

UG\NX二次开发 找不到指定的dlx文件(Specified Dlx file not found)

有群友问:用Ctrl+U运行的时候就报错,找不到指定的dlx文件Specified Dlx file not found。怎么处理。

王牌飞行员_里海的博客 1129

unity material之tiling和offset属性

在Unity中,使用材质或者着色器是通过创建一个材质来实现的,新建一个材质,会要求选择使用哪个着色器,默认的是Diffuse着色器。确定了着色器后,在材质属性面板中就会出现该着色器需要用到的一些属性,一般是贴图及对应的属性。 材质中贴图均有tiling和offset两个属性,它们用来定义当前材质球所使用的贴图区域( 直接将贴图贴到平面上一般会出现X和Y坐标倒置的问题,这个时候可以将ti

小柯的博客 3万+

移动端HDR

移动HDR是近年来移动设备最大的技术进步之一。自2017年起,它就开始出现在旗舰手机上,包括苹果(Apple)和三星(Samsung)在内的大多数制造商都加入了这一行列。这一趋势在过去几年里席卷了整个电视行业,但在最近几年才真正深入人心。而且,最近,将更多的HDR内容放到移动设备上的趋势已经加快。对于这种新兴技术来说,它还处于相对早期的阶段,但它也非常有趣,值得关注。 HDR是什么? HDR是...

ISP行业的忠实粉丝 1340

YOLO26改进策略【多YAML融合】| UNetV2 + BiFormer + WIoU

Wise-IoU是一种基于IoU的损失函数,旨在解决目标检测中边界框回归损失函数在处理低质量训练数据时的问题。

Limiiiing的博客 218

unity Material之tilling和offset属性

一:二者概念 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置。 在Unity中,使用材质或者着色器是通过一个材质来实现的,新建一个材质,会要求使用哪个着色器 默认的是Diffuse着色器。确定了着色器后,在材质属性面板中就会出现该着色器需要用到的一些属性,一般是贴图及对应的属性。 材质中贴图均有tiling和offset两个属性,它们用来

flyfish0113的博客 3440

Microsemi Libero系列教程(六)——Identify片上逻辑分析仪的使用

文章目录FPGA如何进行在线调试关于Microsemi片上逻辑分析仪FPGA片上逻辑分析仪原理预期效果0.准备一个创建好的Libero工程1.新建identify工程,并添加想要监测的信号2.管脚分配,编译下载3.设置触发类型4.IICE逻辑分析仪核资源占用 系列教程:Microsemi Libero系列教程 FPGA如何进行在线调试 对于嵌入式系统来说,如单片机,进行硬件级程序调试时,通常采用的是JLink/ST-Link调试器,在线调试的方式来获取程序实时运行的状态,可以观察程序运行流程、各种变量的值

whik1194的博客 1万+

自由学习记录(48)

_WorldSpaceLightPos0 为什么能在 Shader 里直接用? 不是“另一个 Shader 文件里写了它”,而是 Unity 在每次渲染物体时自动传给 GPU 的内置变量,属于 全局 uniform(uniform buffer)的一部分。 所以它“不是你写在哪个 Shader 文件里就能用的变量”,而是: Unity 的内置渲染系统(在 C++ 层)定义了这个名字,并负责 在渲染每个物体前自动设置这个值 所以你在任意 Shader 中写: uniform float4 _WorldSpac

red_redemption的博客 1267

PCL 改进的RANSAC算法实现点云粗配准【2024最新版】

一种改进的RANSAC点云粗配准算法,具体改进见论文:“Pose Estimation using Local Structure-Specific Shape and Appearance Context”

点云侠的博客 37万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ShaderGraph节点解析(173):平铺与偏移节点(Tiling And Offset Node)详解

本文详解Unity ShaderGraph中的平铺与偏移节点(TilingAndOffsetNode)的功能和应用。该节点通过UV*Tiling+Offset的简单运算,实现对纹理的平铺(控制重复次数)和偏移(调整起始位置)处理。主要应用于三种场景:地面/墙面等大尺寸模型的细节贴图平铺、水波/传送带等动态滚动纹理效果,以及模型UV偏移校正。文中详细解析了各端口参数、数学原理,并提供了具体实现代码示例。该节点计算简单高效,是纹理处理的必备工具,合理运用可显著提升纹理表现效果。

分享知识,拥抱变化 1441

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Unity | Shader基础知识(第十集:shader常用外部资产单词速成)

Unity | Shader基础知识(第十集:shader常用外部资产单词速成)汇总了一些常用单词,另外讲解了tiling和offset的意思。

菌菌兹的博客 2089

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

unity 动态修改material offset偏移量

【代码】unity 动态修改material offset偏移量。

qq_42986916的博客 1555

Material的Tilling跟Offset

本博文将跟大家讲解一下Material的Tilling与Offset的用法解释新建场景,导入一张序列帧图,并创建Material,创建Quad并将Material赋值给它序列帧图: Material的设置: 据本人理解,其中的Tilling就是原图的缩放量,当Tilling的x跟y都为1且Offset的x跟y都为0的时候就等于显示整幅图,所在在场景可以看到的效果图为: 实际显示范围(绿色边框范

Poison_zZJ的博客 1710

Unity Tiling和offset的使用

offset是显示框的偏移量 Tiling是显示框的缩放量

Michael的专栏 5052
上一篇: Unity Shader入门介绍
下一篇: C#中的is和as操作符
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值